C語言程序設(shè)計(第3版)何欽銘 顏 暉 第7章數(shù)組【技巧類別】

上傳人:8** 文檔編號:59967966 上傳時間:2022-03-05 格式:DOC 頁數(shù):16 大?。?0KB
收藏 版權(quán)申訴 舉報 下載
C語言程序設(shè)計(第3版)何欽銘 顏 暉 第7章數(shù)組【技巧類別】_第1頁
第1頁 / 共16頁
C語言程序設(shè)計(第3版)何欽銘 顏 暉 第7章數(shù)組【技巧類別】_第2頁
第2頁 / 共16頁
C語言程序設(shè)計(第3版)何欽銘 顏 暉 第7章數(shù)組【技巧類別】_第3頁
第3頁 / 共16頁

本資源只提供3頁預(yù)覽,全部文檔請下載后查看!喜歡就下載吧,查找使用更方便

4 積分

下載資源

資源描述:

《C語言程序設(shè)計(第3版)何欽銘 顏 暉 第7章數(shù)組【技巧類別】》由會員分享,可在線閱讀,更多相關(guān)《C語言程序設(shè)計(第3版)何欽銘 顏 暉 第7章數(shù)組【技巧類別】(16頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、 第7章 數(shù)組 【練習(xí) 7-1】將例 7-3 程序中的 break 語句去掉,輸出結(jié)果有變化嗎?假設(shè)輸入數(shù)據(jù)不變,輸出什么? 解答: 當(dāng)去掉 break 語句后,一旦找到數(shù)據(jù)將不跳出循環(huán),而是繼續(xù)往下找值為 x 的元素,因 此程序輸出會有變化。當(dāng)輸入數(shù)據(jù)仍為 2 9 8 1 9 時,輸出將是 index is 1 index is 4。 【練習(xí)7-2】將數(shù)組中的數(shù)逆序存放。輸入一個正整數(shù)n(1 int main(void)

2、 { int i,n,temp; int a[10]; printf("Input n:"); scanf("%d",&n); printf("Input %d integer:",n); for(i=0;i

3、 return 0; } 【練習(xí)7-3】求最大值及其下標(biāo)。輸入一個正整數(shù)n(1 int main(void) { int i,index,n; int a[10]; printf("Enter n:"); scanf("%d",&n); printf("Enter %d integrs:",n); for(i=0;i

4、or(i=n-1;i>=0;i++) printf("%d ",a[i]); return 0; } 【練習(xí) 7-4】找出不是兩個數(shù)組共有的元素。輸入一個正整數(shù) n (1<n≤10),再輸入 n 個整數(shù),存入第1個數(shù)組中;然后輸入一個正整數(shù)m(1 int main(void) { int i,j,k,m,n,flag,equal; int a[25],b[25],c[25]; printf("Ent

5、er m:"); scanf("%d",&m); printf("Enter %d integers:",m); for(i=0;i

6、=0; for(j=0;j

7、 if(!equal) c[k++]=a[i]; } } for(i=0;i

8、 equal=1; break; } if(!equal) c[k++]=b[i]; } } printf("%d",c[0]); for(i=1;i

9、變量,輸入的數(shù)據(jù)在二維數(shù)組中如何存放?用下列 for 語句替換例 7-7 中的對應(yīng)語句,將輸入的 6 個數(shù)存入二維數(shù)組中,假設(shè)輸入數(shù)據(jù)不變,輸出什么?與例 7-7 中的輸出結(jié)果一樣嗎?為什么? for( j=0;j<2;j++) for( i=0;i<3;i++) scanf(“%d”,&a[i][j]); 解答: 當(dāng)把列下標(biāo)作為外循環(huán)的循環(huán)變量,行下標(biāo)作為內(nèi)循環(huán)的循環(huán)變量時,輸入的數(shù)據(jù)將 以列優(yōu)先的方式存放。當(dāng)用上述 for 循環(huán)方式時,輸出結(jié)果為:max=a[2][0]=10,與原例 7-7 不一樣,因為當(dāng)用上述方式輸入是,二維數(shù)組中存放值如下: 3 - 9

10、 2 6 10 - 1 【練習(xí) 7-6】 在例 7-9 的程序中,如果將遍歷上三角矩陣改為遍歷下三角矩陣,需要怎樣修改程序?運行結(jié)果有變化嗎?如果改為遍歷整個矩陣,需要怎樣修改程序?輸出是什么?為什么? 解答: 只需按要求修改矩陣的輸出部分,方法如下,其運行結(jié)果不變。 for(i = 0; i < n; i++) for(j = 0; j < i; j++){ temp = a[i][j]; a[i][j] = a[j][i]; a[j][i] =

11、temp; } 若修改為遍歷整個程序,方法如下,則運行結(jié)果仍將輸出原矩陣,無法達到轉(zhuǎn)置要求, 原因是矩陣中每個元素相應(yīng)被交換了 2 次。 for(i = 0; i < n; i++) for(j = 0; j < n; j++) { temp = a[i][j]; a[i][j] = a[j][i]; a[j][i] = temp;////先是下三角進行交換,后是上三角進行交換

12、 } 【練習(xí)7-7】矩陣運算:讀入1個正整數(shù)n(1≤n≤6),再讀入n階方陣a,計算該矩陣除副對角線、最后一列和最后一行以外的所有元素之和。副對角線為從矩陣的右上角至左下角的連線。試編寫相應(yīng)程序。 解答: #include int main(void) { int i,j,n,sum; int a[6][6]; printf("Input n:"); scanf("%d",&n); printf("Input array:\n "); for(i=0;i

13、

14、位置,即將第0、1、…、n-1列變換為第n-m、n-m+1、…、 n-1、0、1、…、n-m-1列,移動后的方陣可以存到另一個二維數(shù)組中。試編寫相應(yīng)程序。 解答: #include int main(void) { int m,n,i,j,count; int a[6][6],b[6][6]; printf("Enter m:"); scanf("%d",&m); printf("Enter n:"); scanf("%d",&n); printf("Input array:\n"); for(i=0;i

15、 for(j=0;j

16、 return 0; } 【練習(xí) 7-9】計算天數(shù):輸入日期(年、月、日),輸出它是該年的第幾天。要求調(diào)用例 7-10 中定義的函數(shù) day_of_year(year, month, day)。試編寫相應(yīng)程序。 解答: #include int day_of_year(int year, int month, int day); int main(void) { int year,month,day,day_year; printf("Input year,month,day: "); sca

17、nf("%d%d%d",&year,&month,&day); day_year=day_of_year(year,month,day); printf("Days of year: %d\n",day_year); return 0; } int day_of_year(int year,int month,int day) { int k,leap; int tab[2][13]={ {0,31,28,31,30,31,30,31,31,30,31,30,31}, {0,31,29,31,30,31,30,31

18、,31,30,31,30,31} }; leap=(year%4==0&&year%100!=0||year%400==0); for(k=1;k int main(void) { in

19、t i,max,flag; char a[80],op; printf("Enter a x:"); op=getchar(); fflush(stdin);//或setbuf(stdin,NULL); printf("Enter a string:"); i=0; while((a[i]=getchar())!='\n') i++; a[i]='\0'; max=0; flag=0; for(i=0;a[i]!='\0';i++) if(a[i]==op) { max=i; flag=1;

20、 } if(flag==1) printf("Max=%d",max); else printf("Not Found!"); return 0; } 【練習(xí)7-11】字符串逆序:輸入一個以回車符結(jié)束的字符串(少于80個字符),將該字符串逆序存放,輸出逆序后的字符串。試編寫相應(yīng)程序。 解答: #include int main(void) { int i; char str[80],a[80]; printf("Enter a string:"); i=0; while((str[i]=g

21、etchar())!='\n') i++; str[i]='\0'; for(;i>=0;i--) putchar(str[i]); return 0; } 習(xí)題7 一.選擇題 1.假定int類型變量占用兩個字節(jié),其有定義:int x[10]={0,2,4}; 則數(shù)組x在內(nèi)存中所占字節(jié)數(shù)是 D 。 A.3 B.6 C.10 D.20 2.以下能正確定義數(shù)組并正確賦初值的語句是 D 。 A.int N=5,b[N][N]; B.int a[1][2]={{1},

22、{3}}; C.int c[2][]={{1,2},{3,4}}; D.int d[3][2]={{1,2},{34}}; 3. 若有定義:int a[2][3];以下選項中對數(shù)組元素正確引用的是 D 。 A.a(chǎn)[2][0] B.a(chǎn)[2][3] C.a(chǎn) [0][3] D.a(chǎn)[1>2][1] 4.設(shè)有數(shù)組定義:char array [ ]="China";則數(shù)組array 所占的空間為 C 。 A.4 個字節(jié) B.5 個字節(jié) C.6 個字節(jié) D.7 個字節(jié) 5.下述對 C 語言字符數(shù)組的描述中錯誤的是

23、 D 。 A.字符數(shù)組可以存放字符串 B.字符數(shù)組中的字符串可以整體輸入、輸出 C.可以在賦值語句中通過賦值運算符"="對字符數(shù)組整體賦值 D.不可以用關(guān)系運算符對字符數(shù)組中的字符串進行比較 6.有以下定義:char x[ ]="abcdefg"; char y[ ]={'a','b','c','d','e','f','g'}; 則正確的敘述為 C 。 A.?dāng)?shù)組x和數(shù)組y等價 B . 數(shù)組x和數(shù)組y的長度相同 C.?dāng)?shù)組x的長度大于數(shù)組y的長度 D.?dāng)?shù)組x的長度小于數(shù)組y的長度 7.以下程序的輸出結(jié)果是 C

24、 。 int main(void) { int m[ ][3]={1,4,7,2,5,8,3,6,9}; int i, j, k=2; for (i=0;i<3;i++) printf ("%d ",m[k][i]); } A.4 5 6 B.2 5 8 C.3 6 9 D.7 8 9 8.以下程序的輸出結(jié)果是 B 。 int main(void) { int aa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}}; int i, s=0; for(i=0;i<4

25、;i++) s+=aa[i][1]; printf("%d\n",s); } A.11 B.19 C.13 D.20 二.填空題 1.設(shè)有定義語句:int a[ ][3]={{0},{1},{2}}; 則數(shù)組元素a[1][2]的值是 0 。 2.下列程序的功能是:求出數(shù)組 x 中各相鄰兩個元素的和依次存放到a數(shù)組中,然后輸出。 請?zhí)羁铡? int main(void ) { int x[10],a[9],i; for(i=0; i<10; i++) scanf("%d",&x[i]); for( _i=

26、1_; i<10; i++ ) a[i-1]=x[i]+_x[i-1] _ ; for(i=0; i<9; i+ +) printf("%d ",a[i]); printf("\n"); } 3.寫出下列程序的運行結(jié)果是 -12 。 int main(void) { int a[10]={10,1,-20,-203,-21,2,-2,-2,11,-21}; int j,s=0; for(j=0;j<10;j++) if(a [j]%2==0) s+=a[j]; printf("s=%d\n",s); } 4.寫出下面程序

27、的運行結(jié)果 。 #include int main(void) { float s[6]={1, 3, 5, 7, 9}; float x; int i; scanf(“%f”, &x); for (i=4 ; i>=0; i--) if(s[i]>x) s[i+1]=s[i]; else break; printf("%d \n",i+1); return 0; } (1) 如果輸入 4,則輸出

28、 2 。 (2) 如果輸入 5,則輸出 3 。 5.下列程序的功能是輸出如下形式的方陣,請?zhí)羁铡? 13 14 15 16 9 10 11 12 5 6 7 8 1 2 3 4 int main(void) { int i,j,x; for(j=4;_j>=1_;j--) { for(i=1;i<=4;i++) { x=(j-1)*4+_i_; printf("%4d",x); } printf("\n"); } } 6. 以下程序的功能是用來檢查二維數(shù)組是否對稱(

29、即對所有的i,j都有a[i] [j]=a[j] [i])。請?zhí)羁铡? int main(void) { int a[4][4]={1,2,3,4,2,2,5,6,3,7,8,6,7,4}; int i,j,found=0; for(j=0;j<4;j++) { for(i=0;i<4;i++) if(_a[j][i]!=a[i][j]_){ _found=1;_ break; } if(_found==1_)break; } if(found!=0) printf("該二維數(shù)組不對稱\n"); e

30、lse printf("該二維數(shù)組對稱\n"); return 0; } 三.程序設(shè)計題 1. 選擇法排序。輸入一個正整數(shù) n (1 int main(void) { int i,n,index,k,temp; int a[10]; printf("Enter n:"); scanf("%d",&n); printf("Input %d integers:",n); for(i=0;i

31、,&a[i]); for(k=0;k

32、 求一批整數(shù)中出現(xiàn)最多的數(shù)字。輸入一個正整數(shù)n(1≤n≤1000),再輸入n個整數(shù),分析每個整數(shù)的每一位數(shù)字,求出現(xiàn)次數(shù)最多的數(shù)字。例如輸入3個整數(shù)1234、2345、3456,其中出現(xiàn)次數(shù)最多的數(shù)字是3和4,均出現(xiàn)了3次。試編寫相應(yīng)程序。 解答: #include int main(void) { int i,j,k,g,n,max; int a[1000],b[1000],count[1000]; printf("Enter n:"); scanf("%d",&n); printf("Enter %d integers:",n); f

33、or(i=0;i

34、=0;k

35、輸出“YES”,否則,輸出“NO”。上三角矩陣,即主對角線以下的元素都為0的矩陣,主對角線為從矩陣的左上角至右下角的連線。試編寫相應(yīng)程序。 解答: #include int main(void) { int i,j,n,flag; int a[6][6]; printf("Input n:"); scanf("%d",&n); printf("Input array:\n"); for(i=0;i

36、",&a[i][j]); for(j=1;j

37、a中的元素,分別求出各行元素之和,并輸出。試編寫相應(yīng)程序。 解答: #include int main(void) { int i,j,m,n,sum; int a[6][6]; printf("Input m:"); scanf("%d",&m); printf("Input n:"); scanf("%d",&n); printf("Input array:\n "); for(i=0;i

38、 scanf("%d",&a[i][j]); for(i=0;i

39、應(yīng)程序。 解答: #include int main(void) { int flag,i,j,k,row,col,n; int a[6][6]; printf("Input n: "); scanf("%d",&n); printf("Input array:\n "); for(i=0;i

40、; col=0; for(j=0;ja[k][col]){ flag=0; break; } if(flag){ row=i; break;

41、} } if(flag) printf("a[%d][%d]=%d\n",row,col,a[row][col]); else printf("NO\n"); return 0; } 7.字符串替換。輸入一個以回車結(jié)束的字符串(少于 80 個字符),將其中的大寫字母用下面列出的對應(yīng)大寫字母替換,其余字符不變,輸出替換后的字符串。試編寫相應(yīng)程序。 原字母 對應(yīng)字母 A → Z B → Y C →

42、 X D → W …… X → C Y → B Z → A 解答: #include int main(void) { int i; char ch,str[80]; printf("Input a string: "); i=0; while((ch=getchar())!='\n'){ str[i++]=ch;

43、 } str[i]='\0'; for(i=0;str[i]!='\0';i++) if(str[i]<='Z'&&str[i]>='A') str[i]='A'+'Z'-str[i]; printf("After replaced:"); for(i=0;str[i]!='\0';i++) putchar(str[i]); putchar('\n'); return 0; } 8. 字符串轉(zhuǎn)換成十進制整數(shù)。輸入一個以字符”

44、#”結(jié)束的字符串濾去所有的非十六進制字符(不分大小寫),組成一個新的表示十六進制數(shù)字的字符串,然后將其轉(zhuǎn)換為十進制數(shù)后輸出。如果過濾后字符串的首字符為”-”,代表該數(shù)是負(fù)數(shù)。試編寫相應(yīng)程序。 解答: #include int main(void) { int i,j,k; char hexad[80],str[80]; long number; printf("Enter a string:"); i=0; while((str[i]=getchar())!='#') i++; str[i]='\0'; k=0;

45、for(i=0;str[i]!='\0';i++) if(str[i]=='-'||str[i]>='0'&&str[i]<='9'||str[i]>='a'&&str[i]<='f'||str[i]>='A'&&str[i]<='F') hexad[k++]=str[i]; hexad[k]='\0'; j=1; if(hexad[0]=='-'){ for(k=1;hexad[k]!='\0';k++) if(hexad[k]!='-') hexad[j++]=hexad[k]; }

46、else{ j=0; for(k=0;hexad[k]=!'\0';k++) if(hexad[k]!='-') hexad[j++]=hexad[k];} printf("New string:"); for(i=0;hexad[i]!='\0';i++) putchar(hexad[i]); printf("\n"); number=0; for(i=0;hexad[i]!='\0';i++){ if(hexad[i]>='0'&&hexad[i]<='9') num

47、ber=number*16+hexad[i]-'0'; else if(hexad[i]>='A'&&hexad[i]<='F') number=number*16+hexad[i]-'A'+10; else if(hexad[i]>='a'&&hexad[i]<='f') number=number*16+hexad[i]-'a'+10; } if(hexad[0]='-') printf("Number=%ld\n",-number); else printf("Number=%ld\n",number); return 0; } 16 三類資料#

展開閱讀全文
溫馨提示:
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)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!