




已閱讀5頁,還剩46頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
C Anyview 7-9章作業(yè)參考答案/*【習(xí)題7.010】寫一函數(shù)求3個整數(shù)中最小的數(shù)。*/int min(int x, int y, int z)/* 返回3個整數(shù)x,y和z中最小的數(shù) */ if(xy) x=y; if(xz) x=z; return x; /*【習(xí)題7.020】編寫函數(shù),求用1元、5元和10元三種紙幣支付n元錢共有多少種支付法? 例如,16元可有6種支付方法: 方法 1 2 3 4 5 6 10元 0 0 0 0 1 1 5元 0 1 2 3 0 1 1元 16 11 6 1 6 1*/int change(int n) int i,j,k,m=0; for(i=0;i=n;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; /*【習(xí)題7.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;nstri) m=i; k=strm; for(i=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 0 0 0 1 1 1 2 1 1。*/void main() int i,j; for(j=0;j 8 5 2 7 8 9 7 4 1*/void invert(char aNN) int i,j;int bNN; for(i=0;iN;i+) for(j=0;jN;j+) bij=aN-1-jN-i-1; for(i=0;iN;i+)for(j=0;j 4 5 6 7 8 9 1 2 3*/void invertH(char aNN) int i,j;int bNN;for(i=0;iN;i+)for(j=0;jN;j+)bij=aN-i-1j; for(i=0;iN;i+)for(j=0;j 6 5 4 7 8 9 9 8 7*/void invertV(char aNN) int i,j;int bNN;for(i=0;iN;i+)for(j=0;jN;j+)bij=aiN-1-j; for(i=0;iN;i+)for(j=0;j 1 5 9 7 8 9 4 7 8*/void turningAnticlockwise(char aNN) int i; char t=a00; for(i=0;iN-1;i+) a0i=a0i+1; for(i=0;iN-1;i+) ai2=ai+12; for(i=0;i 6 4 5 7 8 9 9 7 8*/void turningRight(char aNN) int bNN,i,j;for(i=0;iN;i+)for(j=1;jN;j+)bi0=aiN-1,bij=aij-1; for(i=0;iN;i+) for(j=0;j 5 6 4 7 8 9 8 9 7*/void turningLeft(char aNN) int bNN,i,j;for(i=0;iN;i+)for(j=0;jN-1;j+)biN-1=ai0,bij=aij+1; for(i=0;iN;i+) for(j=0;j 1 2 3 7 8 9 4 5 6*/void turningDown(char aNN) int bNN,i,j;for(i=1;iN;i+)for(j=0;jN;j+)b0j=aN-1j,bij=ai-1j; for(i=0;iN;i+) for(j=0;j 7 8 9 7 8 9 1 2 3*/void turningUp(char aNN) int bNN,i,j;for(i=0;iN-1;i+)for(j=0;jN;j+)bN-1j=a0j,bij=ai+1j; for(i=0;iN;i+) for(j=0;jN;j+) aij=bij;/*【習(xí)題7.103】編寫函數(shù),求整數(shù)m和n的最大公約數(shù),并作為函數(shù)的返回值。*/ int gdc(int m, int n) int a,r; if(mn) a=m,m=n,n=a; while(r=m%n)!=0) m=n;n=r; return n;/*【習(xí)題7.105】 編寫函數(shù),求整數(shù)m和n的最小公倍數(shù),并作為函數(shù)的返回值。*/int lcm(int m, int n) int t,r,h; h=m*n; if(mn) 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ù)的功能是:把字符串s中所有小寫字母轉(zhuǎn)換為大寫字母,其他字符不變。例如,當s=68abcdEFGhijkLM86時,轉(zhuǎn)換后s=68ABCDEFGHIJKLM86。請僅在空缺處填入合適內(nèi)容,使其實現(xiàn)上述功能。*/void main() int i; /* 1 */i=0; ; while(i=a & *(s+i)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; 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-; /*【習(xí)題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=10) k/=10,i+; for(j=1;j=i;j+) m=m*10; n=n-k*m; return n;/*【習(xí)題7.175】編寫函數(shù),求n以內(nèi)(不包括n)同時能被3與7整除的所有自然數(shù)之和的平方根,并作為函數(shù)值返回。例如,若n為100時,函數(shù)返回值應(yīng)為14.49138。*/float func(int n) int i;float s; for(i=0;in;i+) if(i%3=0&i%7=0) s=s+i; s=sqrt(s); return(s);/*【習(xí)題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; return (s);/*【習(xí)題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;in。例如:m=12,n=8時,運行結(jié)果為495.000000。*/float func(int m, int n) int 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); /*【習(xí)題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=eps;i+) x=x*i; y=y*(2*i+1); z=z+x/y; z=2*z+2; return(z);/*【習(xí)題7.265】編寫函數(shù),將數(shù)組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+; /*【習(xí)題7.275】假定字符串s中可能含有字符*。請編寫函數(shù),若字符串s的尾部連續(xù)的*多于n個,則刪除多余的*。例如,若s=*A*BCDE*F*且n=4,則調(diào)用函數(shù)后,字符串s=*A*BCDE*F*;若n7,則字符串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(tn) k=t-n; sc-k=0; /*【習(xí)題7.315】編寫函數(shù),求出1到n之間(含n)能被7或11整除的所有整數(shù)并依次存入數(shù)組a中,函數(shù)值為這些數(shù)的個數(shù)。例如,若n=15,則依次存入數(shù)組a中的數(shù)為7、11和14,函數(shù)值為3。*/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);/*【習(xí)題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+) if(i%c=0)&(i%d=0) aj=i,j+; return(j);/*【習(xí)題7.325】假設(shè)數(shù)組a存放了n個人的年齡。編寫函數(shù),用數(shù)組c統(tǒng)計各年齡段的人數(shù),其中c0為0至9歲年齡段的人數(shù),c1為10至19歲年齡段的人數(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=100)c10+;else b=ai/10; cb+;/*【習(xí)題7.335】假設(shè)字符數(shù)組a中存放了按由小到大連續(xù)存放的字符構(gòu)成的字符串(后跟一個0作為結(jié)束符)。編寫函數(shù),刪去字符串中所有重復(fù)的字符(各自只保留一個),并使得保留的字符仍構(gòu)成一個字符串(連續(xù)存放,0作為結(jié)束符)。函數(shù)返回a中保留的字符串長度。例如,若a中的字符串值為: AAABBCDFFFHHHKLMMM則刪除重復(fù)字符之后,函數(shù)返回值為9,a中的字符串值為: ABCDFHKLM*/int func(char a) int i; /while(ai!=0) /i+; char c26;int j=1,k; c0=a0; 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); /*【習(xí)題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(si= )&(si+1= ) ) j-; return(j);/*【習(xí)題7.355】假定字符串s中可能含有字符*。請編寫函數(shù),將字符串s中前導(dǎo)*全部移到字符串的尾部。例如,若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 break; for(i=k;si!=0;i+) bj=si; j+; for(i=0;ij+k;i+) if(ij) si=bi; else si=*; si=0; /*【習(xí)題7.513】編寫函數(shù),計算并返回數(shù)組a中頭n個元素的乘積。 */long func(int a, int n) int i,s=1; for(i=0;in;i+) s=s*ai; return(s);/*【習(xí)題7.523】編寫函數(shù),計算并返回數(shù)組a中頭n個元素的平方和。 */long func(int a, int n) int i,s; for(i=0;in;i+) s=s+ai*ai; return (s);/*【習(xí)題7.533】假設(shè)某班選舉班長,k位候選人的號碼分別為1至k,n張選票已存入數(shù)組v(每個元素值在1至k之間)。編寫函數(shù),用數(shù)組c統(tǒng)計各位候選人的得票(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;in;i+)cvi+;/*【習(xí)題7.535】假設(shè)某班選舉班長,k位候選人的號碼分別為1至k,n張選票已存入數(shù)組v(每個元素值在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;i5;i+) ci=0; for(i=0;in;i+) cvi+; max=c0; for(i=1;i=k;i+) if(max0) di=n%10,i+; n=n/10; return(i);/*【習(xí)題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;ij;i+) di=aj-i-1; return j;/*【習(xí)題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) num0+; 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+; /*【習(xí)題7.675】假設(shè)在數(shù)組s中存放了n位學(xué)生的成績。編寫函數(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;i5;i+) pi=0; for(i=0;in;i+) if(si=60)&(si=70)&(si=80)&(si=90)&(si=100) p4+;/*【習(xí)題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;/*【習(xí)題7.755】通信時經(jīng)常用到加密技術(shù),把消息加密后再傳輸。編寫一個用于加密消息的函數(shù),把字符串str中的小寫字母改成“(其ASCII碼加上字符串key中每個字符ASCII碼的平方)除以128所得的余數(shù)”作為ASCII碼對應(yīng)的字符,其它的字符不變,其中str稱為消息原文,key稱為密鑰。請思考:如何解密恢復(fù)原文,這種加密方法能準確地恢復(fù)原文嗎?*/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= a) ) strj=(strj+k)%128;int min(int x, int y, int z)/* 返回3個整數(shù)x,y和z中最小的數(shù) */ if(xy) x=y; if(xz) x=z; return(x); /*【習(xí)題8.011】請編寫函數(shù)func(char s, char t, int n),由數(shù)組s中長度為n的字符序列構(gòu)造其逆序列,并存儲在數(shù)組t中。例如,由給定字符序列s=are求得逆序列t=era;由s=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;in;i+)ti=sn-1-i;/*【習(xí)題8.012】請編寫函數(shù)func(char*s, char *t),由字符串s構(gòu)造其逆串t。例如,由給定串s=are求得逆串t=era;由s=time求得t=emit。*/void func(char *s, char *t) /* s是給定字符串的起始地址, t是求得s的逆串的起始地址*/ int i,j; for(j=0;sj!=0;j+) ; for(i=0;ij;i+)ti=sj-1-i;/*【習(xí)題8.015】對長度為n的字符串s1,除首、尾字符外,將其余字符按ASCII碼降序排列,組合成一個新的字符串s2。*/void func(char *s1, char *s2, int n)/* s1為字符串的起始地址, s2為新字符串的起始地址, n為字符串的長度。 要求:s1串不能發(fā)生改變, s2串存放新的字符串。*/ int i,j; char t; n=strlen(s1); for(i=0;in;i+) *(s2+i)=*(s1+i); for(j=1;jn-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; /*【習(xí)題8.016】對字符串s1,除首、尾字符外,將其余字符按ASCII碼降序排列,組合成一個新的字符串s2。*/void func(char *s1, char *s2)int n; n=strlen(s1); int i,j,k; char t; for(i=0;in;i+) s2i=s1i; s2i=0; for(i=1;in-1;i+) k=i; for(j=i+1;jn-1;j+) if(s2ks2j) k=j; t=s2i; s2i=s2k; s2k=t; /*【習(xí)題8.020】在字符串s中查找字符c,如果找到,返回字符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); return(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
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國文件閱讀器行業(yè)市場調(diào)研分析及投資戰(zhàn)略咨詢報告
- 2025年中國智能手機電感市場運營態(tài)勢及發(fā)展前景預(yù)測報告
- 稅務(wù)師美姍沖刺課件
- 2025年 西安齊力鐵路技工學(xué)校招聘考試筆試試題附答案
- 2025年 祿豐市焊工證理論考試練習(xí)題附答案
- 香滑綠豆蓉行業(yè)深度研究分析報告(2024-2030版)
- 中國通信控制處理機行業(yè)市場全景調(diào)研及投資規(guī)劃建議報告
- 2025年 常德漢壽縣事業(yè)單位招聘考試筆試試題附答案
- 2020-2025年中國濃香型白酒行業(yè)市場調(diào)查研究及未來發(fā)展趨勢報告
- 中國??谑蟹康禺a(chǎn)行業(yè)市場深度分析及投資策略咨詢報告
- 水資源規(guī)劃及利用智慧樹知到答案章節(jié)測試2023年長春工程學(xué)院
- HAND-成本模塊:移動平均成本-系統(tǒng)操作
- 中醫(yī)養(yǎng)生夏季養(yǎng)生知識科普講座PPT教學(xué)課件
- GB/T 32893-201610 kV及以上電力用戶變電站運行管理規(guī)范
- GB 17681-1999易燃易爆罐區(qū)安全監(jiān)控預(yù)警系統(tǒng)驗收技術(shù)要求
- 魚骨圖分析方法及培訓(xùn)課件
- 監(jiān)理抽檢表-11交通安全設(shè)施工程
- 部編版一年級語文下冊知識點總結(jié)歸納(全冊)
- 市委辦招考人員筆試試題
- 贛州市贛縣縣鄉(xiāng)鎮(zhèn)街道社區(qū)行政村統(tǒng)計表
- 《苯的同系物》名師教案
評論
0/150
提交評論