高級語言c程序設(shè)計(jì)_第1頁
高級語言c程序設(shè)計(jì)_第2頁
高級語言c程序設(shè)計(jì)_第3頁
高級語言c程序設(shè)計(jì)_第4頁
高級語言c程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、1/23思考題解答思考題解答 1.什么是地址,什么是地址中的內(nèi)容,兩者的什么是地址,什么是地址中的內(nèi)容,兩者的 區(qū)別是什么?區(qū)別是什么?p136n42000p2000例:例:int n=4,*p; p=&n;變量的屬性變量的屬性:內(nèi)容和地址內(nèi)容和地址2/312.嘗試建立嘗試建立1個個2維數(shù)組并畫出該數(shù)組在內(nèi)存維數(shù)組并畫出該數(shù)組在內(nèi)存 中的存儲狀態(tài)圖。中的存儲狀態(tài)圖。p140例:例:int a23;a00a01a02a03a103/313.什么是指針?地址和指針有什么樣的關(guān)系?什么是指針?地址和指針有什么樣的關(guān)系?p139*=;初值初值:可缺省??梢允窃擃愋偷哪匙兞康牡刂房扇笔 ?梢允窃擃愋偷哪?/p>

2、變量的地址4/314.指針的值和類型是怎樣規(guī)定的?它有哪些運(yùn)指針的值和類型是怎樣規(guī)定的?它有哪些運(yùn) 算?算?p139-140*=;類型名類型名-基本類型名及派生類型名,用戶定義的類、枚基本類型名及派生類型名,用戶定義的類、枚 舉類型、結(jié)構(gòu)類型、聯(lián)合類型名舉類型、結(jié)構(gòu)類型、聯(lián)合類型名初值初值可缺省??梢允窃擃愋偷哪匙兞康牡刂房扇笔 ?梢允窃擃愋偷哪匙兞康牡刂愤\(yùn)算:取地址運(yùn)算運(yùn)算:取地址運(yùn)算&和取內(nèi)容運(yùn)算和取內(nèi)容運(yùn)算*; 數(shù)組指針的算術(shù)運(yùn)算;數(shù)組指針的算術(shù)運(yùn)算; 指針的關(guān)系運(yùn)算;指針的關(guān)系運(yùn)算; 指針的賦值運(yùn)算。指針的賦值運(yùn)算。5/315.用指針可有幾種表示數(shù)組元素的方法,試簡用指針可有幾種表示數(shù)

3、組元素的方法,試簡 述述3種方法的使用方法。種方法的使用方法。p142指向數(shù)組指向數(shù)組元素元素的指針的指針指向數(shù)組的指針指向數(shù)組的指針指針數(shù)組指針數(shù)組6/316.簡述指針和數(shù)組的關(guān)系。簡述指針和數(shù)組的關(guān)系。p1427/317.指針有哪些運(yùn)算?和普通的數(shù)據(jù)類型的運(yùn)指針有哪些運(yùn)算?和普通的數(shù)據(jù)類型的運(yùn) 算有什么不同?算有什么不同?p139-140運(yùn)算:取地址運(yùn)算運(yùn)算:取地址運(yùn)算&和取內(nèi)容運(yùn)算和取內(nèi)容運(yùn)算*; 數(shù)組指針的算術(shù)運(yùn)算;數(shù)組指針的算術(shù)運(yùn)算; 指針的關(guān)系運(yùn)算;指針的關(guān)系運(yùn)算; 指針的賦值運(yùn)算。指針的賦值運(yùn)算。8/318.&和和*的用法各有幾種?它們的使用方法是的用法各有幾種?它們的使用方法是

4、 什么?什么?p140&:取地址運(yùn)算;:取地址運(yùn)算; *:指針:指針/取內(nèi)容運(yùn)算。取內(nèi)容運(yùn)算。9/319.試述函數(shù)指針的用法。在計(jì)算機(jī)上實(shí)現(xiàn)試述函數(shù)指針的用法。在計(jì)算機(jī)上實(shí)現(xiàn) simpson函數(shù)。函數(shù)。p147-14810/3110.試述指針在函數(shù)的參數(shù)傳遞中的作用及其試述指針在函數(shù)的參數(shù)傳遞中的作用及其 使用方法。使用方法。p146指針作函數(shù)參數(shù)指針作函數(shù)參數(shù)-函數(shù)的參數(shù)函數(shù)的參數(shù)(引用型參數(shù)除外引用型參數(shù)除外)在調(diào)用過程在調(diào)用過程 中,實(shí)參中,實(shí)參(表達(dá)式表達(dá)式)的值的值僅在調(diào)用中有意義僅在調(diào)用中有意義 的形參,參加函數(shù)體的運(yùn)算。難以實(shí)現(xiàn)相的形參,參加函數(shù)體的運(yùn)算。難以實(shí)現(xiàn)相 對于函數(shù)的外

5、部的對于函數(shù)的外部的“全局全局”變量作某些處理。變量作某些處理。11/3111.簡述指針和函數(shù)的關(guān)系。簡述指針和函數(shù)的關(guān)系。p146函數(shù)返回指針函數(shù)返回指針-指針型函數(shù)指針型函數(shù):返回值為指針的函數(shù),返回類返回值為指針的函數(shù),返回類 型的說明應(yīng)指明指針的對象類型后加型的說明應(yīng)指明指針的對象類型后加*。函數(shù)指針函數(shù)指針-函數(shù)的地址也可作指針的值,使函數(shù)作為函數(shù)的地址也可作指針的值,使函數(shù)作為 參數(shù)參數(shù)指針作函數(shù)參數(shù)指針作函數(shù)參數(shù)-函數(shù)的參數(shù)函數(shù)的參數(shù)(引用型參數(shù)除外引用型參數(shù)除外)在調(diào)用過程在調(diào)用過程 中,實(shí)參中,實(shí)參(表達(dá)式表達(dá)式)的值的值僅在調(diào)用中有意義僅在調(diào)用中有意義 的形參,參加函數(shù)體的

6、運(yùn)算。難以實(shí)現(xiàn)相的形參,參加函數(shù)體的運(yùn)算。難以實(shí)現(xiàn)相 對于函數(shù)的外部的對于函數(shù)的外部的“全局全局”變量作某些處理。變量作某些處理。12/3112.怎樣使用動態(tài)分配運(yùn)算符對指針變量進(jìn)行怎樣使用動態(tài)分配運(yùn)算符對指針變量進(jìn)行 動態(tài)分配?動態(tài)分配?p148new-動態(tài)數(shù)據(jù)生成動態(tài)數(shù)據(jù)生成 生成生成1個無名的動態(tài)變量,返回個無名的動態(tài)變量,返回1個該類型個該類型的指針值,程序中利用指針對該變量操作;的指針值,程序中利用指針對該變量操作;newnewsize /數(shù)組數(shù)組new()13/3112.怎樣使用動態(tài)分配運(yùn)算符對指針變量進(jìn)行怎樣使用動態(tài)分配運(yùn)算符對指針變量進(jìn)行 動態(tài)分配?動態(tài)分配?p148delet

7、edelete delete-動態(tài)數(shù)據(jù)釋放動態(tài)數(shù)據(jù)釋放 釋放釋放/撤消撤消new生成的動態(tài)變量。生成的動態(tài)變量。14/3113.什么是引用?什么是引用?p150,引用和指針的區(qū)別是,引用和指針的區(qū)別是 什么?什么?p151&=;指針:對象變量的指針:對象變量的地址地址,表示對象變量時,表示對象變量時, 用用*;*=;引用變量:已定義的變量的引用變量:已定義的變量的別名別名,表示對象,表示對象 變量時,直接代表。變量時,直接代表。15/3114.引用性參數(shù)具有哪些優(yōu)點(diǎn)?引用性參數(shù)具有哪些優(yōu)點(diǎn)?p152(1)函數(shù)外的變量以別名形式引入到函數(shù)體內(nèi)參函數(shù)外的變量以別名形式引入到函數(shù)體內(nèi)參 加運(yùn)算;加運(yùn)

8、算;(2)不必在調(diào)用時創(chuàng)建與實(shí)參變量不必在調(diào)用時創(chuàng)建與實(shí)參變量/對象對應(yīng)的值對象對應(yīng)的值 參數(shù)變量,當(dāng)實(shí)參變量參數(shù)變量,當(dāng)實(shí)參變量/對象占用內(nèi)存較多時,對象占用內(nèi)存較多時, 節(jié)省內(nèi)存;節(jié)省內(nèi)存;(3) 指針可以改變內(nèi)容,任意賦值,不如引用參指針可以改變內(nèi)容,任意賦值,不如引用參 數(shù)安全。數(shù)安全。16/3115.簡述指針在簡述指針在c+語言中的重要性和它在程語言中的重要性和它在程 序安全方面的負(fù)面影響。序安全方面的負(fù)面影響。p138-15317/3116.嘗試將嘗試將6.1節(jié)中選擇排序的程序改造為從節(jié)中選擇排序的程序改造為從 小到大的排列順序。小到大的排列順序。p136#include#incl

9、ude void ssort(float*,int);void main(void)const int n=500;int i;float listn,*pf; /listi=*(list+i)for(i=0;in;i+) listi=rand();pf=&list0; /&list0= list= list首地址首地址ssort(pf,n); /= ssort(list,n)18/31void swapl(float *a,float *b) float temp; temp=*a; *a=*b; *b=temp;void ssort(float *a,int m)/對對m個浮點(diǎn)數(shù)組排序個浮

10、點(diǎn)數(shù)組排序 int i,j,index; float elem; for(i=0;im-1;i+) elem=*(a+i); /*(a+i)=ai index=i; for(j=i+1;jm;j+) if(*(a+j)elem) elem=*(a+j); index=j; swapl(a+i,a+index); 19/31練習(xí)題解答練習(xí)題解答1.說明下面定義的指針的含義。說明下面定義的指針的含義。 float *pf; / pf:未賦初值的未賦初值的float型的指針變量型的指針變量 double *pd23; /pd:2維的維的double型的指針數(shù)組型的指針數(shù)組 int(*pi)2; /指

11、向指向int型型1維數(shù)組的指針維數(shù)組的指針 p142 char *ch=“abcde”; /ch:字符串指針字符串指針=a存儲地址存儲地址 char *name=“tom”,”john”,”lennis”; /name:字符串指針數(shù)組字符串指針數(shù)組 p14520/312.讀下面的代碼并完成要求的問題。讀下面的代碼并完成要求的問題。 已知程序的第已知程序的第1行輸出數(shù)據(jù)是行輸出數(shù)據(jù)是65fdf4,請判斷下,請判斷下 面的面的4行上出哪些可以確定其輸入值,請寫出哪行上出哪些可以確定其輸入值,請寫出哪 些可以判斷的值。些可以判斷的值。p140#include “stdio.h”main()int t

12、mp=10;int *p=&tmp;int *q=p;printf(“%xn”,q); /65fdf4printf(“%dn”,*p); /10printf(“%xn”,&tmp); /65fdf4printf(“%xn”,&p); /65fdf4-4=65fdf0 vc中,中,int占占4bprintf(“%xn”,p); /65fdf4tmp10p q&tmp21/313.下面語句聲明的是什么?下面語句聲明的是什么?p143 double *ara46; a.雙精度浮點(diǎn)型數(shù)組雙精度浮點(diǎn)型數(shù)組 b.雙精度浮點(diǎn)型指針數(shù)組雙精度浮點(diǎn)型指針數(shù)組 c.非法的聲明非法的聲明22/314.設(shè)有以下的語句

13、:設(shè)有以下的語句: int a10=0,1,2,3,4,; int *p=a; 請指出以下的對請指出以下的對a數(shù)組元素的正確引用是哪些?數(shù)組元素的正確引用是哪些? 并指出其值是什么。并指出其值是什么。p1422p-a; /p2; /=*(p+2)=2*(*(a+1); /*(&a3); /301234023/315.編制函數(shù)編制函數(shù)char *findplace(char *str,char c);該函該函 數(shù)返回字符串?dāng)?shù)返回字符串str中第中第1次出現(xiàn)字符次出現(xiàn)字符c的位置以后的的位置以后的 字符串。若沒有字符串。若沒有c字符則返回字符則返回1個空字符串。個空字符串。#include#inc

14、ludechar *findplace(char *str,char c);main()char a15=this is a dog.;char charc,*p;int i;cout字符串:字符串:;for(i=0;i14;i+)coutai;coutendlcharc;24/31coutendl查找到的字符串:查找到的字符串:;p=findplace(a,charc);if(p!=null) for(i=0;istrlen(p);i+) cout*(p+i);char *findplace(char *str,char c)int i; bool flag; flag=false; for

15、(i=0;istrlen(str);i+) if (*(str+i)=c) flag=true; return (str+i+1); break; if (flag=false) return (null);25/31執(zhí)行結(jié)果執(zhí)行結(jié)果26/316.完成下面的一段程序,使該程序能夠輸出指定完成下面的一段程序,使該程序能夠輸出指定 的的2維數(shù)組任意行任意列元素的值。維數(shù)組任意行任意列元素的值。p142main()static int a33=1,2,3,4,5,6,7,8,9;int (*p)3,i,j;p=a;scanf(“i=%d”,&i,&j);printf(“a%d,%d=%dn”,i,j

16、,_);請?jiān)诳崭裉幪钊氪a,使得運(yùn)行情況可以達(dá)到請?jiān)诳崭裉幪钊氪a,使得運(yùn)行情況可以達(dá)到如下效果:如下效果:i=0,j=0 a0,0=1aij/*(p)027/317.已知如下的結(jié)構(gòu):已知如下的結(jié)構(gòu): static char *name=“tom”,”john”,”follow me” 試編寫試編寫1個程序來輸出這個數(shù)組中的數(shù)據(jù),輸出效個程序來輸出這個數(shù)組中的數(shù)據(jù),輸出效 果如下:果如下:tom john follow me p145#include #include main()int i;static char *name=tom,john,follow me;for(i=0;i3;i+)

17、 printf(%sn,namei);28/31執(zhí)行結(jié)果執(zhí)行結(jié)果29/318.仔細(xì)檢查以下的代碼,完成題目。仔細(xì)檢查以下的代碼,完成題目。p149#include void main(void)int *p;p=new int;*p=10;cout“int value is:”*p;delete p;請指出程序的輸出。請指出程序的輸出。30/318.仔細(xì)檢查以下的代碼,完成題目。仔細(xì)檢查以下的代碼,完成題目。p149 #include void main(void)int *p;p=new int;*p=10;cout“int value is:”*p;delete p;詳細(xì)描述這段程序在內(nèi)存

18、中執(zhí)行時的變化情況。詳細(xì)描述這段程序在內(nèi)存中執(zhí)行時的變化情況。10p31/318.仔細(xì)檢查以下的代碼,完成題目。仔細(xì)檢查以下的代碼,完成題目。p149 #include #include0 void main(void)1 int *p;2 p=new int;3 *p=10;4 cout“int value is:”*p;delete p;printf(“%xn”,&p);回答下列問題:在程序的第回答下列問題:在程序的第3行執(zhí)行后,行執(zhí)行后,p中的中的數(shù)據(jù)是什么?數(shù)據(jù)是什么?*p的值是什么?在程序的第的值是什么?在程序的第4行行執(zhí)行后,執(zhí)行后,p中的數(shù)據(jù)是什么?中的數(shù)據(jù)是什么?*p的值是什么

19、?的值是什么?若在若在delete p;后還有輸出后還有輸出&p的的printf(“%xn”,&p),這條語句是這條語句是否否意義?意義?10p32/319.編寫求編寫求3*4階矩陣和其自身轉(zhuǎn)置矩陣的乘積的程階矩陣和其自身轉(zhuǎn)置矩陣的乘積的程 序,自定義結(jié)構(gòu)。要求具有比較好的模塊化功能。序,自定義結(jié)構(gòu)。要求具有比較好的模塊化功能。 完成上述題目后,嘗試編制可以允許用戶自己輸完成上述題目后,嘗試編制可以允許用戶自己輸 入矩陣的階數(shù)的矩陣乘積程序。入矩陣的階數(shù)的矩陣乘積程序。33/31#includemain()int i,j,k;int a34=1,2,3,4,9,8,7,6,-10,10,-5,

20、2;int b43,c33; /轉(zhuǎn)置矩陣,積轉(zhuǎn)置矩陣,積for(i=0;i=2;i+) /行行 for(j=0;j=3;j+) /列列 bji=aij; /求乘積求乘積for(i=0;i=2;i+) for(k=0;k=3;k+) for(j=0;j=3 & j=i;j+) cij+=aik*bkj;34/3110.設(shè)計(jì)設(shè)計(jì)1種數(shù)據(jù)結(jié)構(gòu),編寫個函數(shù)種數(shù)據(jù)結(jié)構(gòu),編寫個函數(shù)imalloc(n),當(dāng),當(dāng) 用戶輸入用戶輸入1個個n后,可以在內(nèi)存中為用戶分配后,可以在內(nèi)存中為用戶分配n個個 字節(jié)的空間,并將內(nèi)存空間的首地址的指針返字節(jié)的空間,并將內(nèi)存空間的首地址的指針返 回給用戶。編制函數(shù)回給用戶。編制

21、函數(shù)imfree()來釋放這些內(nèi)存來釋放這些內(nèi)存 空間。(提示:可參考空間。(提示:可參考11題的結(jié)構(gòu))題的結(jié)構(gòu))#includestruct stringnode *imalloc(int n);imfree(struct stringnode *inode);struct stringnodechar m_char;struct stringnode *next;35/31main()int n;struct stringnode *p;p=imalloc(n);imfree;struct stringnode *imalloc(int n)int i; struct stringnode

22、 *node; node=null; for(i=1;inext=new (struct stringnode); return node;36/31imfree(struct stringnode *inode)int i; struct stringnode *node,*tmp; node=inode; tmp=node-next; while(tmp!=null) node=node-next-next; delete tmp; tmp=node-next; delete node;37/3111.有如下定義的結(jié)構(gòu):有如下定義的結(jié)構(gòu):struct stringnodechar m_char;stringnode *next; 試?yán)眠@種結(jié)構(gòu)存儲字符串,并編制函數(shù)試?yán)眠@種結(jié)構(gòu)存儲字符串,并編制函數(shù) searchmax在這個字符串中

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論