




已阅读5页,还剩34页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Anyview习题/*【习题7.010】写一函数求3个整数中最小的数。*/int min(int x, int y, int z)/* 返回3个整数x,y和z中最小的数 */ int min; min=xy?y:x; if(minz) min=z; return min;/*【习题7.020】编写函数,求用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,t=0; for(i=0;i=n/10;i+) k=(n-i*10)/5; for(j=0;j=k;j+) t+; return t;/*【习题7.030】先编写一个判断素数的函数。再编写一个函数将一个偶数表示为两个素数之和,并返回其中较小的素数。注:素数指只能被1和自身整除的正整数。规定0,1不是素数。*/int prime(int n) /* 判断素数,如果是素数返回1,不是素数则返回0 */ int k; if(n2) return 0; for(k=2;k=n/2;k+) if(n%k=0) return 0; return 1;int f(int i) /* 将偶数i表示为两个素数之和,返回其中较小的素数*/ int j,min; for(j=2;j=i/2;j+) if(prime(j)&prime(i-j) min=j; break; return min; /*【习题7.050】编写函数,将字符串中ASCII码最小的字符放在第一个字符位置,其余字符依次往后移。*/void func(char *str)/* 将字符串str中ASCII码最小的字符放在第一个 */* 字符位置,其余字符依次往后移。 */ int i,k; char temp=str0; for(i=0;stri!=0;i+) if(stri0;i-) stri=stri-1; str0=temp;/* 7.051 系统给定外部字符串s和整型数组c26(不需要自行定义)。编写程序,将字符串s中26个字母(不区分大小写)出现的次数依次统计到数组c中。例如,当s=“AbcijKaBcdEXyzuvwx”时,数组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,k; for(i=0;iN;i+) for(j=0;j 4 5 6 7 8 9 1 2 3*/void invertH(char aNN) int temp,i,j; for(i=0;iN-i;i+) for(j=0;j 6 5 4 7 8 9 9 8 7*/void invertV(char aNN) int i,j,temp; for(i=0;iN;i+) for(j=0;j 7 5 3 7 8 9 8 9 6*/void turningClockwise(char aNN) int i; int flog=1; int t=a0N-1; for(i=N-1;i0;i-) a0i=a0i-1; for(i=0;iN-1;i+) ai0=ai+10; for(i=0;i0;i-) aiN-1=ai-1N-1; a1N-1=t;/*【习题7.068】编写函数将一个NxN的二维数组的周边元素“逆时针”轮转1位。例如:轮转前的数组 轮转后的数组 1 2 3 2 3 6 4 5 6 - 1 5 9 7 8 9 4 7 8*/void turningAnticlockwise(char aNN) int i; int t=aN-10; for(i=N-1;i0;i-) ai0=ai-10; for(i=0;iN-1;i+) a0i=a0i+1; for(i=0;i0;i-) aN-1i=aN-1i-1; aN-11=t;/*【习题7.072】编写函数将一个NxN的二维数组a的元素按行向右轮转1位。例如:轮转前的数组 轮转后的数组 1 2 3 3 1 2 4 5 6 - 6 4 5 7 8 9 9 7 8*/void turningRight(char aNN) int i,j,t; for(i=0;i0;j-) aij=aij-1; ai0=t; /*【习题7.075】编写函数将一个NxN的二维数组a的元素按行向左轮转1位。例如:轮转前的数组 轮转后的数组 1 2 3 2 3 1 4 5 6 - 5 6 4 7 8 9 8 9 7*/void turningLeft(char aNN) int i,j,t; for(i=0;iN;i+) t=ai0; for(j=0;j 1 2 3 7 8 9 4 5 6*/void turningDown(char aNN) int i,j,t; for(i=0;i0;j-) aji=aj-1i; a0i=t; /*【习题7.085】编写函数将一个NxN的二维数组a的元素按列向上轮转1位。例如:轮转前的数组 轮转后的数组 1 2 3 4 5 6 4 5 6 - 7 8 9 7 8 9 1 2 3*/void turningUp(char aNN) int i,j; int tN; for(i=0;iN;i+) ti=a0i; for(i=0;iN-1;i+) for(j=0;jN;j+) aij=ai+1j; for(i=0;in?n:m); for(i=min;i=1;i-) if(m%i!=0)|(n%i!=0) continue; if(m%i)=0&(n%i=0) k=i; return k; /*【习题7.105】 编写函数,求整数m和n的最小公倍数,并作为函数的返回值。*/int lcm(int m, int n) int t,r,l,h; t=m+n; n=nm?n:m; m=t-n; l=m;h=n; while(r=l%h)!=0) l=h; h=r; return m*n/h;/*7.110 系统给定外部字符数组变量s和数组长度n(不需要自行定义)。main函数的功能是:把字符串s中所有小写字母转换为大写字母,其他字符不变。例如,当s=68abcdEFGhijkLM86时,转换后s=68ABCDEFGHIJKLM86。请仅在空缺处填入合适内容,使其实现上述功能。*/void main() int i; i=0/* 1 */ ; while(i=a & *(s+i)0/* 1 */ ) si= n%10+0/* 2 */ ; /* 3 */ ; i+; si=0;/*7.121 系统给定外部长整型变量n和字符数组变量s(不需要自行定义)。main函数的功能是:把n的整数值转换成字符串,并保存在s中。例如,当n=20120826时,由n转换得到s=20120826。请仅在空缺处填入合适内容,使其实现上述功能。*/void main() int i=0,k; char c10; while(n0/* 1 */ ) ci=n%10+0 /* 2 */ ; n/=10; i+; si-=0; k=i; while(i=0) si=ck-i/* 3 */ ; i-; /*【习题7.125】编写函数,对非负浮点数r的值的第三位小数四舍五入,返回保留2位小数的值。例如:若r的值为8.32488,则函数返回8.32;若r的值为8.32533,则返回8.33。*/float func(float r) int t,p; t=(int)(r*1000); p=t%10; r=t/10; r*=0.01; if(p4) r+=0.01; return r; /*【习题7.135】假设n是一个k(k2)位的正整数,编写函数,求出由n的低k-1位构成的数并作为函数值返回。例如:若n值为5923,则函数返回923;若n值为923,则函数返回23。*/int func(int n) int t=0,x=1; while(n9) t+=(n%10)*x; x*=10; n/=10; return t;/*【习题7.175】编写函数,求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根,并作为函数值返回。例如,若n为100时,函数返回值应为14.49138。*/float func(int n) int i,s=0; float ans=0; for(i=7;in;i+) if(i%3=0&i%7=0) s+=i; ans=sqrt(s); return ans;/*【习题7.184】编写函数,根据公式s=1+1/(1+2)+1/(1+2+3)+1/(1+2+3+n)计算s,并作函数值返回。例如:若n的值为11时,函数的值为1.833333。*/float func(int n) float s=0; int sum,i; if(n=0) return s; for(i=1;i=n;i+) sum=i*(i+1)/2; s+=(1.0/sum); return s; /*【习题7.187】编写函数,计算并输出下列级数和:1/(1*2)+1/(2*3)+1/(3*4)+ +1/(n*(n+1),并返回结果。例如,当n=10时,函数值为0.90909。*/float func(int n) int i; float ans=0; if(n=0) return ans; for(i=1;in。例如:m=12,n=8时,运行结果为495.000000。*/float func(int m, int n) int i,t,j,k; if(mn) t=m; m=n; n=t; double s1=1,s2=1,s3=1; double h; for(i=1;i=m;i+) s1*=i; for(j=1;j=n;j+) s2*=j; for(k=1;k=(m-n);k+) s3*=k; h=s1/(s2*s3); return (h);/*【习题7.205】编写函数,计算并返回给定整数n除了1与自身之外的所有因子之和。例如,若n=8,则函数返回6(=2+4)。*/int func(int n) int i=2; int ans=0; for(;i=eps) a*=i; b*=j; PI+=(a/b); i+,j+=2; return 2*PI;/*【习题7.265】编写函数,将数组s所存字符串中下标和ASCII码均为偶数的字符,依次存入数组t中,并构成一个新串。例如,若s中的字符串值为ABCD123456,则t中的串值应为246。*/void func(char s, char t) int i=0; int len=strlen(s); int j=0; for(;ilen;i+=2) if(int)(si)%2=0) tj+=si; /*【习题7.275】假定字符串s中可能含有字符*。请编写函数,若字符串s的尾部连续的*多于n个,则删除多余的*。例如,若s=*A*BCDE*F*且n=4,则调用函数后,字符串s=*A*BCDE*F*;若n7,则字符串s中的内容不变。注意:函数中不得调用C语言提供的字符串函数。*/void func(char s, int n) int i,num; int len=strlen(s); for(i=len-1;i-) if(si!=*) break; num=len-i-1; if(num=n) return ; si+n+1=0; /*【习题7.315】编写函数,求出1到n之间(含n)能被7或11整除的所有整数并依次存入数组a中,函数值为这些数的个数。例如,若n=15,则依次存入数组a中的数为7、11和14,函数值为3。*/int func(int n, int a) int i,t=0; if(n7) return 0; for(i=7;i=n;i+) if(i%7=0|i%11=0) at+=i; return t;/*【习题7.317】编写函数,求出1到n之间(含n)都能被c和d整除的所有整数并依次存入数组a中,函数值为这些数的个数。例如,若n=20,c=2,d=3,则依次存入数组a中的数为6、12和18,函数值为3。*/int func(int n, int c, int d, int a) int i,k=0; i=cd?c:d; for(;in;i+) if(i%c=0&i%d=0) ak=i,k+; return k;/*【习题7.523】编写函数,计算并返回数组a中头n个元素的平方和。 */long func(int a, int n) int i,sum=0; for(i=0;in;i+) sum+=ai*ai; return sum;/*【习题7.335】假设字符数组a中存放了按由小到大连续存放的字符构成的字符串(后跟一个0作为结束符)。编写函数,删去字符串中所有重复的字符(各自只保留一个),并使得保留的字符仍构成一个字符串(连续存放,0作为结束符)。函数返回a中保留的字符串长度。例如,若a中的字符串值为: AAABBCDFFFHHHKLMMM则删除重复字符之后,函数返回值为9,a中的字符串值为: ABCDFHKLM*/int func(char a) int i,t; int len=strlen(a); i=0,t=1; for(;tlen;t+) if(ai=at) continue; else +i,ai=at; ai+1=0; len=strlen(a); return len;/*【习题7.345】假设字符数组s中存放了一行字符串,含有由小写字母组成的若干单词,单词之间由若干个空格隔开(串的开头没有空格)。编写函数,统计一行字符串中单词的个数,并作为函数值返回。*/int func(char s) int num=0,word=0; int i; for(i=0;si!=0;i+) if(si!= &word=0) num+; word=1; else if(si= ) word=0; return num;/*【习题7.355】假定字符串s中可能含有字符*。请编写函数,将字符串s中前导*全部移到字符串的尾部。例如,若s的串值为*A*BC*DEF*G*,移动后,串值应为A*BC*DEF*G*。注意:不得调用C语言提供的字符串函数。*/void func(char s) int i=0; int t; while(1) if(si!=*) t=i;break; i+; for(i=0;si+t!=0;i+) si=si+t; while(t-) si+=*; si=0; /*【习题7.513】编写函数,计算并返回数组a中头n个元素的乘积。 */long func(int a, int n) int i,chengji=1; for(i=0;in;i+) chengji*=ai; return chengji;/*【习题7.523】编写函数,计算并返回数组a中头n个元素的平方和。 */long func(int a, int n) int i,sum=0; for(i=0;in;i+) sum+=ai*ai; return sum;/*【习题7.533】假设某班选举班长,k位候选人的号码分别为1至k,n张选票已存入数组v(每个元素值在1至k之间)。编写函数,用数组c统计各位候选人的得票(ci为i号候选人的得票数)。 */void func(int v, int n, int k, int c) int i,j; for(j=1;j=k;j+) cj=0; for(i=0;in;i+) if(vi=j) cj+; /*【习题7.535】假设某班选举班长,k位候选人的号码分别为1至k,n张选票已存入数组v(每个元素值在1至k之间)。编写函数,用数组c统计各位候选人的得票(ci为i号候选人的得票数),并返回得票最高的人的号码。 */int func(int v, int n, int k, int c) int i=1,j; for(;i=k;i+) ci=0; for(j=0;jn;j+) if(vj=i) ci+; int max=c1,tt=1; for(i=2;i=k;i+) if(maxci) max=ci;tt=i; return tt;/*【习题7.563】编写函数,把长整数n的各位数字从低位到高位依次存储在数组d中,并返回n的位数。例如,若n=2579,则n的位数为4,d0.3=9,7,5,2。*/int func(long n, int d) int t=0; while(n!=0) dt+=n%10; n/=10; return t;/*【习题7.565】编写函数,把长整数n的各位数字从高位到低位依次存储在数组d中,并返回n的位数。例如,若n=2579,则n的位数为4,d0.3=2,5,7,9。*/int func(long n, int d) int i=0; while(n!=0) di+=n%10; n/=10; int len=i; int t; for(i=0;ilen/2;i+) t=di,di=dlen-1-i,dlen-1-i=t; return len; /*【习题7.675】假设在数组s中存放了n位学生的成绩。编写函数,用数组p统计各分数段的人数,其中p0为不足60分的人数,p1为60至69分的人数,p2为70至79分的人数,p3为80至89分的人数,p4为90至100分的人数。*/void func(int s, int n, int p) int i,sc; for(i=0;i5;i+) pi=0; for(i=0;i8) p4+; if(sc=8) p3+; if(sc=7) p2+; if(sc=6) p1+; if(sc6) p0+ ; /*【习题7.685】编写函数,从小到大依次求出能整除m的各整数,并存放在数组d中,这些除数的个数由n返回。例如,若m=20,则有6个数能整除它,依次是1,2,4,5,10,20。*/void func(int m, int d, int *n) int i,k=0; for(i=1;i=m;i+) if(m%i=0) dk+=i; *n=k;/*【习题7.755】通信时经常用到加密技术,把消息加密后再传输。编写一个用于加密消息的函数,把字符串str中的小写字母改成“(其ASCII码加上字符串key中每个字符ASCII码的平方)除以128所得的余数”作为ASCII码对应的字符,其它的字符不变,其中str称为消息原文,key称为密钥。请思考:如何解密恢复原文,这种加密方法能准确地恢复原文吗?*/void func(char *str,char *key)/* 功能:用key作为密钥对字符串str进行加密处理 */ int i,ls,lk; ls=strlen(str); lk=strlen(key); long ss=0; for(i=0;ilk;i+) ss+=keyi*keyi; for(i=0;i=a&striy?y:x; if(minz)min=z; return min;/*【习题8.011】请编写函数func(char s, char t, int n),由数组s中长度为n的字符序列构造其逆序列,并存储在数组t中。例如,由给定字符序列s=are求得逆序列t=era;由s=time求得t=emit。*/void func(char s, char t, int n) /* 数组s的前n个元素存放给定的字符序列, 数组t的前n个元素存放s的逆序列。 注意:数组的下标从0开始。*/ int i; for(i=0;in;i+) tn-i-1=si; /*【习题8.012】请编写函数func(char*s, char *t),由字符串s构造其逆串t。例如,由给定串s=are求得逆串t=era;由s=time求得t=emit。*/void func(char *s, char *t) /* s是给定字符串的起始地址, t是求得s的逆串的起始地址*/ int n,i; n=strlen(s); for(i=0;in;i+) tn-i-1=si; /*【习题8.015】对长度为n的字符串s1,除首、尾字符外,将其余字符按ASCII码降序排列,组合成一个新的字符串s2。*/void func(char *s1, char *s2, int n)/* s1为字符串的起始地址, s2为新字符串的起始地址, n为字符串的长度。 要求:s1串不能发生改变, s2串存放新的字符串。*/ int i,j; s20=s10,s2n-1=s1n-1; for(i=1;in-1;i+) s2i=s1i; for(j=1;js1j) s2i=s1j; /*【习题8.016】对字符串s1,除首、尾字符外,将其余字符按ASCII码降序排列,组合成一个新的字符串s2。*/void func(char *s1, char *s2)int i,j,length;char t;length=strlen(s1);for(i=1;ilength-1;i+) s2i-1=s1i;for(i=0;ilength-3;i+) for(j=0;jlength-3-i;j+) if(s2j0;i-) s2i=s2i-1; s20=s10;s2length-1=s1length-1;/*【习题8.018】以字符串s第m(=0)个字符开始的所有字符,按升序的次序构成字符串t。*/void substr(char *s, int m, char *t)/* s为字符串的起始地址, m=0, t为新字符串的起始地址, 注意:字符串尾字符之后跟随着一个结束符0, 即ASCII码为0的字符,结束符不属于字符串。 要求:s串不能发生改变, t串存放新的字符串。*/ int i=m,j=0; for(;si!=0;i+) tj+= *(s+i) ; tj=0; int l=j; for(i=0;il;i+) int k=i;char tt; for(j=i+1;jtj) k=j; if(i!=k) tt=ti,ti=tk,tk=tt; /*【习题8.020】在字符串s中查找字符c,如果找到,返回字符c首次出现在字符串s中的位置指针;否则,返回空指针NULL。*/char *match(char *s, char c) /* 返回字符在串s中首次出现的位置指针 */ int i=0; char* search= NULL; while(*(s+i) if(*(s+i)= c) search = s+i; break; i+; retur
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年酒店管理招聘面试预测题与实战指南
- 桡骨头骨折课件
- 2025年公务员考试练习题考试练习题及答案指导
- 2025年融媒体舆情分析笔试高频考点解析集
- 桌球培训课程内容
- 2025年篮球规则试题及答案
- 2025年篮球明星试题及答案
- 2025年注册验船师资格考试(A级船舶检验专业案例分析)综合试题及答案二
- 桃红葡萄酒发酵工艺
- 2025年视觉设计岗位面试常见题
- 2023砌体结构后锚固技术规程
- 子宫内膜癌医师教学查房市公开课一等奖课件省赛课获奖课件
- 膝痹中医护理方案效果总结分析报告
- 铸造基础知识及常见铸造缺陷简介演示
- 中式烹调师(高级技师考试资料)
- 仓储技术与库存理论简论
- 日地空间灾害性天气的发生发展和预报研究课件
- 西安大唐不夜城的项目整体推广的策略提案的报告课件
- 可下载打印的公司章程
- 少先队辅导员工作记录表(共7页)
- 公开课教学评价表
评论
0/150
提交评论