国家二级C语言机试考试试题.doc_第1页
国家二级C语言机试考试试题.doc_第2页
国家二级C语言机试考试试题.doc_第3页
国家二级C语言机试考试试题.doc_第4页
国家二级C语言机试考试试题.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

试题1改错计算大于100的前10个素数之和。程序如下:#include void main() int i,j,n,s; n=0; s=1; /*$ERROR1$*/ for(i=101;i+=2) for(j=2;ji/2) s+=i; n+; if(n!=10) /*$ERROR3$*/ break; printf(s=%dn,s);参考答案:1. s=0;2. break;3. if(n=10)程序填空输入一个大于1的正整数,将其分解成质因数的乘积(质因数即素数因子),并按下例中的格式输出。请填空。例如:#include void main() long i,n; printf(Input n:); scanf(%ld,_); /*$BLANK1$*/ printf(Output:%d=, n); i=2; while(in) if(n%i=0) printf(%ld*,i); n=_; /*$BLANK2$*/ else i+; printf(%ldn,_); /*$BLANK3$*/参考答案:1.&n2.n/i3.i程序设计白马百担问题有100匹马驮100担货,大马驮4担,中马驮3担,5匹下马驮1担。问三种马各有几匹?注意:1. 大、中、小马都必须有;2. 问题的解只有一种。输出格式:Big=30,mid=40,small=30参考程序一:void main()int a,b,c;for(a=1;a=25;a+)for(b=1;b=33;b+)for(c=5;c=100;c+=5)if(a*4+b*3+c/5=100 & a+b+c=100)PRINT(a,b,c);参考程序二:void main()int a,b,c;for(a=1;a=25;a+)for(b=1;b=33;b+) if(c=100-a-b,a*4+b*3+c/5=100)PRINT(a,b,c);试题2改错从键盘输入一个不多于4位的十进制正整数,求出它是几位数。如输入528,则结果为n=3.程序如下:#includevoid main()int x,n;scanf(“%d”,x); /*$ERROR1$*/if(x=1000)printf(“Data Error!n”);elseif(x=10) n=1; /*$ERROR2$*/else if(x100) n=2;else if(x1000) n=3;n=4; /*$ERROR3$*/printf(“n=%dn”,n);参考答案:1. scanf(“%d”,&x);2. if(x10) n=1;3. else n=4;程序填空输出一下图形(字符”*”之间没有空格,第一行之前有一个空格)。请填空。 * * * *程序如下:#includevoid main()int i,j;for(i=1;i=_;i+) /*$BLANK1$*/for(j=1;j=_;j+) /*$BLANK2$*/printf(“ “);for(j=1;j30000) break;f1=f2;f2=f;f=f2;PRINT(f);参考程序二void main()long f1,f2,f,i;f1=f2=1;f=2;for(i=2;f30000;i+)f=f1+f2;f1=f2;f2=f;f=f1;PRINT(f);参考程序三void main()long t40=1,1,f;int i;for(i=2;i40;i+)ti=ti-1-ti-2;for(i=0;i=30000) break;f=ti-1;PRINT(f);参考程序四void main()long f1,f2,f;f1=f2=1;for (f=2;f30000;f=f1+f2)f1=f2;f2=f;f=f2;PRINT(f);试题3改错在屏幕上输出以下图形(说明:第一行之前有3个空格,星号之间无空格)。 * * * * *程序如下:#include#includevoid main()int i,j; for(i=-3;i=3;i+) j=1; /*$ERROR1$*/ while(jabs(i) printf(“ “); j+; j=0; while(j=7-2*abs(i) /*$ERROR2$*/ printf(“ “);i+; /*$ERROR3$*/printf(“n”);参考答案:1. j=0;2. while(j7-2*abs(i)3. j+;程序填空以下程序的功能是:输出所有的“水仙花数”,并输出“水仙花数”的个数。所谓“水仙花数”是指一个三位数,其各位数字的立方和等于该数本身。例如153是一个“水仙花数”,因为153=1*1*1+5*5*5+3*3*3。请填空。程序如下:#includevoid main() int i,a,b,c,n; n=_; /*$BLANK1*/for(i=101;i=999;i+) a=i%10; b=i/10%10;c=_; /*$BLANK2$*/if(a*a*a+b*b*b+c*c*c=i) printf(“%6d”,i); _; /*$BLANK3$*/ printf(“nn=%dn”,n);参考答案1. 02. i/1003. n+或+n程序设计求19002010之间各位数不是7的所有素数之和。输出格式:s=23456参考程序一:void main() long s=0; int i,j; for(i=1901;i2010;i+=2) for(j=2;ji/2 & i%10!=7) s+=I; PRINT(s);参考程序二:void main()long s=0; int i,j; for(i=1901;i2010;i+=2) if(i%10!=7) for(j=2;ji/2) s+=i; PRINT(s);试题4改错计算100300之间满足下列条件的数之和。(1) 能被3整除;(2) 个位数是7.程序如下:#includevoid main()Int I,sum;Sum=1; /*$ERROR1$*/For(i=100;i=1000的最小n的值。请填空。#includeVoid main()Int I,n,s:S=_; /*$BLANK1$*/I=1;While(s1000)s=_; /*$BLANK2$*/i+;n=_; /*$BLANK3$*/printf(“n=%dn”,n);参考答案:1. 02. s+i3. i-1程序设计编写程序,计算各位数字之和等于15的三位数之和。输出格式:S=1234参考程序一:Void main()Long s=0;Int a,b,c;For(a=1;a=9;a+)For(b=0;b=9;b+)For(c=0;c=9;c+)If(a+b+c=15) s+=a*100+b*10+c;Print(s);参考程序二:Void main()long s=0;int i;for(i=100;i=1000;i+)if(i/100+i/10%10+i%10=15)s+=i;Print(s);试题5改错输出一维数组中最大元素及其下标值。#includevoid main() int a10=-3,1,-5,4,9,0,-8,7,-6,2; int i,max,addr; max=a0; addr=1; /*$ERROR1$*/ i=1; while(i=10) /*$ERROR2$*/ if(maxai) max=ai; i=addr; /*$ERROR3$*/ i+; printf(max=%d,address=%dn,max,addr);参考答案:1. addr=0;2. while(i10)3. addr=i;程序填空从键盘输入一个学生成绩,输出对应的等级(100分为A,9099为B,8089为C,7079为D,6069为E,小于60为F),如果输入成绩小于0分或大于100分,输出提示信息”Input Error!”。#include void main() int g; printf(Enter a mark:); scanf(%d,_); /*$BLANK1$*/ if(g100) printf(Input Error!n); else printf(g=%d:,g); switch(_) /*$BLANK2$*/ case 10:printf(An);break; case 9:printf(Bn);break; case 8:printf(Cn);break; case 7:printf(Dn);break; case 6:printf(En);break; _:printf(Fn); /*$BLANK3$*/ 参考答案:1. &g2. g/103. default程序设计计算900到2010之间所有能被11整除的奇数之和。(要求用循环实现)输出格式: sum=2345678参考程序一:void main()long sum=0;int i;for(i=901;i2010;i+=2)if(i%11=0) sum+=I;PRINT(sum);参考程序二:void main()long sum=0;int i;for(i=902;i2010;i+=11)if(i%2=i) sum+=i;PRINT(sum);参考程序三:void main()long sum=0;int i;for(i=900;i2010;i+)if(i%2=i & i%11=0) sum+=i;PRINT(sum);参考程序四:void main()long sum=0;int i;for(i=913;i=2010;i+=22) sum+=i;PRINT(sum);试题6改错计算:1-2/(1+2)+3/(1+2+3)-4/(1+2+3+4)+n/(1+2+3+n)的值。(假设本体中你的值从键盘输入,且大小在10以内。)#include void main() int i,j,n,a; double s=0; printf(please enter n=); scanf(%d,n); /*$ERROR1$*/ for(i=1;i=n;i+) a=1; /*$ERROR2$*/ for(j=1;j=i;j+) a=a+j; if(i%2=0) /*$ERROR3$*/ s=s+1.0*i/a; else s=s-1.0*i/a; printf(%fn,s);参考答案:1. scanf(“%d”,&n);2. a=0;3. if(i%2!=0)程序填空#include #define N 10struct student char num20; int score;void main( ) struct student stN= 0906050401,99,0906050402,76, 0906050501,80,0906050502,68, 0906050503,76,0906050504,64, 0906050506,98,0906050508,79, 0906050509,64,0906050510,98; int i; int _; /*$BLANK1$*/ min=st0.score; for(i=1;i_) /*$BLANK2$*/ min=sti.score; for(i=0;i_;i+) /*$BLANK3$*/ if(min=sti.score) printf(%stt%dn,sti.num,sti.score);参考答案:1. min2. sti.score3. N程序设计根据下式求s的值(要求用循环实现):s=1/2-2/3+3/4-4/5+5/6-/6/7+99/100输出格式: s=0.1234参考程序一:void main()double s;int i;flag=1;s=0;for(i=1;i=99;i+) s=s+1.0*i/(i+1)*flag;flag=-flag;PRINT(s);参考程序二:void main()double s;int i;s=0;for(i=1;i=99;i+)if(i%2)s=s+1.0*i/(i+1);elses=s-1.0*i/(i+1);PRINT(s);试题7改错将数组中的数从小到大排序后输出,要求:所有数据输出在一行,且每个数据占5列。#includevoid main() int a11=7,9,-6,10,50,32,24,-15,1,88,29; int i,j,k; for(j=0;j10;j+) for(i=0;i10-j;i+) if(aiai+1) /*$ERROR1$*/ k=ai+1; /*$ERROR2$*/ ai=ai+1; ai+1=k; for(i=0;iai+1)2. k=ai;3. printf(“%5d”,ai);程序填空9个评委给某个选手打分(分数存于数组a中),去掉一个最高分和一个最低分,求该选手的平均分。#include void main() int i; float a9,max,min,ave; printf(Input array:n); for(i=0;i9;i+) scanf(%f,_); /*$BLANK1$*/ max=min=ave=_; /*$BLANK2$*/ for(i=1;i9;i+) ave+=ai; if(maxai) _; /*$BLANK3$*/ ave=(ave-max-min)/7; printf(Mark=%.3fn,ave);参考答案:1. &ai2. a03. min=ai程序设计根据下式求s的值(要求用循环实现):s=1+1/(1+2)+1/(1+2+3)+1/(1+2+3+4)+1/(1+2+3+n)说明:本题以n=30为例。参考程序一:void main() double s; int i,j,h;for(i=1;i=30;i+)h=0;for(j=1;j=ij+)h=h+j;s=s+1.0/h;PRINT(s);参考程序二:void main() double s; int i;for(i=1;i=30;i+)s+=2.0/i/(i+1);PRINT(s);试题8改错计算1+(1+2)+(1+2+3)+(1+2+3+4)+.+(1+2+3+n)的值。#includevoid main() long s,t; int i,j,n; scanf(%d,n); /*$ERROR1$*/ s=1; /*$ERROR2$*/ for(i=1;i=n;i+) t=0; j=1; while(j=n) /*$ERROR3$*/ t+=j; j+; s=s+t; printf(s=%ldn,s); 参考答案:1. scanf(“%d”,&n);2. s=0;3. while(j=i)程序填空从键盘输出10个数存于数组a中,求最大数和此大数(假设10个数各不相同)。#include void main() int i,max1,max2,a10; printf(Input array:n); for(i=0;ia1) max1=a0;max2=a1; else max1=a1;max2=a0; for(i=2;i10;i+) if(max1ai) max2=_; /*$BLANK2$*/ max1=ai; else if(max2ai) max2=_; /*$BLANK3$*/ printf(max1=%d,max2=%dn,max1,max2);参考答案:1. &ai2. max13. ai程序设计某果农有一车苹果,第一天卖掉2/3,并吃了2个,第二天卖掉了剩下2/3,并吃了2个,第三天到第七天都是如此,到第八天只剩下五个苹果。求此车共装有多少苹果(要求用循环实现)。输出格式: s=23456参考程序:void main()int i,s=5;for(i=1;i8;i+)s=(s+2)*3;PRINT(s);试题9改错将字符串str1和str2合并成一个新字符串str,然后输出字符串str。#include #include void main() char str130,str230,str80; int i=0,j=0; printf(Enter the first string:); gets(str1); printf(Enter the second string:); gets(str2); while(str1i) stri=str1i; i+; while(str2j) stri+=str2j; i+; /*$ERROR1$*/ stri=0; /*$ERROR2$*/ printf(str:%cn, str); /*$ERROR3$*/参考答案:1. j+;2. stri=0;3. printf(“str:%sn”,str);程序填空调用swap()函数交换两个变量的值。#include void swap(int *x,int *y) int _; /*$BLANK1$*/ t=*x; *x=_; /*$BLANK2$*/ *y=t; void main( ) int a,b; printf(Input a,b:n); scanf(%d,%d,&a,&b); printf(a=%d,b=%dn,a,b); swap(&a,_); /*$BLANK3$*/ printf(a=%d,b=%dn,a,b);参考答案:1. t2. *y3. &b程序设计编程满足下列条件的最小的正整数。(1) 大于400;(2) 加上2是6的倍数;(3) 加上3是7的倍数。输出格式:n=789参考程序:void main( )int n=400;while(1)If(n+2)%6=0 & (n+3)%7=0)break;else n+;PRINT(n);试题10改错下面给定程序中,fun()函数的功能是,判断字符串s中是否包含字符ch,若不包含则将其插入到字符串s的最后。#include #include void fun(char s,char ch) /*$ERROR1$*/ while(*s&*s!=ch) s+; if(*s=0) /*$ERROR2$*/ s0=ch; s1=n; /*$ERROR3$*/ void main() char str81,ch; printf(n Please enter a string:n); gets(str); printf(n Please enter the character to search:); ch=getchar(); fun(str,ch); printf(nThe result is %sn,str);参考答案:1. void fun(char *s,char ch)2. if(*s=0)3. s1=0;程序填空从键盘输入两个正整数,并输出它们的最大公约数。#include int gcd(int m,int n) int r,t; if(m0) r=m%n; m=n; n=r; return(_); /*$BLANK2$*/ void main() int m,n,result; printf(Pease input two number:n); scanf(%d%d,_); /*$BLANK3$*/ result=gcd(m,n); printf(result=%dn,result);参考答案:1. n=t2. m3. &m,&n程序设计根据下式求s的值(要求使用循环实现);S=2+4+8+16+32+64+128+65536说明:每一项都是2的n(n=1,2,3,)次幂。参考程序一void main() long s=0,t=1;int i;for(i=1;i=16;i+) t*=2; s+=t; PRINT(s);参考程序二long s=1;int i;for(i=1;i=17;i+)s*=2;s-=2;PRINT(s);试题11改错定义min函数,并调用min函数求数组中最小值。#include int min(int x,int n) int k,j; k=0; /*$ERROR1$*/ for(j=1;jxj) k=xj; return ; /*$ERROR2$*/ void main() int i,m,a10; printf(nplease enter 10 integer numbers:n); for(i=0;i10;i+) scanf(%d,&ai); m=min(a0,10); /*$ERROR3$*/ printf(min=%dn,m); 程序填空以下程序的功能是删除字符串s(已知)中的所有数字字符后输出该字符串。#include #in

温馨提示

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

评论

0/150

提交评论