上机考试题2014春季学期答案_第1页
上机考试题2014春季学期答案_第2页
上机考试题2014春季学期答案_第3页
上机考试题2014春季学期答案_第4页
上机考试题2014春季学期答案_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

aaC程序设计课程期末上机考试考试时间:50分钟考试方式:从下面的20题中随机抽取一题,再附加一题,共需完成2道题。附加题不事先给定分值分配:第一题60分,第二题40分,共100分考试时间:第十七周周二与周三,2014年6月24、25号 1. 编写函数long fun(long x),它的功能是:将长整型参数x中每一位上为偶数的数依次取出,构成一个新数返回。高位仍在高位,低位仍在低位。例如:下面程序运行时输入:124578902,程序输出:24802. #includelong fun(long x) int n=10,m=0; while (x) int t=x%10; if(t%2=0) m+=t*n/10; n*=10; x/=10; return m;void main() long a,b; printf(Enter a number:); scanf(%ld,&a); b=fun(a); printf(b=%ldn,b); 2. 编写函数void fun(int k,int *p),功能是:将参数k(2k32767)所有的不相同质因子升序写入p所指的一维数组中,以-1作为所有质因子的结束标志。例如:下面程序运行时若输入200,输出:2 5;若输入27720,输出:2 3 5 7 11;若输入101,输出101。 #include void fun(int k,int *p) int j=2,n=0; do if (k%j=0) pn=j; n+; while(k%j=0) k=k/j; j+; while (j=k); pn=-1; int main() int x,a17,i; do printf(Enter a number(2-32767):); scanf (%d,&x); while(x2); fun(x,a); for(i=0;ai!=-1;i+) printf(%d ,ai); printf(n); 3. 编写函数void fun(int *x,int n),功能是:求出长度为n的数组x中的最大数与次最大数,并把最大数和a0对调,次最大数与a1对调,其余的数保持不变。下面程序运行时若输入:2 4 6 1 3 9 7 0 5 8,则输出:9 8 6 1 3 2 7 0 5 4。#define N 10 void fun(int *x,int n) int i,j,k,temp;for(i=0;i2;i+) k=i;for(j=i+1;jn ; j +)if(*(x+k)*(x+j) k=j;if(k!=i)temp=*(x+k);*(x+k)=*(x+i);*(x+i)=temp; int main() int aN,i; for(i=0;iN;i+) scanf(%d,a+i); fun(a,N); for(i=0;iN;i+) printf(%d ,ai); printf(n); return 0; 4. 数组x中保存有n个整数, 编写函数int fun(int *x,int n,float *w),对数组x进行如下操作:从第0个元素起对每5个元素求一个平均埴,并将这些均值依次存放在w所指的数组中。函数返回平均值的个数。例如:若输入n为14,14个数据为:11 21 35 24 55 16 27 58 18 0 11 12 13 14,则只为前10个求均值,输出结果为:29.20 23.80#includeint fun(int *x,int n,float *w) int i,j,s;for(i=0;i(n/5);i+)s=0;for(j=i*5;j(i*5+5);j+)s=s+*(x+j);*(w+i)=s/5.0;return (n/5);void main()int a30,i,n,m;float b6;printf(Input a number: );scanf(%d ,&n);for(i=0;in;i+)scanf(%d,&ai);m=fun(a,n,b);for(i=0;im;i+)printf(%0.2f ,bi);printf(n); 5. 编写函数int fun(int x,long int y),功能:计算满足表达式x0+x1+x2+.+xny的最大的n并作为函数返回值带回。例如,当x=2,y=1000时,程序输出8。#include #include int fun(int x,long int y) int i; long s=0; for(i=0;i+) if(sy) s=s+pow(x,i); else break; return(i-2); void main()int x;long y;scanf(%d%ld,&x,&y);printf(n=%dn,fun(x,y); 6. 编写函数int fun(char (*ss)N,int m,char *s),功能是:形参ss指向一个m行N列的二维字符数组,每行存放一个字符串。求出最长的字符串,复制到s所指的字符数组中,然后返回此最长字符串的长度。 #include#include#define N 30int fun(char (*ss)N,int m,char *s)int i,j,k;s=ss0;for(i=0;im;i+)if(strlen(s)strlen(ssi)s=ssi;j=strlen(s);printf(str=%s ,s);return j;void main()char a8N,bN;int i,len;for(i=0;i8;i+)gets(ai);len=fun(a,8,b);printf(len=%d,len); 7. 编写函数int countw(char *str),统计字符串str中单词的个数。单词之间以空格,逗号,句号作分隔,数字也看做单词。单词之间可能不止一个分隔符。如输入: Its 10:10 oclock ,I am late.屏幕上输出There are 6 words. #includeint countw(char *str)char c;int i=0,num=0,word=0;while(c=stri)!=0)if(c= )word=0;else if(word=0)word=1;num+;i+;return num;void main()char s200;gets(s);printf(There are %d words.n,countw(s); 8. 编写函数void fun(char *str),功能:字符串str中单词以空格作分隔,如果单词之间不止一个空格,则删除多余的空格,使单词之间只保留一个空格。字符串开始的空格也只保留一个。例如,程序运行时若输入: Its 10:10 oclock , I am late. 输出: Its 10:10 oclock , I am late. #includevoid fun(char *str) int i,t; for(i=0;stri!=0;i+) if(stri= &stri+1= ) for(t=i+1;strt!=0;t+) strt=strt+1; strt+1=0; i-; void main()char s100; puts(Enter a string:); gets(s); fun(s); puts(s); 9. 函数void fun(int x,int k,int *p)的功能是:求出比x大的最初k(k1000)个素数,放入p所指数组中。例如:程序运行时输入:10 10,输出:11 13 17 19 23 29 31 37 41 43 #include#includevoid fun(int x,int k,int *p)int i,m=0,n;x=x+1;n=sqrt(x);while(mk)for(i=2;i=n)pm=x;m+;x+;n=sqrt(x);void main()int a,b,n1000=0,i;scanf(%d%d,&a,&b);fun(a,b,n);for(i=0;ib;i+)printf(%d ,ni);puts( );10. 编写函数int fun(int a,int b),在a,b范围内统计满足下面条件的数的个数。条件:该数是素数,且该数逆序后形成的数也是素数。例如,在100,150范围内101 107 113 131 149 满足条件,则下面程序运行时输入100 150,输出:num=5。#include#includeint fun(int a,int b) int c100=0,i,t,j=0,l,m,d=0,x,s;long int k;for(m=a;m=b;m+) k=sqrt(m); for(i=2;i=k+1) cj+=m;putchar(n);for(i=0;ij;i+) m=ci; for(k=0;)m=m/10;if(m=0) break;k+; t=k;l=k; for(s=0,k=0;k=t;k+) x=ci%10; ci=ci/10;s=s+x*pow(10,l-); ci=s;for(i=0;ci!=0;i+) k=sqrt(ci); for(j=2;j=k+1) d+; return(d); int main() int num,a,b;scanf(%d%d,&a,&b);num=fun(a,b);printf(num=%dn,num); return 0; 11. 编写函数void fun(char *s),功能:在s所指字符串中每两个字母之间加一个*,其余字符保持不变。例如,下面程序运行时,若输入:I had 123_book. 输出:I h*a*d 123_b*o*o*k. #includevoid fun(char *s) int i, j; int len = 0; #define is_char(x) (x = a) | (x= A) while(slen+); for(i = 1; si; i +) if(is_char(si) & is_char(si-1) for(j = len; j i; j -) sj = sj-1; len +; si = *; int main() char x80;gets(x);fun(x);puts(x); return 0;12. 编写函数int fun(int k),功能:从5个红球, 6个白球,7个黑球中任意取出k(2k18)个球作为一组进行组合。在每组中,可以没有红球和白球,但必须要有黑球。不同组合的数目作为函数值返回。例如,若k为8时,正确的组合数是31;若k为2时,正确的组合数是3;或k为3时,正确的组合数是6 。 #includeint fun(int k) inti,j,h,s;for(i=1,s=0;i=7;i+)for(j=0;j=6;j+)for(h=0;h=5;h+)if(i+j+h=k)s+;returns; int main() int x,n;scanf(%d,&x);n=fun(x);printf(n=%dn,n); return 0;13. 编写函数void fun(char *str),功能:对形参str所指字符串中的字符按ASCII码升序排序。例如,下面程序运行时输入:The C Programming Language 输出: CLPTaaaeegggghimmnnorru #includevoid fun(char *str) int i,j,t; for(i=0;stri!=0;i+) for(j=i+1;strj!=0;j+) if(strjstri) t=strj;strj=stri;stri=t; int main() char s100;gets(s);fun(s);puts(s); return 0;14. 请编写函数void fun(int *a, int n, int y),它的功能是:把y值插入到有n个数的a数组中,a数组中的数已按由大到小的次序排好,y的值从键盘读入。 插入后,数组中的数仍然有序。对照下面三种情况运行程序: 1) 插在最前2) 插在最后 3) 插在中间 若输入数11, 输出 20 18 16 14 12 11 10 8 6 4 2 输入数1, 输出 20 18 16 14 12 10 8 6 4 2 1 输入数33, 输出 33 20 18 16 14 12 10 8 6 4 2 #include void fun(int *a,int n,int y) int i,j; if(ya0) for(i=n;i=0;i-) ai=ai-1; a0=y; else for(i=0;in;i+) if(yai+1) for(j=n;j=i+2;j-) aj=aj-1; ai+1=y; break; int main() int i,a11=20,18,16,14,12,10,8,6,4,2,x; void fun(int *,int n,int y); scanf(%d,&x); fun(a,10,x); for(i=0;i11;i+)printf(%d ,*(a+i); return 0; 15. 编写函数int fun(char *s1,char *s2),在字符串s1中统计字符串s2出现的次数并返回。若s2在s1中未出现,则返回0。例如:若输入的字符串s1为:abaaAabcaabbabca,字符串s2为:ab ,则程序输出:n=4若输入的字符串s1为:abaaAabcaabbabca,字符串s2为:abd,则程序输出:No find#include#includeint fun(char *s1,char *s2)int i,j,p,n,num=0; for(i=0;s2i!=0;i+); n=i; for(i=0;s1i!=0;i+) if(s1i=s20) p=1; for(j=i+1;s2p!=0;j+,p+) if(s1j!=s2p) break; if(p=n) num+; return num; int main() char a80,b80; int n; printf(Please input the first string:); gets(a); printf(Please input the second string:); gets(b); n=fun(a,b); if(n=0)printf(No findn); else printf(n=%dn,n); return 0;16. 编写函数int fun(char *str),功能是:统计字符串str中不同字符的个数并做为函数值返回。例如,下面程序运行时若输入:One world,One dream! 输出:n=13#includeint fun(char *str)int i,j,num=1; for(i=1;stri!=0;i+) for(j=0;ji;j+) if(stri=strj) break; if(j=i) num+; return num; int main()char s80; int n; gets(s); n=fun(s); printf(n=%dn,n); return 0;17. 编写函数int fun(int m,int n,int *p),要求将范围m,n之间所有的fibonacci数写入p所指的一维数组中,fibonacci数的个数通过函数返回值带回。例如,0,30之间的fibonacci数有7个,它们是:1 2 3 5 8 13 21 ;1000,32767之间有7个,它们是:1597 2584 6765 10946 17711 28657 。 #includeint fun(int m,int n,int *p) int i,j,s,a1000=1,2; for(i=2;i1000;i+) ai=ai-1+ai-2; for(i=0,j=0,s=0;i=m&ai=n) pj=ai; j+; s+; return s; int main() int a,b,n,c22,i;scanf(%d%d,&a,&b);n=fun(a,b,c);for(i=0;in;i+)printf(%6d,ci);printf(nn=%dn,n);return 0;18. 编写函数char *fun(char *s1,char *s2,int n),将字符串s1中后面的n个字符复制到s2所指数组中,若s1不足n个字符,则用*在前端补齐至n个字符,写入s2中。函数返回字符串s2的指针。例如,下面程序运行时,若输入:“abcd1234”和6,则输出“cd1234” 若输入:“abcd1234”和10,则输出“*abcd1234” #includechar *fun(char *s1,char *s2,int n) int i,j,m; for(i=0;s1i!=0;i+); m=i; if(m=n) for(j=0,i=m-n;j=n-1;i+,j+) s2j=s1i; s2n=0; else for(j=0;jn-m;j+) s2j=*; for(i=0,j=n-m;i=m-1;i+,j+) s2j=s1i; s2n=0; return s2; int main() char c180,c280;gets(c1);fun(c1,c2,6);puts(c2);p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论