版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、習(xí)題 6 參考解答1請解釋以下術(shù)語的含義:地址 指針 指針變量直接訪問 間接訪問解: ( 1)地址:內(nèi)存單元的編號叫做地址。( 2)指針:內(nèi)存單元的編號叫做地址,通常也叫做指針。(3)指針變量:在c語言中,允許用一個變量來存放指針,這種變量稱為指針變量。( 4)直接訪問:通過變量名稱引用變量內(nèi)存單元的方式稱為直接訪問。( 5)間接訪問:利用了指針變量,通過變量的指針(即變量的內(nèi)存地址)來引用內(nèi)存單元的值,這種方式稱為間接訪問。2指針能參與哪幾種運算?舉例說明。解: ( 1)指針變量和整數(shù)可以進行加/ 減運算:p+ 、 p-、 p+i 、 p-i、 p+=i 、 p-=i( 2)指針變量可進行賦
2、值運算:p=&a; 變量a的地址賦給p,即指針p指向ap=array; 數(shù)組 array 首地址賦給pp=&arrayi;數(shù)組元素arrayi的地址賦給pp=max; 函數(shù) max 的入口地址賦給pp1=p2; 指針 p2 的值賦給指針p1 ,即 p1、 p2 所指的數(shù)據(jù)相同( 3)同類指針變量在一定的條件下可以作相減運算:p-q( 4)同類指針變量在一定的條件下可以作比較運算:pq3判斷下面兩個程序的正誤,若錯誤指出原因。( 1) #includeint main()char *p;編輯版 wordp=data;printf(%sn,*p);return 0;解: 該程序錯。應(yīng)為:print
3、f(%sn,p);( 2) #includeint main()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(*
4、p*bb) p=bb;if(*p*cc) p=cc;printf(%dn,*p); return 0;程序運行情況如下:input 3 number:4 5 9/a=4 b=5 c=995.有3個整型變量i, j, ko請編寫一個程序,設(shè)置 3個指針變量pl, p2, p3,分別指 向i, j, k,然后通過指針變量使 i, j, k 3個變量的值順序交換,即原來 i的值賦給j,把j 的原值賦給k,把k的原值賦給io i, j, k的原值由鍵盤輸入,要求輸出 i, j, k的原值和新 值。解:#includeint main()int i,j,k,tmp;int *p1,*p2,*p3;sca
5、nf(%d%d%d,&i,&j,&k);printf(before change:%dt%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;程序運行情況如下:1 2 3/before change:1 23after change:3 126輸入一個10 個元素的一維數(shù)組,在主函數(shù)中用 scanf 函數(shù)輸入。用指針方式編程找出最大和最小數(shù),并指出最大數(shù)和最小數(shù)的位置。解:int y_max(int *p,int n)
6、int max=*p,i,k=0;for(i=0;in;i+)/* 這里判斷到 in ,而不是 i=n*/if(max*(p+i)k=i;max=*(p+i);/* 記得要在這里更新一下 max 的記錄 */return k;#define n 10#includeint 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;程序運行情況如下:1 5 6 78 9 6 4 7 2 3/1 5
7、6 78 9 6 4 7 2 3max=a3=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;程序運行情況如下:hello12345/5,58請寫出下列程序段的輸出結(jié)果。1 ) #include int main()
8、int a=1,2,3,4,5,6,*p;p=a;*(p+3)+=2;printf(%d,%d,*p,*(p+3);return 0;解:1,62 ) #includeint 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 3214 35 #include#includeint main()char *s1=abdeg;char *s2=abdeg;s1+=2;s2+=2;printf(%dn,strcmp(s1,s2
9、);return 0;解:-14 #include#includefun(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;解:76543215 ) #includeint main()char *a=pascal,c language,dbase,coble;char (*p);int j;p=a+3;for(j=3;j=0;j-)printf(%sn,*(p-);
10、return 0;解:cobledbasec languagepascal9用一個函數(shù)實現(xiàn)兩個字符串的比較,即自己寫一個strcmp 函數(shù):strcmp(s1,s2)如果s1=s2,則函數(shù)返回值為 0;如果s1!=s2,返回它們兩者第一個不同字符的ascii碼差值(如“ boy”與“ bad”,第二個字符不同,“o”與 a”之差為79-65=14);如果 s1s2,則輸出正值,如果 s1s2,則輸出負值。兩個字符串 s1, s2 由 main 函數(shù)輸入, strcmp 函數(shù)的返回值也在 main 函數(shù)中輸出。解:#includeint strcmp(char *s1,char *s2)for(
11、;*s1=*s2&*s1&*s2;s1+,s2+);/* 找不同的字符*/return (*s1-*s2);void main()char a10,b10;gets(a);gets(b);printf(%dn,strcmp(a,b);程序運行結(jié)果如下:hello/world / -1510 設(shè)計一個程序,管理一個班的計算機成績,要求采用一維數(shù)組來存儲學(xué)生的成績。解:#include int main(void)float a10;int i=0;double sum = 0.0;float avg = 0.0;for(i=0;i10;i+)printf( 請輸入第 %d 個同學(xué)的成績: ,i+
12、1);scanf(%f,&ai);printf(n);sum+=ai;avg = sum/10.0;printf(%fn,avg);return 0;程序運行結(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é)的成績:89/83.10000011輸入 10 個整數(shù),將其中最小的數(shù)與第一個數(shù)對換,把最大的數(shù)與最后一個數(shù)對換,用指針來實現(xiàn)。解:#incl
13、ude 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);程序運行結(jié)果如下:0 -9 10 20 30 40 50 60 70 66 /-9,0,10,20,30,40,50,60,66,7012 分析下列程序的運行結(jié)果。#include int f1(int x)return x+1;int f2(int x)return x-1;int su
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 教育領(lǐng)域的創(chuàng)意教學(xué)工具制作
- 2025年度航空航天設(shè)備租賃合同書4篇
- 小學(xué)美術(shù)教育中的情感表達
- 現(xiàn)代商業(yè)會議中心的空間規(guī)劃與使用效率
- 上海大廈2024年度物業(yè)管理服務(wù)合同版B版
- 2025年度摩托車租賃與賽事觀眾服務(wù)合同4篇
- 2025年個人承建民宿建筑工程施工合同范本3篇
- 2025年度交通行業(yè)臨時工勞動合同示范文本4篇
- 2025年八寶山殯儀館鮮花租賃與銷售一體化服務(wù)合同3篇
- 個性化勞務(wù)派遣合作合同樣本2024版B版
- 2024版塑料購銷合同范本買賣
- JJF 2184-2025電子計價秤型式評價大綱(試行)
- GB/T 44890-2024行政許可工作規(guī)范
- 2025屆山東省德州市物理高三第一學(xué)期期末調(diào)研模擬試題含解析
- 2024年滬教版一年級上學(xué)期語文期末復(fù)習(xí)習(xí)題
- 兩人退股協(xié)議書范文合伙人簽字
- 2024版【人教精通版】小學(xué)英語六年級下冊全冊教案
- 汽車噴漆勞務(wù)外包合同范本
- 2024年重慶南開(融僑)中學(xué)中考三模英語試題含答案
- 建筑制圖與陰影透視-第3版-課件12
- 2023年最新的校長給教師春節(jié)祝福語
評論
0/150
提交評論