版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、. 習(xí)題6參考解答 1請解釋以下術(shù)語的含義:地址 指針 指針變量 直接訪問 間接訪問解:(1)地址:內(nèi)存單元的編號叫做地址。(2)指針:內(nèi)存單元的編號叫做地址,通常也叫做指針。(3)指針變量:在語言中,允許用一個變量來存放指針,這種變量稱為指針變量。(4)直接訪問:通過變量名稱引用變量內(nèi)存單元的方式稱為直接訪問。(5)間接訪問:利用了指針變量,通過變量的指針(即變量的內(nèi)存地址)來引用內(nèi)存單元的值,這種方式稱為間接訪問。2指針能參與哪幾種運(yùn)算?舉例說明。解:(1)指針變量和整數(shù)可以進(jìn)行加/減運(yùn)算:p+、p-、p+i、p-i、p+=i、p-=i (2)指針變量可進(jìn)行賦值運(yùn)算:p=&a; 變量a的地
2、址賦給p,即指針p指向ap=array; 數(shù)組array首地址賦給pp=&arrayi; 數(shù)組元素arrayi的地址賦給pp=max; 函數(shù)max的入口地址賦給pp1=p2; 指針p2的值賦給指針p1,即p1、p2所指的數(shù)據(jù)相同 (3)同類指針變量在一定的條件下可以作相減運(yùn)算: p-q (4)同類指針變量在一定的條件下可以作比較運(yùn)算: pq 3判斷下面兩個程序的正誤,若錯誤指出原因。(1)#includeint main() char *p;精品.p=data;printf(%sn,*p);return 0;解:該程序錯。應(yīng)為:printf(%sn,p);(2)#includeint main
3、() int *p;*p=25;printf(%d,*p);return 0;解:該程序錯。指針變量沒有賦初值。4輸入3個整數(shù),輸出其中最大數(shù)。要求用指針變量實現(xiàn)。解:#includestdio.hint main()int a=0,b=0,c=0;int*aa=null,*bb=null,*cc=null,*p=null;aa=&a,bb=&b,cc=&c;printf(input 3 number:);scanf(%d %d %d,&a,&b,&c);printf(a=%d b=%d c=%dn,a,b,c); p=aa;if(*p*bb) p=bb;精品.if(*p*cc) p=cc;p
4、rintf(%dn,*p);return 0; 程序運(yùn)行情況如下:input 3 number:4 5 9a=4 b=5 c=995有3個整型變量i,j,k。請編寫一個程序,設(shè)置3個指針變量p1,p2,p3,分別指向i,j,k,然后通過指針變量使i,j,k 3個變量的值順序交換,即原來i的值賦給j,把j的原值賦給k,把k的原值賦給i。i,j,k的原值由鍵盤輸入,要求輸出i,j,k的原值和新值。解:#include int main() int i,j,k,tmp; int *p1,*p2,*p3; scanf(%d%d%d,&i,&j,&k); printf(before change:%dt
5、%dt%dn,i,j,k); p1 = &i; p2 = &j; p3 = &k; tmp=*p3; *p3=*p2; *p2=*p1; *p1=tmp; printf(after change:%dt%dt%dn,i,j,k); return 0; 精品. 程序運(yùn)行情況如下:1 2 3before change:123after change:3 1 26輸入一個10個元素的一維數(shù)組,在主函數(shù)中用scanf函數(shù)輸入。用指針方式編程找出最大和最小數(shù),并指出最大數(shù)和最小數(shù)的位置。解:int y_max(int *p,int n) int max=*p,i,k=0; for(i=0;in;i+)
6、/*這里判斷到in,而不是i=n*/if(max*(p+i) k=i;max=*(p+i); /*記得要在這里更新一下max的記錄*/ return k; #define n 10 #include int main() int an;int i,m,max; for(i=0;in;i+) scanf(%d,&ai); 精品.for(i=0;in;i+) printf(%d ,ai); m=y_max(a,n); printf(nmax=a%d=%d,m,am); return 0; 程序運(yùn)行情況如下:1 5 6 78 9 6 4 7 2 31 5 6 78 9 6 4 7 2 3max=a3
7、=787輸入一段文字,統(tǒng)計其中所包含的數(shù)字字符和字母字符個數(shù)。解:#include#include#include#define n 80int cnum=0,dnum=0; /*全局變量用于在兩個函數(shù)之間傳遞數(shù)據(jù)*/int main()char chn;void count(char c);int i,n;gets(ch);n=strlen(ch);for(i=0;i=0&c=a&c=a&c=z) cnum+;return 0; 程序運(yùn)行情況如下:hello123455,58請寫出下列程序段的輸出結(jié)果。(1)#include int main()int a=1,2,3,4,5,6,*p;p=
8、a;*(p+3)+=2;printf(%d,%d,*p,*(p+3);return 0; 解: 1,6(2)#include int main() int a=1,2,3,4,5,6; int *p; p=a; printf(%5d%5d%5d%5dn,*p,*(+p),*+p,*(p-);精品. printf(%5d%5dn,*p,*(a+2);return 0; 解: 3 3 2 1 2 3(3)#include #includeint main() char *s1=abdeg; char *s2=abdeg; s1+=2;s2+=2; printf(%dn,strcmp(s1,s2);
9、 return 0; 解:-1 (4)#include #include fun(char *w,int n) char t,*s1,*s2; s1=w;s2=w+n-1; while(s1s2) t=*s1; *s1=*s2; *s2=t;精品. s1+; s2-; int main() char p=1234567; fun(p,strlen(p); puts(p); return 0; 解: 7654321(5)#include int main() char *a=pascal,c language,dbase,coble; char (*p); int j; p=a+3; for(j
10、=3;j=0;j-) printf(%sn,*(p-); return 0; 解: coble dbase c language pascal精品.9用一個函數(shù)實現(xiàn)兩個字符串的比較,即自己寫一個strcmp函數(shù): strcmp(s1,s2)如果s1=s2,則函數(shù)返回值為0;如果s1!=s2,返回它們兩者第一個不同字符的ascii碼差值(如“boy”與“bad”,第二個字符不同,“o”與“a”之差為79-65=14);如果s1s2,則輸出正值,如果s1s2,則輸出負(fù)值。兩個字符串s1,s2由main函數(shù)輸入,strcmp函數(shù)的返回值也在main函數(shù)中輸出。解:#includeint strcmp
11、(char *s1,char *s2)for(;*s1=*s2&*s1&*s2;s1+,s2+); /* 找不同的字符 */return (*s1-*s2);void main()char a10,b10;gets(a);gets(b);printf(%dn,strcmp(a,b);程序運(yùn)行結(jié)果如下:helloworld-1510設(shè)計一個程序,管理一個班的計算機(jī)成績,要求采用一維數(shù)組來存儲學(xué)生的成績。解: #include int main(void)精品. float a10;int i=0;double sum = 0.0; float avg = 0.0; for(i=0;i10;i+)
12、 printf(請輸入第%d個同學(xué)的成績:,i+1); scanf(%f,&ai); printf(n); sum+=ai; avg = sum/10.0; printf(%fn,avg); return 0; 程序運(yùn)行結(jié)果如下:請輸入第1個同學(xué)的成績:85請輸入第2個同學(xué)的成績:89請輸入第3個同學(xué)的成績:90請輸入第4個同學(xué)的成績:78請輸入第5個同學(xué)的成績:69請輸入第6個同學(xué)的成績:58請輸入第7個同學(xué)的成績:78請輸入第8個同學(xué)的成績:95請輸入第9個同學(xué)的成績:100請輸入第10個同學(xué)的成績:8983.10000011輸入10個整數(shù),將其中最小的數(shù)與第一個數(shù)對換,把最大的數(shù)與最后一
13、個數(shù)對換,用指針來實現(xiàn)。精品.解:#include void aa(int *array)int i;for(i=0;i10;i+)scanf(%d,&arrayi);void bb(int *array)int *max,*min,t;int *p;max=min=array;for(p=array;p=array+9;p+)if(*max*p) min=p;t=*max;*max=array9;array9=t;t=*min;*min=array0;array0=t;void cc(int *array)int *p;for(p=array;p=array+9;p+)printf(%d,*p);void main()精品.int number10;aa(number);bb(number);cc(number);程序運(yùn)行結(jié)果如下:0 -9 10 20 30 40 50 60 70 66 -9,0,10,20,30,40,50,60,66,7012分析下列程序的運(yùn)行結(jié)果。 #include int f1(int x) return x+1;int f2(int x) return x-1
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 異黃樟素生物合成機(jī)制-洞察分析
- 元宇宙的區(qū)塊鏈技術(shù)應(yīng)用-洞察分析
- 《熔體破裂現(xiàn)象》課件
- 性激素與子宮內(nèi)膜異位癥-洞察分析
- 疫情期間的健康防護(hù)-洞察分析
- 辦公環(huán)境下的食品安全培訓(xùn)課程設(shè)計
- 玩具設(shè)計師職責(zé)描述
- 內(nèi)容創(chuàng)新推動下的教育現(xiàn)代化進(jìn)程
- 健康教育課程的設(shè)計與實踐應(yīng)用研究
- 2025購銷合同解除協(xié)議書
- 工業(yè)循環(huán)水處理行業(yè)市場調(diào)研分析報告
- 2025公司集團(tuán)蛇年新春年會游園(靈蛇舞動共創(chuàng)輝煌主題)活動策劃方案-31P
- 2024年高考?xì)v史必修部分重點必考知識點總結(jié)(經(jīng)典版)
- 《計算機(jī)視覺》教學(xué)課件-第08章1-神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)1
- 職業(yè)衛(wèi)生技術(shù)服務(wù)機(jī)構(gòu)檢測人員考試真題題庫
- 人教版2024年小學(xué)二年級上學(xué)期語文期末考試往年真題
- 安全月度例會匯報材料模板
- 大國兵器學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 2024年無子女離婚協(xié)議書范文百度網(wǎng)盤
- UNIT 4 Section Ⅳ Lesson 3 My Favourite Comedian 學(xué)案 高中英語北師大版 (選擇性必修第二冊)
- 24秋國家開放大學(xué)《0-3歲嬰幼兒的保育與教育》期末大作業(yè)參考答案
評論
0/150
提交評論