《C程序设计》课程期末上机考试
考试时间:50分钟 考试方式:从下面的20题中随机抽取一题,再附加一题,共需完成2道题。
附加题不事先给定
分值分配:第一题60分,第二题40分,共100分 考试时间:2015.1.22 具体时间与安排见通知
1. 请编写函数long fun(long int x),功能是:将长整型数x中每一位上为奇数的
数依次取出,并逆序构成一个新数返回。例如:程序运行时输入1234567,输出:b=97531。 #include int a=0,b,m; while(x!=0) { m=x%10; if(m%2!=0) a=(a+m)*10; a=a/10; } b=a/10; returen(b); } void main() {long a,b; printf(\"Please input a long int num:\"); scanf(\"%ld\ b=fun(a); printf(\"b=%ld\\n\} 2. 编写函数void fun(char *s,char *t,char *p)将未在字符串s中出现、而在字 符串t中出现的字符, 形成一个新的字符串放在p中,p中字符按原字符串中字符顺序排列,但去掉重复字符。 例如: 当s为\"12345\为\"8624677\"时, p中的字符为: \"867\"; 当s为”good luck”,t为”thank you very much”时,输出:”thanyverm” #include void fun(char *s,char *t,char *p) { 1 int i,j,k=0,log; for(i=0;t[i]!='\\0';i++) { log=1; for(j=0;s[j]!='\\0';j++) if(t[i]==s[j]) log=0; for(j=0;p[j]!='\\0';j++) if(t[i]==p[j]) log=0; if(log) { p[k]=t[i]; k++; p[k]='\\0'; } } } void main() {char s1[50],s2[50],s3[50]; gets(s1);gets(s2); fun(s1,s2,s3); puts(s3); } 3. 编写函数int fun(int m),计算并返回满足表达式:1+(1+2)+(1+2+3)+(1+2+3+4)+„„+(1+2+3+„„+n)<=m最大的n。例如,当m=10000时,程序输出:n=38。 #include int i,a=0,sum=0; for(i=0;sum<=m;i++) { a=a+i; sum=sum+a; } return(i-2); } void main() {int x; 2 scanf(\"%d\ printf(\"n=%d\\n\} 4. 编写函数void fun(int *x,int n),它的功能是:删除有n个数据的数组x 中所有包含数字6的数据,后续的剩余元素赋值为-1。n为数组长度,规定x中数据都为正数。 如程序运行时若输入:122 1461 6234 16 11 663 911 2671 381 6 删除后输出: 122 11 911 381 -1 -1 -1 -1 -1 -1 #define N 10 #include void fun(int *x,int n) { int i,j=0,k,t; for(i=0;i t=k%10; if(t==6) break; else k=k/10; } if(k==0) x[j++]=x[i]; } for(;j for(i=0;i 3 } 5. 编写函数long fun(int high,int n),功能是:计算并返回high以内(不包含 high)最大的n个素数之和。若不足n个,则到最小素数2为止。例如:若high=100,n=10,则函数的返回值为:732;若high=11,n=10,则函数返回:17。 #include long fun(int high,int n) { int i,j,x,num=0,sum=0; for(i=high-1;i>=2;i--) { x=sqrt(i); for(j=2;j<=x;j++) if(i%j==0)break; if(j>x) { sum=sum+i; num++; } if(num==n)break; } return(sum); } void main() {int k,n; scanf(\"%d%d\ printf(\"sum=%ld\\n\} 6. 请编写函数int fun(int *a,int n),它的功能是:把形参a所指数组中的偶数 按原顺序依次存放到a[0]、a[1]、a[2]、„„中,把奇数从数组中删除,偶数个数通过函数值返回,以-1作为有效数据的结束标志。例:若输入:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15,输出:2 4 6 8 10 12 14 n=7 #include int i,j=0; for(i=0;i 4 j++; } a[j]=-1; return(j); } void main() {int x[15],i,n; for(i=0;i<15;i++) scanf(\"%d\ n=fun(x,15); for(i=0;x[i]!=-1;i++) printf(\"%d \ printf(\"n=%d\\n\} 7.给定程序中,函数fun的功能是:有M×N二维数组,分别将每一行的最大值与本 行的最后一个数据(第N-1列数据)对调,其余数据保持不变。然后按每一行的最大值对二维数据各行降序排序。例如,有右侧数组数据: 11 52 43 4 25 22 求最大值并对调后:11 22 43 4 25 52 22 33 46 58 16 47 22 33 46 47 16 58 83 42 54 26 47 0 0 42 54 26 47 83 4 5 6 7 8 9 4 5 6 7 8 9 45 96 17 18 39 2 45 2 17 18 39 96 排序后最终输出: 45 2 17 18 39 96 0 42 54 26 47 83 22 33 46 47 16 58 11 22 43 4 25 52 4 5 6 7 8 9 #define N 6 #define M 5 #include int i,j,k,m,t,max; for(i=0;i<5;i++) { max=a[i][0]; m=0; for(j=1;j<6;j++) 5 { if(maxmax=a[i][j]; m=j; } } t=a[i][m]; a[i][m]=a[i][5]; a[i][5]=t; } for(k=0;k<4;k++) for(i=0;i<4-k;i++)
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo9.cn 版权所有 赣ICP备2023008801号-1
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务