C語言程序設計(第3版)何欽銘 顏 暉 數(shù)組

上傳人:時間****91 文檔編號:128200418 上傳時間:2022-08-01 格式:DOC 頁數(shù):31 大小:51KB
收藏 版權(quán)申訴 舉報 下載
C語言程序設計(第3版)何欽銘 顏 暉 數(shù)組_第1頁
第1頁 / 共31頁
C語言程序設計(第3版)何欽銘 顏 暉 數(shù)組_第2頁
第2頁 / 共31頁
C語言程序設計(第3版)何欽銘 顏 暉 數(shù)組_第3頁
第3頁 / 共31頁

下載文檔到電腦,查找使用更方便

20 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

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

1、第7章 數(shù)組【練習 7-1】將例 7-3 程序中的 break 語句去掉,輸出成果有變化嗎?假設輸入數(shù)據(jù)不變,輸出什么?解答:當去掉 break 語句后,一旦找到數(shù)據(jù)將不跳出循環(huán),而是繼續(xù)往下找值為 x 的元素,因此程序輸出會有變化。當輸入數(shù)據(jù)仍為 2 9 8 1 9 時,輸出將是 index is 1 index is 4。【練習7-2】將數(shù)組中的數(shù)逆序寄存。輸入一種正整數(shù)n(1n=10),再輸入n個整數(shù),存入數(shù)組a中,輸出最大值及其相應的最小下標,下標從0開始。試編寫相應程序。解答:#includeint main(void)int i,n,temp;int a10;printf(Inpu

2、t n:);scanf(%d,&n);printf(Input %d integer:,n);for(i=0;in;i+)scanf(%d,&ai);printf(After reversed:);for(i=0;in/2;i+)temp=ai;ai=an-1-i;an-1-i=temp;for(i=0;in;i+)printf(%d ,ai);return 0;【練習7-3】求最大值及其下標。輸入一種正整數(shù)n(1n=10),再輸入n個整數(shù),存入數(shù)組a中,將先數(shù)組a中的這n個數(shù)逆序寄存,在按順序輸出數(shù)組a中的n各元素。試編寫相應程序。解答:#includeint main(void)int i

3、,index,n;int a10;printf(Enter n:);scanf(%d,&n);printf(Enter %d integrs:,n);for(i=0;i=0;i+)printf(%d ,ai);return 0; 【練習 7-4】找出不是兩個數(shù)組共有的元素。輸入一種正整數(shù) n (1n10),再輸入 n 個整數(shù),存入第1個數(shù)組中;然后輸入一種正整數(shù)m(1m=10),再輸入m個整數(shù),存入第2個數(shù)組,找出所有不是這兩個數(shù)組共有的元素。試編寫相應程序。解答:#includeint main(void) int i,j,k,m,n,flag,equal;int a25,b25,c25;

4、printf(Enter m:); scanf(%d,&m); printf(Enter %d integers:,m); for(i=0;im;i+) scanf(%d,&ai); printf(Enter n:); scanf(%d,&n); printf(Enter %d integers:,n); for(j=0;jn;j+) scanf(%d,&bj); k=0; for(i=0;im;i+) flag=0; for(j=0;ji;j+) if(ai=aj) flag=1;/判斷一種數(shù)組中與否有相重的元素,有的話不執(zhí)行 if(!flag) equal=0; for(j=0;jn;j+

5、) if(ai=bj) equal=1; break; if(!equal) ck+=ai; for(i=0;in;i+) flag=0; for(j=0;ji;j+) if(bi=bj) flag=1; if(!flag) equal=0; for(j=0;jm;j+) if(bi=aj) equal=1; break; if(!equal) ck+=bi; printf(%d,c0); for(i=1;ik;i+) printf( %d, ci); printf(n); return 0;【練習 7-5】給二維數(shù)組賦值時,如果把列下標作為外循環(huán)的循環(huán)變量,行下標作為內(nèi)循環(huán)的循環(huán)變量,輸入的

6、數(shù)據(jù)在二維數(shù)組中如何寄存?用下列 for 語句替代例 7-7 中的相應語句,將輸入的 6 個數(shù)存入二維數(shù)組中,假設輸入數(shù)據(jù)不變,輸出什么?與例 7-7 中的輸出成果同樣嗎?為什么?for( j=0;j2;j+)for( i=0;i3;i+)scanf(“%d”,&aij);解答:當把列下標作為外循環(huán)的循環(huán)變量,行下標作為內(nèi)循環(huán)的循環(huán)變量時,輸入的數(shù)據(jù)將以列優(yōu)先的方式寄存。當用上述 for 循環(huán)方式時,輸出成果為:max=a20=10,與原例 7-7不同樣,由于當用上述方式輸入是,二維數(shù)組中寄存值如下: 3 - 9 2 610 - 1【練習 7-6】 在例 7-9 的程序中,如果將遍歷上三角矩陣

7、改為遍歷下三角矩陣,需要如何修改程序?運營成果有變化嗎?如果改為遍歷整個矩陣,需要如何修改程序?輸出是什么?為什么?解答:只需按規(guī)定修改矩陣的輸出部分,措施如下,其運營成果不變。 for(i = 0; i n; i+) for(j = 0; j i; j+)temp = aij; aij = aji; aji = temp; 若修改為遍歷整個程序,措施如下,則運營成果仍將輸出原矩陣,無法達到轉(zhuǎn)置規(guī)定,因素是矩陣中每個元素相應被互換了 2 次。 for(i = 0; i n; i+) for(j = 0; j n; j+) temp = aij; aij = aji; aji = temp;/先

8、是下三角進行互換,后是上三角進行互換 【練習7-7】矩陣運算:讀入1個正整數(shù)n(1n6),再讀入n階方陣a,計算該矩陣除副對角線、最后一列和最后一行以外的所有元素之和。副對角線為從矩陣的右上角至左下角的連線。試編寫相應程序。解答:#include int main(void) int i,j,n,sum; int a66; printf(Input n:); scanf(%d,&n); printf(Input array:n ); for(i=0;in;i+) for(j=0;jn;j+) scanf(%d,&aij); sum=0; for(i=0;in;i+) for(j=0;jn;j+

9、) if(i!=n-1&j!=n-1&i+j!=n-1) sum+=aij; printf(sum=%dn,sum); return 0;【練習 7-8】方陣循環(huán)右移。讀入2個正整數(shù)m和n(1=n6),在讀入n階方陣a,將該方陣中的每個元素循環(huán)向右移m個位置,即將第0、1、n-1列變換為第n-m、n-m+1、n-1、0、1、n-m-1列,移動后的方陣可以存到另一種二維數(shù)組中。試編寫相應程序。解答:#includeint main(void)int m,n,i,j,count;int a66,b66;printf(Enter m:);scanf(%d,&m);printf(Enter n:);s

10、canf(%d,&n);printf(Input array:n);for(i=0;in;i+) for(j=0;jn;j+) scanf(%d,&aij);for(i=0;in;i+) count=0; for(j=0;jn;j+) if(jn-m) bij+m=aij; elsebicount+=aij;for(i=0;in;i+) for(j=0;jn;j+) printf(%d ,bij); printf(n); return 0;【練習 7-9】計算天數(shù):輸入日期(年、月、日),輸出它是該年的第幾天。規(guī)定調(diào)用例 7-10 中定義的函數(shù) day_of_year(year, month,

11、 day)。試編寫相應程序。解答:#includeint day_of_year(int year, int month, int day);int main(void) int year,month,day,day_year; printf(Input year,month,day: ); scanf(%d%d%d,&year,&month,&day); day_year=day_of_year(year,month,day); printf(Days of year: %dn,day_year); return 0;int day_of_year(int year,int month,in

12、t day)int k,leap;int tab213= 0,31,28,31,30,31,30,31,31,30,31,30,31, 0,31,29,31,30,31,30,31,31,30,31,30,31;leap=(year%4=0&year%100!=0|year%400=0);for(k=1;kmonth;k+) day=day+tableapk;return day; 【練習7-10】查找指定字符。輸入一種字符,再輸入一種以回車符結(jié)束的字符串(少于80個字符)。如果找到,則輸出該字符在字符串中所相應的最大下標,下標從0開始;否則輸出”Not Found”。試編寫相應程序。解答:#

13、includeint main(void)int i,max,flag;char a80,op;printf(Enter a x:);op=getchar(); fflush(stdin);/或setbuf(stdin,NULL);printf(Enter a string:);i=0;while(ai=getchar()!=n) i+;ai=0;max=0;flag=0;for(i=0;ai!=0;i+) if(ai=op) max=i; flag=1;if(flag=1) printf(Max=%d,max);else printf(Not Found!);return 0; 【練習7-1

14、1】字符串逆序:輸入一種以回車符結(jié)束的字符串(少于80個字符),將該字符串逆序寄存,輸出逆序后的字符串。試編寫相應程序。解答:#includeint main(void)int i;char str80,a80;printf(Enter a string:);i=0;while(stri=getchar()!=n) i+;stri=0;for(;i=0;i-) putchar(stri); return 0;習題7一選擇題1假定int類型變量占用兩個字節(jié),其有定義:int x10=0,2,4; 則數(shù)組x在內(nèi)存中所占字節(jié)數(shù)是 D 。A3 B6 C10 D202如下能對的定義數(shù)組并對的賦初值的語句

15、是 D 。Aint N=5,bNN;Bint a12=1,3;Cint c2=1,2,3,4;Dint d32=1,2,34;3 若有定義:int a23;如下選項中對數(shù)組元素對的引用的是 D 。Aa20 Ba23 Ca 03 Da1214設有數(shù)組定義:char array =China;則數(shù)組array 所占的空間為 C 。A4 個字節(jié) B5 個字節(jié) C6 個字節(jié) D7 個字節(jié)5下述對 C 語言字符數(shù)組的描述中錯誤的是 D 。A字符數(shù)組可以寄存字符串B字符數(shù)組中的字符串可以整體輸入、輸出C可以在賦值語句中通過賦值運算符=對字符數(shù)組整體賦值D不可以用關(guān)系運算符對字符數(shù)組中的字符串進行比較6有如

16、下定義:char x =abcdefg; char y =a,b,c,d,e,f,g; 則對的的論述為 C 。A數(shù)組x和數(shù)組y等價 B . 數(shù)組x和數(shù)組y的長度相似C數(shù)組x的長度不小于數(shù)組y的長度 D數(shù)組x的長度不不小于數(shù)組y的長度7如下程序的輸出成果是 C 。int main(void) int m 3=1,4,7,2,5,8,3,6,9;int i, j, k=2;for (i=0;i3;i+)printf (%d ,mki);A4 5 6 B2 5 8 C3 6 9 D7 8 98如下程序的輸出成果是 B 。int main(void) int aa44=1,2,3,4,5,6,7,8,

17、3,9,10,2,4,2,9,6;int i, s=0;for(i=0;i4;i+) s+=aai1;printf(%dn,s);A11 B19 C13 D20二填空題1設有定義語句:int a 3=0,1,2; 則數(shù)組元素a12的值是 0 。2下列程序的功能是:求出數(shù)組 x 中各相鄰兩個元素的和依次寄存到a數(shù)組中,然后輸出。請?zhí)羁?。int main(void ) int x10,a9,i; for(i=0; i10; i+) scanf(%d,&xi); for( _i=1_; i10; i+ ) ai-1=xi+_xi-1 _ ; for(i=0; i9; i+ +) printf(%d

18、,ai); printf(n);3寫出下列程序的運營成果是 -12 。int main(void) int a10=10,1,-20,-203,-21,2,-2,-2,11,-21;int j,s=0;for(j=0;j10;j+) if(a j%2=0) s+=aj; printf(s=%dn,s); 4寫出下面程序的運營成果 。#include int main(void) float s6=1, 3, 5, 7, 9; float x; int i; scanf(“%f”, &x);for (i=4 ; i=0; i-) if(six) si+1=si; else break;print

19、f(%d n,i+1);return 0;(1) 如果輸入 4,則輸出 2 。(2) 如果輸入 5,則輸出 3 。5下列程序的功能是輸出如下形式的方陣,請?zhí)羁铡?3 14 15 169 10 11 125 6 7 81 2 3 4int 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ù)組與否對稱(即對所有的i,j均有ai j=aj i)。請?zhí)羁?。int main(void) int a44=1,2,3,4,2,2,5,6,

20、3,7,8,6,7,4; int i,j,found=0;for(j=0;j4;j+) for(i=0;i4;i+) if(_aji!=aij_) _found=1;_ break; if(_found=1_)break;if(found!=0) printf(該二維數(shù)組不對稱n);else printf(該二維數(shù)組對稱n);return 0;三程序設計題1. 選擇法排序。輸入一種正整數(shù) n (1n10),再輸入n個整數(shù),將它們從大到小排序后輸出。試編寫相應程序。解答:#includeint main(void)int i,n,index,k,temp;int a10;printf(Enter

21、 n:);scanf(%d,&n);printf(Input %d integers:,n);for(i=0;in;i+) scanf(%d,&ai);for(k=0;kn-1;k+) index=k; for(i=k+1;in;i+) if(aindexai) index=i; temp=aindex; aindex=ak; ak=temp; printf(After sorted:); for(i=0;in;i+) printf(%d,ai); printf(n); return 0;2. 求一批整數(shù)中浮現(xiàn)最多的數(shù)字。輸入一種正整數(shù)n(1n1000),再輸入n個整數(shù),分析每個整數(shù)的每一位數(shù)

22、字,求浮現(xiàn)次數(shù)最多的數(shù)字。例如輸入3個整數(shù)1234、2345、3456,其中浮現(xiàn)次數(shù)最多的數(shù)字是3和4,均浮現(xiàn)了3次。試編寫相應程序。解答:#includeint main(void)int i,j,k,g,n,max;int a1000,b1000,count1000;printf(Enter n:);scanf(%d,&n);printf(Enter %d integers:,n);for(i=0;in;i+) scanf(%d,&ai);for(i=0;i=9;i+) counti=0;for(i=0;i=9;i+) for(j=0;jn;j+) for(k=0;kn;k+) bk=ak

23、; while(aj!=0) if(aj%10=i) counti+; aj=aj/10;for(k=0;kn;k+) ak=bk;max=count0;for(i=0;i=9;i+) if(maxcounti) max=counti;printf(浮現(xiàn)最多次數(shù)的數(shù)字和次數(shù)是:);for(i=0;i=9;i+) if(max=counti) printf(%2d-%d,i,counti);return 0;3. 判斷上三角矩陣。輸入一種正整數(shù)n (1n6)和n階方陣a中的元素,如果a是上三角矩陣,輸出“YES”,否則,輸出“NO”。上三角矩陣,即主對角線如下的元素都為0的矩陣,主對角線為從矩陣

24、的左上角至右下角的連線。試編寫相應程序。解答:#include int main(void) int i,j,n,flag;int a66; printf(Input n:); scanf(%d,&n); printf(Input array:n); for(i=0;in;i+) for(j=0;jn;j+) scanf(%d,&aij); for(j=1;jn;j+) flag=0; for(i=1;ij;i+) if(aij=0) flag=1; if(flag) printf(YES!n); else printf(NO!n); return 0;4求矩陣各行元素之和。輸入2個正整數(shù)m和

25、n (1m6,1 n6),然后輸入該m行n列矩陣a中的元素,分別求出各行元素之和,并輸出。試編寫相應程序。解答:#include int main(void) int i,j,m,n,sum; int a66; printf(Input m:); scanf(%d,&m);printf(Input n:); scanf(%d,&n); printf(Input array:n ); for(i=0;im;i+) for(j=0;jn;j+) scanf(%d,&aij); for(i=0;im;i+) sum=0; for(j=0;jn;j+) sum=sum+aij; printf(sum

26、of row %d is %dn,i,sum); return 0;5找鞍點。輸入一種正整數(shù)n(1n6)和n階方陣a中的元素,假設方陣a最多有1個鞍點,如果找到a的鞍點,就輸出它的下標;否則,輸出NO。鞍點的元素值在該行上最大,,在該列上最小。試編寫相應程序。解答:#includeint main(void) int flag,i,j,k,row,col,n;int a66; printf(Input n: ); scanf(%d,&n); printf(Input array:n ); for(i=0;in;i+) for(j=0;jn;j+) scanf(%d,&aij); for(i=0

27、;in;i+) flag=1; col=0; for(j=0;jn;j+) if(aicolaij) col=j; for(k=0;kakcol) flag=0;break; if(flag) row=i; break; if(flag) printf(a%d%d=%dn,row,col,arowcol); else printf(NOn); return 0;7字符串替代。輸入一種以回車結(jié)束的字符串(少于 80 個字符),將其中的大寫字母用下面列出的相應大寫字母替代,其他字符不變,輸出替代后的字符串。試編寫相應程序。原字母 相應字母 A Z B Y C X D W X C Y B Z A解答

28、:#include int main(void) int i; char ch,str80; printf(Input a string: ); i=0; while(ch=getchar()!=n) stri+=ch; stri=0; for(i=0;stri!=0;i+) if(stri=A) stri=A+Z-stri; printf(After replaced:); for(i=0;stri!=0;i+) putchar(stri); putchar(n); return 0;8 字符串轉(zhuǎn)換成十進制整數(shù)。輸入一種以字符”#”結(jié)束的字符串濾去所有的非十六進制字符(不分大小寫),構(gòu)成一種

29、新的表達十六進制數(shù)字的字符串,然后將其轉(zhuǎn)換為十進制數(shù)后輸出。如果過濾后字符串的首字符為”-”,代表該數(shù)是負數(shù)。試編寫相應程序。解答:#includeint main(void)int i,j,k;char hexad80,str80;long number;printf(Enter a string:);i=0;while(stri=getchar()!=#) i+;stri=0;k=0;for(i=0;stri!=0;i+) if(stri=-|stri=0&stri=a&stri=A&stri=0&hexadi=A&hexadi=a&hexadi=f) number=number*16+hexadi-a+10; if(hexad0=-) printf(Number=%ldn,-number);else printf(Number=%ldn,number);return 0;

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

相關(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ǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!