c语言上机考试题201007.doc_第1页
c语言上机考试题201007.doc_第2页
c语言上机考试题201007.doc_第3页
c语言上机考试题201007.doc_第4页
c语言上机考试题201007.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

C程序设计课程期末上机考试考试时间:50分钟考试方式:从下面的20题中随机抽取一题,再附加一题,共需完成2道题。附加题不事先给定分值分配:第一题60分,第二题40分,共100分考试时间:第十八周 1. 编写函数long fun(long x),它的功能是:将长整型参数x中每一位上为偶数的数依次取出,构成一个新数返回。高位仍在高位,低位仍在低位。例如:下面程序运行时输入:124578902,程序输出:24802. #includelong fun(long x) 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。 #includevoid fun(int k,int *p) void main() int x,a17=0,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。#include#define N 10 void fun(int *x,int n) void 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);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) 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。 #includeint fun(int x,long int y) 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所指的字符数组中,然后返回此最长字符串的长度。 #define N 30 #includeint fun(char (*ss)N,int m,char *s) void main() char a8N,bN;int i,len;for(i=0;i8;i+)gets(ai);len=fun(a,8,b);printf(len=%d,str=%sn,len,b); 7. 编写函数int countw(char *str),统计字符串str中单词的个数。单词之间以空格,逗号,句号作分隔,数字也看做单词。单词之间可能不止一个分隔符。如输入: Its 10:10 oclock ,I am late.屏幕上输出There are 6 words. #includeint countw(char *str) 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) 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 void fun(int x,int k,int *p) void main() int a,b,n1000,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#include int fun(int a,int b) void main() int num,a,b;scanf(%d%d,&a,&b);num=fun(a,b);printf(num=%dn,num); 11. 编写函数void fun(char *s),功能:在s所指字符串中每两个字母之间加一个*,其余字符保持不变。例如,下面程序运行时,若输入:I had 123_book. 输出:I h*a*d 123_b*o*o*k. #includevoid fun(char *s) void main() char x80;gets(x);fun(x);puts(x);12. 编写函数int fun(int k),功能:从5个红球, 6个白球,7个黑球中任意取出k(2k18)个球作为一组进行组合。在每组中,可以没有红球和白球,但必须要有黑球。不同组合的数目作为函数值返回。例如,若k为8时,正确的组合数是31;若k为2时,正确的组合数是3;或k为3时,正确的组合数是6 。 #includeint fun(int k) void main() int x,n;scanf(%d,&x);n=fun(x);printf(n=%dn,n);13. 编写函数void fun(char *str),功能:对形参str所指字符串中的字符按ASCII码升序排序。例如,下面程序运行时输入:The C Programming Language 输出: CLPTaaaeegggghimmnnorru #includevoid fun(char *str) void main() char s100;gets(s);fun(s);puts(s);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) void 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); 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)void 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);16. 编写函数int fun(char *str),功能是:统计字符串str中不同字符的个数并做为函数值返回。例如,下面程序运行时若输入:One world,One dream! 输出:n=13#includeint fun(char *str)void main()char s80; int n; gets(s); n=fun(s); printf(n=%dn,n);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) void 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);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) void main() char c180,c280;gets(c1);fun(c1,c2,6);puts(c2);puts(fun(c1,c2,30);19. 编写函数void fun(char *s,char *b,char *c),逐个比较a、b两个字符串对应位置中的字符,把ASCII值大或相等的字符依次存放到c数组中,形成一个新的字符串。例如,若a中的字符串为aBCDeFgH,b中的字符串为:ABcd,则c中的字符串应为:aBcdeFgH。 #includechar *fun(char *str) void main() char s80;gets(s);puts(fun(s);20. 编写函数void fun(char *s),将s所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符和非数字字符原有的前后次序。例如,若输入:num is 0532-66ouc78,OK. 执行结果为:num is -ouc,OK.05326678 #includevoid fun(char *s) void main() char a80;gets(a);fun(a);puts(a);. #include long fun(long x) int j,num,re; j=1; re=0; while(x0) num=x%10; x=x/10; if(num%2=0) re+=num*j; j*=10; return re; void main() long a,b; printf(Enter a number:); scanf(%ld,&a); b=fun(a); printf(b=%ldn,b); 2.#includevoid 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=0,i;doprintf(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.#define N 10 void fun(int *x,int n) int Max=*x,i; int *str,SecMax; for(i=1;in;i+) if(Max*(x+i) Max=*(x+i); str=x+i; *str=*x; *x=Max; SecMax=*(x+1); for(i=2;in;i+) if(SecMax*(x+i) SecMax=*(x+i); str=x+i; *str=*(x+1); *(x+1)=SecMax; void 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);4.5.#include#define N 10int fun(int x,long int y) long sum,T; int i; for (i=0,sum=1,T=1; ;i+) T*=x; sum+=T; if (sum=y) break; return i; void main() int x;long y;scanf(%d%ld,&x,&y);printf(n=%dn,fun(x,y);6.#include#define N 30 int fun(char (*ss)N,int m,char *s) int Max,i; Max=strlen(*ss); for(i=1;im;i+) if(Maxstrlen(*(ss+i) Max=strlen(*(ss+i); strcpy(s,*(ss+i); return Max; void main() char a8N,bN;int i,len;for(i=0;i8;i+) gets(ai);len=fun(a,8,b);printf(len=%d,str=%sn,len,b);7.#includeint countw(char *str) int count=0; char * _str=str; int i; while(isspace(*str+) for(i=0;istrlen(str)-1;i+) *(str+i)=*(str+i+1); -str; while(*str!=0) while(*str!=0&!isspace(*str)str+;while(isspace(*+str) for(i=0;istrlen(str);i+) *(str+i)=*(str+i+1); str-; while(*_str!=0) if(isspace(*_str) count+; _str+; return count+1; void main() char s200;gets(s);printf(There are %d words.n,countw(s); 8.#includevoid fun(char *str) int i; while(isspace(*str+) for(i=0;istrlen(str)-1;i+) *(str+i)=*(str+i+1); -str; while(*str!=0)while(*str!=0&!isspace(*str)str+;while(isspace(*+str) for(i=0;istrlen(str);i+) *(str+i)=*(str+i+1); str-; void main() char s100;puts(Enter a string:);gets(s);fun(s);puts(s); 9.#include#includevoid fun(int x,int k,int *p) int count=0; int n,i; for(n=x+1;count=k;n+) int flag=1; for(i=2;i=n/2&flag=1;i+) if(n%i=0)flag=0; while(flag) count+; *p=n; p+; break; void main() int a,b,n1000,i;scanf(%d%d,&a,&b);fun(a,b,n);for(i=0;ib;i+)printf(%d ,ni);puts();10.#include#include int fun(int a,int b) int i,j,k,n=0,bw,sw,gw,xs; for(i=a;ib;i+) for(j=2;ji;j+) if(i%j=0) break; if(i=j) bw=i/100; sw=(i-bw*100)/10; gw=i-i/10*10; xs=gw*100+sw*10+bw; for(k=2;kxs;k+) if(xs%k=0) break; if(xs=k) n+; return n; void main() int num,a,b;scanf(%d%d,&a,&b);num=fun(a,b);printf(num=%dn,num); 11.#includevoid fun(char *a,char *b) int n=0; while (*a) *b=*a; a+; b+; n+; if (n%3=0) *b=#;b+; *b=0; void main() char x80,y120;gets(x);fun(x,y);puts(y); 12.#includeint fun(int k) int count=0,x,y; for(x=1;x=3;x+) for(y=1;y=0) count+;continue; break; return count; void main() int x,n;scanf(%d,&x);n=fun(x);printf(n=%dn,n);13.#includevoid fun(char *str) int i,n; char temp; int len=strlen(str); for(i=0;ilen-1;i+) for(n=i+1;n*(str+n) temp=*(str+i); *(str+i)=*(str+n); *(str+n)=temp; void main() char s100;gets(s);fun(s);puts(s);14.#include void fun(int *a,int n,int y) int i,j; int *p; for(i=0;iy) a+; continue; break; for(j=n-i;j0;j-) *(a+j)=*(a+j-1); *a=y; void 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); 1 编写函数long fun(long x),它的功能是:将长整型参数x中每一位上为偶数的数依次取出,构成一个新数返回。高位仍在高位,低位仍在低位。例如:下面程序运行时输入:124578902,程序输出:24802. long y=0;int z,i=1;while(x!=0)z=x%10;if(z%2=0)y+=z*i;i*=10;x=x/10;return y;2编写函数void fun(int k,int *p),功能是:将参数k(2k32767)所有的不相同质因子升序写入p所指的一维数组中,以-1作为所有质因子的结束标志。例如:下面程序运行时若输入200,输出:2 5;若输入27720,输出:2 3 5 7 11;若输入101,输出101。int a,b,i;b=0; for(a=2;a=k;a+) for(i=2;isqrt(a)&k%a=0) pb=a;b+; pb=-1; 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。int i,p,m;for(p=0,i=1;in;i+)if(*(x+p)*(x+i)p=i;if(p!=0)m=*x;*x=*(x+p);*(x+p)=m;for(p=1,i=2;in;i+)if(*(x+p)*(x+i)p=i;if(p!=1)m=*(x+1);*(x+1)=*(x+p);*(x+p)=m;4数组x中保存有n个正整数, 编写函数int fun(int *x,int n),对数组x进行如下操作:当xi不是最后一个元素时,用xi+xi+1取代xi,即x0被x0+x1取代,x1被x1+x2代替当xi是数组最后一个元素时,xi被xi+x0代替,即xn-1=xn-1+x0,然后对数组进行升序排序,并统计奇数个数返回。例如,下面程序若输入:3 5 2 7 9 11 21 9 输出:7 8 9 12 16 20 30 32 n=2int i,j,t=*x;for(i=0;in-1;i+)*(x+i)+=*(x+i+1);*(x+i)+=t;for(i=0;in-1;i+)for(j=i+1;j*(x+j)t=*(x+i);*(x+i)=*(x+j);*(x+j)=t;for(i=0,j=0;in;i+)if(*(x+i)%2!=0)j+;return j;5编写函数int fun(int x,long int y),功能:计算满足表达式x0+x1+x2+.+xny的最大的n并作为函数返回值带回。例如,当x=2,y=1000时,程序输出8。int i,j,num;long sum; sum=0; for(i=1;i+) num=1;for(j=1;jy) break; return(i-1);6编写函数int fun(char (*ss)N,int m,char *s),功能是:形参ss指向一个m行N列的二维字符数组,每行存放一个字符串。求出最长的字符串,复制到s所指的字符数组中,然后返回此最长字符串的长度。int i,j,t,max=0,a;for(i=0;im;i+) t=0; for(j=0;jN;j+) if(*(*(ss+i)+j)=0) break; t=t+1; if(maxt)max=t;a=i; 7编写函数int countw(char *str),统计字符串str中单词的个数。单词之间以空格,逗号,句号作分隔,数字也看做单词。单词之间可能不止一个分隔符。如输入: Its 10:10 oclock ,I am late.屏幕上输出There are 6 words. int i,p=0,n=0;char c;for(i=0;(c=*(str+i)!=0;i+)if(c= |c=,|c=.)p=0;else if(p=0)n+;p=1;return n;8编写函数void fun(char *str),功能:字符串str中单词以空格作分隔,如果单词之间不止一个空格,则删除多余的空格,使单词之间只保留一个空格。字符串开始的空格也只保留一个。例如,程序运行时若输入: Its 10:10 oclock , I am late. 输出: Its 10:10 oclock , I am late. int i,j,p=0;for (i=0;*(str+i)!=0;i+)if (*(str+i)= &p=1)for(j=i;*(str+j)!=0;j+)*(str+j)=*(str+j+1);i-;else if(*(str+i)= )p=1;else p=0;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 int i,j,t=0,q;for (i=(x+1)/2*2+1;tk;i=i+2)q=sqrt(i);for(j=2;jq)*(p+t)=i;t+;10编写函数int fun(int a,int b),在a,b范围内统计满足下面条件的数的个数。条件:该数是素数,且该数逆序后形成的数也是素数。例如,在100,150范围内101 107 113 131 149 满足条件,则下面程序运行时输入100 150,输出:num=5。int m,j,n,k,i,p=0;for(m=a;m=b;m+)k=sqrt(m);for(i=2;i=k;i+)if(m%i=0)break;if(i=k)continue;j=m;n=0;while(j!=0)k=j/10;n=10*n+j-k*10;j/=10;k=sqrt(n);for(i=2;ik)p+;return p;11编写函数void fun(char *a,char *b),功能:将a所指字符串中的所有字符复制到b中,要求每复制三个字符之后插入一个#。例如,下面程序运行时,若输入:ABCDEFGHIJK 输出:ABC#DEF#GHI#JKint i=0,j=0,k=0;for(;*(a+i)!=0;i+)*(b+i+j)=*(a+i);k+;if(k%3=0)*(b+i+(+j)=#;*(b+i+j)=0;12编写函数int fun(int k),功能:从3个红球, 5个白球,6个黑球中任意取出k(2k13)个球作为一组进行组合。在每组中,可以没有黑球,但必须要有红球和白球。不同组合的数目作为函数值返回。例如,若k为8时,正确的组合数是15;若k为2时,正确的组合数是1;或k为3时,正确的组合数是3 。int i,j,n=0;for (i=1;i=3&ik;i+)for(j=1;j=5&j=k-i;j+)if(k=i+j+6)n+;return n;13编写函数void fun(char *str),功能:对形参str所指字符串中的字符按ASCII码升序排序。例如,下面程序运行时输入:The C Programming Language 输出: CLPTaaaeegggghimmnnorruchar c;int i,j;for(i=1;*(str+i)!=0&*(str+i-i)!=0;i=i+)for(j=0;ji;j=j+)if(*(str+i)=0;i-)if(*(a+i)*(a+i+1

温馨提示

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

评论

0/150

提交评论