




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、C Anyview 7-9 章作業(yè)參考答案/*7.010】寫一函數(shù)求3 個整數(shù)中最小的數(shù)。*/int min(int x, int y, int z)/* 返回 3 個整數(shù) x,y 和 z 中最小的數(shù)*/if(x>y)x=y;if(x>z)x=z;return x;/*【習題 7.020】編寫函數(shù),求用 1 元、 5 元和 10元三種紙幣支付 n 元錢共有多少種支付法?例如, 16 元可有 6 種支付方法:方法 1234510元 005元 011元 16 116001123016161*/int change(int n)int i,j,k,m=0;for(i=0;i<=n;
2、i+)for(j=0;j<=n/5;j+)for(k=0;k<=n/10;k+) if(i+5*j+10*k=n)m+;return m;/*【習題7.030】先編寫一個判斷素數(shù)的函數(shù)。再編寫一個函數(shù)將一個偶數(shù)表示為兩個素數(shù)之和,并返回其中較小的素數(shù)。注:素數(shù)指只能被1 和自身整除的正整數(shù)。規(guī)定0*/1 不是素數(shù)。int prime(int n)/* 判斷素數(shù),如果是素數(shù)返回 1,不是素數(shù)則返回 int t;if(n=1)return 0;for(t=2;t<=(n/2);t+)if(n%t=0)return 0;return 1;0 */int f(int i)/* 將偶數(shù)
3、 i 表示為兩個素數(shù)之和,返回其中較小的素數(shù) int n;for(n=3;n<=i;n+) if(prime(i-n)&&prime(n) return n;*/*【習題 7.050】編寫函數(shù),將字符串中 ASCII 碼最小的字符放在第一個字符位置,其余字符依次往后移。*/void func(char *str)/* 將字符串 str 中 ASCII 碼最小的字符放在第一個/* 字符位置,其余字符依次往后移。int i=1,m=0,k;*/*/for(m=0,i=1;stri!='0'i+)if(strm>stri)m=i; k=strm;for(i
4、=m-1;i>=0;i-)stri+1=stri;str0=k;/*7.051系統(tǒng)給定外部字符串s和整型數(shù)組c26(不需要自行定義) 。編寫程序,將字符串 s 中 26 個字母 (不區(qū)分大小寫)出現(xiàn)的次數(shù)依次統(tǒng)計到數(shù)組c 中。例如,當 s=“ AbcijKaBcdEXyzuvwx ”時,數(shù)組 c 的 26 個元素值依次為: 2 2 2 1 1 0 0 0 1 1 1 0 0 0 0 0 0 00 0 1 1 1 2 1 1。*/void main()int i,j;for(j=0;j<26;j+)cj=0;for(i=0;si!='0'i+) if(si='
5、A'+j|si='a'+j) cj+;/*【習題7.060】編寫函數(shù)將一個nxn 的二維數(shù)組按“次對角線”翻轉(zhuǎn)。例如:翻轉(zhuǎn)前的數(shù)組翻轉(zhuǎn)后的數(shù)組->*/void invert(char aNN) int i,j;int bNN;for(i=0;i<N;i+)for(j=0;j<N;j+) bij=aN-1-jN-i-1;for(i=0;i<N;i+) for(j=0;j<N;j+) aij=bij;/*【習題 7.064】編寫函數(shù)將一個NxN 的二維數(shù)組“水平”翻轉(zhuǎn)。例如:翻轉(zhuǎn)前的數(shù)組翻轉(zhuǎn)后的數(shù)組->*/void invertH(cha
6、r aNN) int i,j;int bNN;for(i=0;i<N;i+)for(j=0;j<N;j+) bij=aN-i-1j;for(i=0;i<N;i+)for(j=0;j<N;j+) aij=bij;/*【習題 7.065】編寫函數(shù)將一個NxN 的二維數(shù)組“垂直”翻轉(zhuǎn)。例如:翻轉(zhuǎn)前的數(shù)組翻轉(zhuǎn)后的數(shù)組1233214 5 6 ->6 5 4789987*/void invertV(char aNN)int i,j;int bNN;for(i=0;i<N;i+)for(j=0;j<N;j+)bij=aiN-1-j;for(i=0;i<N;i+
7、)for(j=0;j<N;j+)aij=bij;/*7.068】編寫函數(shù)將一個NxN 的二維數(shù)組的周邊元素“逆時針”輪轉(zhuǎn)1 位。例如:輪轉(zhuǎn)前的數(shù)組 輪轉(zhuǎn)后的數(shù)組1232364 5 6 -> 1 5 9789478*/void turningAnticlockwise(char aNN) int i;char t=a00;for(i=0;i<N-1;i+)a0i=a0i+1;for(i=0;i<N-1;i+)ai2=ai+12;for(i=0;i<N-1;i+) a22-i=a22-i-1;a20=a10;a10=t;/*【習題7.072】編寫函數(shù)將一個NxN 的二
8、維數(shù)組 a 的元素按行向右輪轉(zhuǎn)1 位。例如:輪轉(zhuǎn)前的數(shù)組輪轉(zhuǎn)后的數(shù)組123312456 ->645789978*/void turningRight(char aNN) int bNN,i,j;for(i=0;i<N;i+) for(j=1;j<N;j+) bi0=aiN-1, bij=aij-1;for(i=0;i<N;i+) for(j=0;j<N;j+) aij=bij; /*【習題7.075】編寫函數(shù)將一個NxN 的二維數(shù)組按行向左輪轉(zhuǎn)1 位。例如:輪轉(zhuǎn)前的數(shù)組123231456->564789897輪轉(zhuǎn)后的數(shù)組*/ void turningLeft
9、(char aNN) int bNN,i,j;for(i=0;i<N;i+)for(j=0;j<N-1;j+) biN-1=ai0, bij=aij+1;for(i=0;i<N;i+) for(j=0;j<N;j+) aij=bij; /*【習題7.082】編寫函數(shù)將一個NxN 的二維數(shù)組按列向下輪轉(zhuǎn)1 位。例如:輪轉(zhuǎn)前的數(shù)組 輪轉(zhuǎn)后的數(shù)組1237894 5 6->1 2 3a 的元素a 的元素789456*void turningDown(char aNN) int bNN,i,j;for(i=1;i<N;i+) for(j=0;j<N;j+) b0
10、j=aN-1j, bij=ai-1j;for(i=0;i<N;i+) for(j=0;j<N;j+) aij=bij; /*【習題7.085】編寫函數(shù)將一個NxN 的二維數(shù)組 a 的元素按列向上輪轉(zhuǎn)1 位。例如:輪轉(zhuǎn)前的數(shù)組輪轉(zhuǎn)后的數(shù)組->*/ void turningUp(char aNN) int bNN,i,j;for(i=0;i<N-1;i+)for(j=0;j<N;j+) bN-1j=a0j, bij=ai+1j;for(i=0;i<N;i+) for(j=0;j<N;j+) aij=bij;/*m 和 n 的最大公約數(shù),【習題7.103】編
11、寫函數(shù),求整數(shù)并作為函數(shù)的返回值。*/ int gdc(int m, int n) int a,r;if(m<n)a=m,m=n,n=a;while(r=m%n)!=0)m=n;n=r;return n; /*【習題 7.105】 編寫函數(shù),求整數(shù) m 和 n 的最小公倍數(shù),并作為函數(shù)的返回值。*/ int lcm(int m, int n)int t,r,h;h=m*n;if(m<n)t=m;m=n;n=t;while(r=m%n)!=0)m=n;n=r;return h/n;/*7.110系統(tǒng)給定外部字符數(shù)組變量s和數(shù)組長度n (不需要自行定義) 。 main 函數(shù)的功能是:把
12、字符串 s 中所有小寫字母轉(zhuǎn)換為大寫字母,其他字符不變。例如,當 s="68abcdEFGhijkLM86"時,轉(zhuǎn)換后 s="68ABCDEFGHIJKLM86" 。請僅在空缺處填入合適內(nèi)容,使其實現(xiàn)上述功能。*/void main() int i;/* 1 */i=0; ;while(i<n)if(*(s+i)>='a' && *(s+i)<='z')*(s+i)=/* 2 */*(s+i)-32 ;/* 3 */ i+;/*【習題7.115】編寫函數(shù),將兩個兩位數(shù)的正整數(shù) a、 b 合
13、并形成一個整數(shù) c 且作為函數(shù)值返回。合并的方式是:將a 的十位和個位數(shù)分別作為 c 的千位和十位數(shù), b 的十位和個位數(shù)分別作為 c 的百位和個位數(shù)。例如,若a=45, b=12 ,則該函數(shù)返回值為 4152。*/int func(int a, int b) int c;c=a/10*1000+a%10*10+b/10*100+b%10;return c;/*7.120 系統(tǒng)給定外部長整型變量n和字符數(shù)組變量s (不需要自行定義) 。 main 函數(shù)的功能是:把n 的整數(shù)值轉(zhuǎn)換成字符串,并逆序保存在 s 中。例如,當 n=20120826 時,由 n 轉(zhuǎn)換得到 s="6280210
14、2" 。請僅在空缺處填入合適內(nèi)容,使其實現(xiàn)上述功能。*/ void main() int i=0;while( /* 1 */n>0 )si= /* 2 */n%10+'0' ;/* 3 */ n/=10 i+;si='0'/*7.121 系統(tǒng)給定外部長整型變量n和字符數(shù)組變量s (不需要自行定義) 。 main 函數(shù)的功能是:把n 的整數(shù)值轉(zhuǎn)換成字符串,并保存在s中。例如,當 n=20120826時,由n轉(zhuǎn)換得到 s=”20120826”。請僅在空缺處填入合適內(nèi)容,使其實現(xiàn)上述功能。*void main()int i=0,k;char c10;
15、while( /* 1 */ 10*n/10!=0)ci= /* 2 */n%10 ;n/=10;i+;si-='0'k=i;while(i>=0)si=/* 3 */ck-i+'0'i-; /*【習題7.125】編寫函數(shù),對非負浮點數(shù)r 的值的第三位小數(shù)四舍五入,返回保留 2 位小數(shù)的值。例如:若r 的值為 8.32488 ,則函數(shù)返回 8.32 ;若 r 的值為 8.32533 ,則返回 8.33。*/float func(float r) int a,b;a=r*1000;b=a%10;if(b<5) r=(a-b)*0.001;elser=(
16、a-b+10)*0.001;return r;/*【習題7.135】假設(shè)n是一個k(kR2)位的正整數(shù),編寫函數(shù),求出由 n 的低 k-1 位構(gòu)成的數(shù)并作為函數(shù)值返回。例如:若n 值為5923,則函數(shù)返回923;若n值為923,則函數(shù)返回23。*/ int func(int n) int i,j,k=n,m=1; while(k>=10) k/=10,i+;for(j=1;j<=i;j+) m=m*10;n=n-k*m; return n;/*【習題7.175編寫函數(shù),求n以內(nèi)(不包括n)同時能被3與7整除的所有自然數(shù)之和的平方根,并作為函數(shù)值返回。例如,14.49138。若 n
17、為 100 時,函數(shù)返回值應(yīng)為*/ float func(int n)int i;float s;for(i=0;i<n;i+)if(i%3=0&&i%7=0)s=s+i; s=sqrt(s);return(s);/*【習題 7.184】編寫函數(shù),根據(jù)公式s=1+1/(1+2)+1/(1+2+3)+1/(1+2+3+n)計算s,并作函數(shù)值返回。例如:若 n的值 為 11 時,函數(shù)的值為 1.833333 。*/ float func(int n)int i;float j=1.0,s=1.0; for(i=2;i<=n;i+) j=j+i;s=s+1/j;retur
18、n (s);*7.187】編寫函數(shù),計算并輸出下列級數(shù)和:1/(1*2)+1/(2*3)+1/(3*4)+1/(n*(n+1),并返回結(jié)果。例如,當 n=10 時,函數(shù)值為0.90909。*/ float func(int n)int i;float x,y;for(i=1;i<=n;i+)x=i*(i+1);y=y+1/x;return(y);/*【習題7.195】編寫函數(shù),求m!/(n!(m-n)!) 的值,結(jié)果由函數(shù)值返回。m與n為兩個正整數(shù)且要求m>n。例如:m=12 , n=8時,運行結(jié)果為495.000000 。*/float func(int m, int n)int
19、 i,j,k,l;float x=1.0,y=1.0,z=1.0;if(m<=n) l=m,m=n,n=l;for(i=1;i<=m;i+)x=x*i;for(j=1;j<=n;j+)y=y*j;for(k=1;k<=m-n;k+)z=z*k ;z=x/(z*y);return(z);/*7.205】編寫函數(shù),計算并返回給定整數(shù)n 除了 1 與自身之外的所有因子之和。例如,若n=8 ,則函數(shù)返回6( =2+4 ) 。*int func(int n)int i,j,k;for(i=1;i<=0.5*n;i+) for(j=1;j<=n;j+)if(i*j=n)
20、 k=k+i+j;k=k-1-n;k=k/2;return(k);/*【習題7.255編寫函數(shù),根據(jù)以下公式返回兀的值兀 /2 = 1 + 1!/3+2!/(3*5)+.+n!/(3*5*7*.*(2*n+1)要求滿足精度eps,即一旦有小于eps的項值加入后停止迭代。例如,若精度 eps=0.0005,則返回值為 3.141106。*/ float func(float eps)int i;float x=1,y=1,z;for(i=1;(x/y)>=eps;i+)x=x*i;y=y*(2*i+1);z=z+x/y;z=2*z+2;return(z);/*【習題7.265編寫函數(shù),將數(shù)
21、組 s所存字符串中下標和ASCII碼均為偶數(shù)的字符,依次存入數(shù)組 t 中,并構(gòu)成一個新串。例如,若s中的字符串值為 ABCD123456 ,則t中的串值應(yīng)為246。*/void func(char s, char t)int i,j,m=0;for(i=0;si!=0;i+)if(i%2=0)&&(si%2=0) tj=si,j+;/*【習題7.275】假定字符串s 中可能含有字符'*'。請編寫函數(shù),若字符串 s 的尾部連續(xù)的 '*'多于 n 個,則刪除多余的 '*' 。例如,若 s="*A*BCDE*F*"
22、且 n=4 ,則調(diào)用函數(shù)后,字符串s="*A*BCDE*F*”;若n>7,則字符串 s中的內(nèi)容不變。注意:函數(shù)中不得調(diào)用 C 語言提供的字符串函數(shù)。*/ void func(char s, int n)int i,j,k,d=0,c=0,t=0;while(sd+)c+;for(i=c-1;i>=0;i-)if(si='*')t+;else break;if(t>n)k=t-n;sc-k='0'/*求出1到n之間(含n)能被7或11整除的a 中,函數(shù)值為這些數(shù)的個數(shù)。例如,a 中的數(shù)為 7、 11 和 14,函數(shù)值為3?!玖曨}7.31
23、5】編寫函數(shù),求出所有整數(shù)并依次存入數(shù)組若 n=15 ,則依次存入數(shù)組*/int func(int n, int a)int i,j=0;for(i=1;i<=n;i+)if(i%7=0)|(i%11=0) aj=i,j+;return(j);/*【習題7.317編寫函數(shù),求出1到n之間(含n)都能被c和d整除的所有整數(shù)并依次存入數(shù)組 a 中,函數(shù)值為這些數(shù)的個數(shù)。例如,若n=20, c=2, d=3,則依次存入數(shù)組 a中的數(shù)為6、12和18,函數(shù)值為 3 。*/int func(int n, int c, int d, int a)int i,j;for(i=1;i<=n;i+)
24、if(i%c=0)&&(i%d=0)aj=i,j+;return(j);/*【習題7.325】假設(shè)數(shù)組a存放了數(shù)組 c 統(tǒng)計各年齡段的人數(shù),其中c1 為 10 至 19 歲年齡段的人數(shù),n 個人的年齡。編寫函數(shù),用c0為0至9歲年齡段的人數(shù), c2 為 20 至 29 歲年齡段的人數(shù),其余依此類推, c10 為 100 歲 (含100) 以上年齡的人數(shù)。*/ void func(int n, int a, int c)int i,b;for(i=0;i<=10;i+)ci=0;for(i=0;i<n;i+) if (ai>=100)c10+;else b=ai
25、/10;cb+;/*【習題7.335】假設(shè)字符數(shù)組a 中存放了按由小到大連續(xù)存放的字符構(gòu)成的字符串(后跟一個'0'作為結(jié)束符) 。編寫函數(shù),刪去字符串中所有重復的字符(各自只保留一個)留的字符仍構(gòu)成一個字符串(連續(xù)存放,函數(shù)返回 a 中保留的字符串長度。例如,若'0'作為結(jié)束符) 。a 中的字符串值為:AAABBCDFFFHHHKLMMMa 中的字符串值為:則刪除重復字符之后,函數(shù)返回值為 9 ,ABCDFHKLM */int func(char a)int i;/while(ai!='0')/i+;char c26;int j=1,k;c0=a
26、0;for(i=1;ai!='0'i+) if(ai!=ai-1) cj=ai,j+;while(ck!='0') k+;for(i=0;i<=k;i+) ai=ci;return(k);/*【習題 7.345】假設(shè)字符數(shù)組 s 中存放了一行字符串,含有由小寫字母組成的若干單詞,單詞之間由若干個空格隔開(串的開頭沒有空格) 。編寫函數(shù),統(tǒng)計一行字符串中單詞的個數(shù),并作為函數(shù)值返回。*/int func(char s)int i,j;for(i=0;si!=0;i+)if(si=' ')j+;j+=1;for(i=0;si!=0;i+)if(
27、si=' ')&&(si+1=' ') )j-;return(j); /*【習題 7.355】假定字符串 s 中可能含有字符'*'。請編寫函數(shù),將字符串 s 中前導 '*'全部移到字符串的尾部。例如,若s 的串值為 *A*BC*DEF*G* ,移動后,串值應(yīng)為 A*BC*DEF*G*。注意:不得調(diào)用 C 語言提供的字符串函數(shù)。*/void func(char s)int i,j=0,k=0;char b100;for(i=0;si!='0'i+)if(si='*')k+;else b
28、reak;for(i=k;si!='0'i+)bj=si;j+;for(i=0;i<j+k;i+)if(i<j)si=bi;else si='*'si='0'/*【習題 7.513】編寫函數(shù),計算并返回數(shù)組 a 中頭 n 個元素的乘積。*/ long func(int a, int n) int i,s=1;for(i=0;i<n;i+) s=s*ai;return(s);/*【習題7.523】編寫函數(shù),計算并返回數(shù)組a 中頭 n 個元素的平方和。*/long func(int a, int n)int i,s;for(i=0;
29、i<n;i+)s=s+ai*ai;return (s); /*【習題 7.533】假設(shè)某班選舉班長, k 位候選人的v (每個元c 統(tǒng)計各位號碼分別為 1 至 k , n 張選票已存入數(shù)組素值在 1 至 k 之間) 。編寫函數(shù),用數(shù)組候選人的得票( ci 為 i 號候選人的得票數(shù))*/void func(int v, int n, int k, int c)int i,j;for(j=0;j<=k;j+)cj=0;for(i=0;i<n;i+)cvi+;/*【習題 7.535】假設(shè)某班選舉班長, k 位候選人的號碼分別為 1 至 k , n 張選票已存入數(shù)組v (每個元素值在
30、 1 至 k 之間) 。編寫函數(shù),用數(shù)組 c 統(tǒng)計各位候選人的得票( ci 為 i 號候選人的得票數(shù)) ,并返回得票最高的人的號碼。*/ int func(int v, int n, int k, int c) int i,j,max;for(i=0;i<5;i+) ci=0;for(i=0;i<n;i+) cvi+;max=c0;for(i=1;i<=k;i+) if(max<ci) j=i;max=ci; return j;/*【習題7.563】編寫函數(shù),把長整數(shù)n 的各位數(shù)字從低位到高位依次存儲在數(shù)組 d 中,并返回 n 的位數(shù)。例如,若 n=2579 ,則 n
31、的位數(shù)為 4, d0.3=9,7,5,2 。*/int func(long n, int d)int i;while(n>0)di=n%10,i+;n=n/10; return(i);/*【習題7.565】編寫函數(shù),把長整數(shù)n 的各位數(shù)字從高位到低位依次存儲在數(shù)組 d 中,并返回 n 的位數(shù)。例如,若 n=2579 ,則 n 的位數(shù)為 4, d0.3=2,5,7,9 。*/int func(long n, int d)int i,j;int a25;for(i=0;n!=0;i+)ai=n%10;n=n/10;j=i;for(i=0;i<j;i+) di=aj-i-1;return
32、 j;/*【習題 7.655】編寫函數(shù),用數(shù)組 num 統(tǒng)計字符串 s 中各元音字母(即: A、 E、 I、 O、 U )的個數(shù)。注意:不分大、小寫。例如,若 s="THIs is a book" ,則 num0.4=1,0,2,2,0 。*/ void func(char *s, int *num)/* 功能:用數(shù)組 num 統(tǒng)計符串 s 中元音字母出現(xiàn)的個數(shù) */ int i;num0=0, num1=0,num2=0,num3=0,num4=0;for(i=0;si!='0'i+)if(si='a')|(si='A')n
33、um0+;for(i=0;si!='0'i+)if(si='e')|(si='E')num1+;for(i=0;si!='0'i+)if(si='i')|(si='I')num2+;for(i=0;si!='0'i+)if(si='o')|(si='O')num3+;for(i=0;si!='0'i+)if(si='u')|(si='U')num4+;/* 【習題 7.675】假設(shè)在數(shù)組 s 中存放了 n
34、 位學生的成績。編寫函數(shù),用數(shù)組 p 統(tǒng)計各分數(shù)段的人數(shù),其中 p0 為不足 60 分的人數(shù), p1 為 60 至 69 分的人數(shù), p2 為 70 至 79 分的人數(shù), p3 為 80 至 89 分的人數(shù), p4 為 90 至 100 分的人數(shù)。*void func(int s, int n, int p)int i;for(i=0;i<5;i+)pi=0;for(i=0;i<n;i+)if(si<60)p0+;if(si>=60)&&(si<70)p1+;if(si>=70)&&(si<80) )p2+;if(si&
35、gt;=80)&&(si<90) )p3+;if(si>=90)&&(si<=100) p4+;/*【習題7.685】編寫函數(shù),從小到大依次求出能整除m 的各整數(shù),并存放在數(shù)組 d 中,這些除數(shù)的個數(shù)由 n 返回。例如,若 m=20 ,則 有 6 個數(shù)能整除它,依次是1,2,4,5,10,20。*/ void func(int m, int d, int *n) int i,j;for(i=1;i<=m;i+)if(m%i=0)dj=i,j+;*n=j;/*【習題 7.755】通信時經(jīng)常用到加密技術(shù),把消息加密后再傳輸。編寫一個用于加密消
36、息的函數(shù),把字符串 str 中的小寫字母改成“(其 ASCII 碼加上字符串 key 中每個字符ASCII 碼的平方)除以128所得的余數(shù)”作為ASCII 碼對應(yīng)的字符,其它的字符不變,其中str 稱為消息原文,key 稱為密鑰。請思考:如何解密恢復原文,這種加密方法能準確地恢復原文嗎*/void func(char *str,char *key)/* 功能:用 key 作為密鑰對字符串 str 進行加密處理*/int i,j,k;for(i=0;keyi!='0'i+)k=k+keyi*keyi;for(j=0;strj!='0'j+) if(strj<
37、='z')&&(strj>= 'a') ) strj=(strj+k)%128;int min(int x, int y, int z)/* 返回 3 個整數(shù) x,y 和 z 中最小的數(shù)*/if(x>y)x=y;if(x>z)x=z;return(x);/*【習題 8.011 】請編寫函數(shù) func(char s, char t, int n) ,t 中。由數(shù)組 s 中長度為 n 的字符序列構(gòu)造其逆序列,并存儲在數(shù)組例如,由給定字符序列 s="are"求得逆序列t="era"由s=&quo
38、t;time 求得 t="emit" 。*/void func(char s, char t, int n)/* 數(shù)組 s 的前 n 個元素存放給定的字符序列,數(shù)組 t 的前 n 個元素存放 s 的逆序列。注意:數(shù)組的下標從0 開始。*/ int i;for(i=0;i<n;i+) ti=sn-1-i;/*【習題 8.012】請編寫函數(shù) func(char*s, char *t) ,由字符串s構(gòu)造其逆串t。例如,由給定串s="are"求得逆串t="era"由 s="time" 求得 t="emit&
39、quot; 。*/ void func(char *s, char *t)/* s 是給定字符串的起始地址,t 是求得 s 的逆串的起始地址*/int i,j;for(j=0;sj!='0'j+)Jfor(i=0;i<j;i+) ti=sj-1-i;/*【習題8.015】對長度為n的字符串si,除首、尾字符外,將s2。其余字符按ASCII 碼降序排列,組合成一個新的字符串*/ void func(char *s1, char *s2, int n)/* s1 為字符串的起始地址,s2 為新字符串的起始地址,n 為字符串的長度。要求: s1 串不能發(fā)生改變,s2 串存放新的
40、字符串。*/int i,j;char t;n=strlen(s1);for(i=0;i<n;i+)*(s2+i)=*(s1+i);for(j=1;j<n-2;j+)for(i=1;i<=n-2-j;i+) if(*(s2+i)<*(s2+i+1) t=*(s2+i);(s2+i)=*(s2+i+1);(s2+i+1)=t;/*【習題8.016】對字符串si,除首、尾字符外,將其余字符按 ASCII 碼降序排列,組合成一個新的字符串 */s2。void func(char *s1, char *s2) int n;n=strlen(s1);int i,j,k;char t
41、;for(i=0;i<n;i+)s2i=s1i;s2i='0'for(i=1;i<n-1;i+)k=i;for(j=i+1;j<n-1;j+)if(s2k<s2j) k=j;t=s2i;s2i=s2k;s2k=t;/*【習題 8.020】在字符串 s 中查找字符c,首次出現(xiàn)在字符串 s 中的位置指針;否則,返回空指針*/返回空指針NULL 。char *match(char *s, char c)/* 返回字符在串 s 中首次出現(xiàn)的位置指針int i;for(i=0;si!='0'i+)if(si=c)return(s+i);*/retu
42、rn(NULL);/* 8.030 先編寫一個判斷素數(shù)的函數(shù)。再編寫一個函數(shù)將一個偶數(shù)表示為兩個素數(shù)之和,并返回其中較小的素數(shù)。注:素數(shù)指只能被 1 和自身整除的正整數(shù)。規(guī)定0, 1 不是素數(shù)。*/int prime(int n)/* 判斷素數(shù),如果是素數(shù)返回1,不是素數(shù)則返回0 */ int t;if(n=1)return 0;for(t=2;t<=(n/2);t+)if(n%t=0)return 0;return 1;int f(int i)/* 將偶數(shù) i 表示為兩個素數(shù)之和,返回其中較小的素數(shù)*/int n;for(n=3;n<=i;n+)if(prime(i-n)&
43、;&prime(n)return n;/*【習題8.033】編寫函數(shù),計算年份year 中第 yearday 天相應(yīng)的月和日。例如,調(diào)用函數(shù)month_day(2000,61,&m,&d) 之后, m=3 ,d=1 ,即 2000 年的第 61 天是 3 月 1 日。*/ int month_day(int year, int yearday, int *pmonth, int *pday)/* year 是年,yearday 是天數(shù),若 year 和 yearday 合理,則*pmonth和*pday是計算得出的月和日,函數(shù)返回1;否則,函數(shù)返回 0 。*/int s
44、12=31,28,31,30,31,30,31,31,30,31,30,31,m ;if(year%4=0&&year%100!=0|year%400=0) s1=29;if(year<1|yearday<1|(s1=28&&yearday>365)|(s1=29&&yearday>366) return 0;elsefor(m=0;yearday-sm>0&&m<12;m+) yearday-=sm;if(yearday=0)m=m-1;yearday=sm;*pmonth=m+1;pday=
45、yearday;return 1;/*【習題 8.044】請編寫一個函數(shù) func ,通過略去非數(shù)字字符,將字符串s 轉(zhuǎn)換為一個整數(shù)(不得調(diào)用C 語言提供的將字符串轉(zhuǎn)換為整數(shù)的函數(shù)*/long func(char *s)/* s 是一個數(shù)字字符串的地址,函數(shù)返回值為由s含有的數(shù)字字符轉(zhuǎn)換得到的數(shù)(包含正負數(shù)情況)。*/int i,j=1,k=0,flag=1;long n=0;for(i=0;si;i+)if(si='+'&&flag)flag=0;j=1;if(si='-'&&flag)flag=0;j=-1;if(si>
46、47&&si<58)n=n*10;n=n+(si-'0');if(n) flag=0;n=n*j;return n;/* 8.050 編寫函數(shù),將字符串中 ASCII 碼最小的字符放在第一 個字符位置,其余字符依次往后移。*/void func(char *str)/* 將字符串 str 中 ASCII 碼最小的字符放在第一個*/* 字符位置,其余字符依次往后移。 */int i=1,m=0,k;for(m=0,i=1;stri!='0'i+)if(strm>stri)m=i; k=strm;for(i=m-1;i>=0;i-)
47、stri+1=stri;str0=k;nxn 的二維數(shù)組按“次對角線”翻轉(zhuǎn)。翻轉(zhuǎn)后的數(shù)組9 6 3->8 5 2/* 8.060 編寫函數(shù)將一個例如:翻轉(zhuǎn)前的數(shù)組123456*/void invert(char aNN)int i,j;int bNN;for(i=0;i<N;i+)for(j=0;j<N;j+) bij=aN-1-jN-i-1;for(i=0;i<N;i+)for(j=0;j<N;j+)aij=bij;/* 8.064 編寫函數(shù)將一個NxN 的二維數(shù)組“水平”翻轉(zhuǎn)。例如:翻轉(zhuǎn)前的數(shù)組 翻轉(zhuǎn)后的數(shù)組1237894 5 6 ->4 5 6789123*/void invertH(char aNN)int i,j;int bNN;for(i=0;i<N;i+)for(j=0;j<N;j+)bij=aN-i-1j;for(i=0;i<N;i+)for(j=0;j<N;j+)aij=bij;/* 8.065 編寫函數(shù)將一個NxN 的二維數(shù)組“垂直”翻轉(zhuǎn)。例如:翻轉(zhuǎn)前的數(shù)組翻轉(zhuǎn)后的數(shù)組1233214 5 6->
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 旅游行業(yè)運營與服務(wù)管理案例分析題庫及解答指導
- 證券投資分析與風險管理知識考點
- 擴大宣傳效益內(nèi)容梳理條款協(xié)議
- ××超市版權(quán)合規(guī)制度
- 我心中的英雄形象:小學生寫人作文9篇
- 美國國立衛(wèi)生研究院(NIH)公共獲取的案例解析及啟示
- 雨后彩虹的約定:童話色彩的故事展現(xiàn)美好愿景8篇
- 2025年甲肝滅活疫苗項目立項申請報告模板
- 2025年德語TestDaF口語模擬試卷:歷年真題解析與備考策略
- 2025年電子商務(wù)師(初級)職業(yè)技能鑒定試卷:電商行業(yè)發(fā)展趨勢分析
- 心絞痛培訓課件
- 保險行業(yè)發(fā)展趨勢和機遇
- 注塑加工廠管理
- 邊坡作業(yè)安全教育培訓
- 《2025年CSCO腎癌診療指南》解讀
- 小學語文跨學科主題學習策略研究
- 2022-2023學年浙江省溫州市永嘉縣人教PEP版四年級下冊期末測試英語試卷
- 東盟經(jīng)貿(mào)文化與習俗知到智慧樹章節(jié)測試課后答案2024年秋海南外國語職業(yè)學院
- 國家開放大學??啤渡鐣{(diào)查研究與方法》期末紙質(zhì)考試總題庫2025春期考試版
- 2024年設(shè)備監(jiān)理師考試題庫及答案(歷年真題)
- 財務(wù)指標分析培訓課件
評論
0/150
提交評論