08年6月省二级C语言机试模拟题及参考答案_第1页
08年6月省二级C语言机试模拟题及参考答案_第2页
08年6月省二级C语言机试模拟题及参考答案_第3页
08年6月省二级C语言机试模拟题及参考答案_第4页
08年6月省二级C语言机试模拟题及参考答案_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、2008年6月省二级c语言机试模拟题及参考答案一、改错题cc101输入一个不多于4位的正整数,判断它是几位数。如输入124,则输出n=3,如果输入的数小于0或大于9999则输出n=0,请改错。#include <stdio.h>void main()int x,n; scanf("%d",&x); n=1; /*$error1$*/ if(x<=0|x>=10000) printf("data error!n"); else if(x<=10) /*$error2$*/ n=1; else if(x<100)

2、n=2; else if(x<1000) n=3; n=4; /*$error3$*/ printf("n=%dn",n);参考答案error1:n=0; error2: if(x<10) ; error3:else n=4; cc102下面程序是计算1-1/3+1/5-1/7+.的值,直到某项的绝对值小于0.00006为止,请改错。#include <stdio.h>#include <math.h>#define eps 0.00006void main() long i; int sing; double s,t; i=1; s=1

3、; /*$error1$*/ sing=1;t=1; while (fabs(t)<eps) /*$error2$*/ s=s+t; i=i+1; /*$error3$*/ sing=-sing; t=sing*1.0/i; printf("%en",s);参考答案: error1:s=0; error2:while (fabs(t)>=eps) error3:i=i+2;cc103下面的程序是从键盘最多输入10个整数,当遇到第一个能被7整除的数时,就打印此数后退出循环;若未遇到,打印“not exist”,请改错。#include <stdio.h>

4、;void main() int i,x; for(i=1;i<=10;i+) scanf("%f",x); /*$error1$*/ if(x/7=0) /*$error2$*/ printf("%dn",x); continue; /*$error3$*/ if(i>10) printf("not exist ");参考答案: error1:scanf("%d",&x); error2:if(x%7=0) error3:break;cc201以下程序通过指针操作,输入整型数组并对数组进行逆序

5、输出,请改错。#include <stdio.h>void main()int a10,*p; for(p=a;p<a+10;p+) scanf("%d",&p); /*$error1$*/ p=a+10; /*$error2$*/ for(;p>a;p-) /*$error3$*/ printf("%5d",*p);参考答案: error1: scanf("%d",p); error2:p=a+10-1; error3:for(;p>=a;p-)cc202输入一个字符串c,下面程序是删除字符串c

6、中所有数字字符,请改错。#include <stdio.h>#include <math.h> /*$error1$*/void main() int n=0,i; char c80; getchar(c); /*$error2$*/ i=0; while (ci='0') /*$error3$*/ if(ci>='0'&&ci<='9') i+; else cn=ci;n+;i+; cn='0' puts(c);参考答案: error1:#include <string.

7、h> error2:gets(c); error3:while (ci!='0')cc203以下程序的功能是在main函数中求数组的平均值,在主函数中输出平均值,输出格式为:average:10.00,请改错。#include<stdio.h>float mean(int x,int num) /*$error1$*/int i; float avg;for(avg=0,i=0;i<num;i+) avg+=xi; avg%=num; /*$error2$*/ return(avg); void main() int i,a15; for(i=0;i&l

8、t;15;i+) ai=i+3; printf("average:%6.2fn",mean(a); /*$error3$*/ 参考答案: error1:float mean(int *x,int num) error2:avg/=num; error3:printf("average:%5.2fn",mean(a,15);cc301下面程序完成对于给定的数n,计算f(n)的值(本题假设n小于20),f(n)函数定义如下:f(1)=1,f(2)=1,f(n)=f(n-1)+f(n-2)(当n>2时),请改错。#include <stdio.h&

9、gt;#define max 20void main() int n, i; int fmax; /*$error1$*/ printf("input n:"); scanf("%d",n); /*$error2$*/ f1=1;f2=1; for(i=3;i<n;i+) /*$error3$*/ fi=fi-1+fi-2; printf("%dn",fn); 参考答案: error1:int n,i,fmax; error2:scanf("%d",&n); error3:for(i=3;i<=

10、n;i+)cc302下面程序是输出以下图形(输出字符之间无空格,每行第一个字符前也没有空格),请改错。abccdedefgefghi#include <stdio.h>void main() int i,j; i=1; while(i<5) /*$error1$*/ for(j=i;j<2*i;j+) printf("%f",j+64); /*$error2$*/ printf("n"); i-; /*$error3$*/ 参考答案: error1:while(i<6) error2:printf("%c"

11、;,j+64); error3:i+;cc303下面程序是将数组中的数案从大到小排序后输出(输出时每隔数占5列),请改错。#include <stdio.h>void main() int a10=63,10,-47,28,96,2,19,-62,-22,25; int i,j,temp; for (i=0;i<9;i+) for(j=0;j<9-i;j+) if (aj>aj+1) /*$error1$*/ temp= aj; aj= aj+1; aj+1=aj; /*$error2$*/ for(i=0;i<=9;i+) printf("%5d

12、",&ai); /*$error3$*/ 参考答案: error1:if (aj<aj+1) error2:aj+1=temp; error3:printf("%5d",ai);二、填空题cf101 下列程序的功能是:从键盘输入10个数存入数组a中,求最大数和次最大数。(假设10个数各不相同)#include <stdio.h>void main() int i,max1,max2,a10; for(i=0;i<10;i+) scanf("%d",_); /*$blank1$*/ max1=max2=_; /*$

13、blank2$*/ for(i=1;i<10;i+) if(max1<ai) max2=_; /*$blank3$*/ max1=ai; else if(max2<ai) max2=ai;printf("max1=%d,max2=%dn",max1,max2);参考答案: blank1:&ai 或 a+i blank2:a0 或 *(a+0)blank3:max1cf102下列程序的功能是:求1-99之间所以能被3整除且有一位数字为5的数之和。#include <stdio.h>void main() int i,a1,a2,s; _

14、/*$blank1$*/ for(i=1;i_100;i+) /*$blank2$*/ a1=i%10; a2=i/10; if(i%3=0) if(a1=5)_(a2=5) /*$blank3$*/ s+=i; printf("%dn",s);参考答案: blank1: s=0; blank2: < blank3: | cf103下列程序的功能是计算并且输出给定整数n的所有因子之和(不包括1和它自身)。规定n的值不大于1000。如输入n的值为856,则输出sum=763。#include <stdio.h>void main()int n,i,sum;

15、printf("input n:"); scanf("%d",_); /*$blank1$*/ sum_; /*$blank2$*/ for(i=2; i<=n-1; i+) if(n%i=0) sum+=_; /*$blank3$*/ printf("sum=%dn",sum);参考答案: blank1: &n blank2: =0 blank3: i cf201从一个主串中取一个子串,m表示取子串的起始位置,n表示所取子串的长度,最后输出所取子串。(本题主串已知,m,n的值已知)#include<stdio.h

16、>#include<string.h>void main()char str80="abcd&e1%23#4xyzabc defg567 8%*&#90!#$%" char sub80 ; int m=4,n=8,i,j; i=m-1; j_; /*$blank1$*/ while(stri!='0' && i<n+m-1) subj=stri; i+; _; /*$blank2$*/ subj=_; /*$blank3$*/puts("old:");puts(str);puts(&

17、quot;new:");puts(sub);参考答案: blank1: =0 blank2: j+ 或 j+=1 或 j=j+1 blank3: '0' cf202以下程序功能是将字符串str中字符的正序和逆序进行连接,形成一个新的串放在字符串t中,如:str字符串为abcd,则t中内容为:abcddcba。#include<stdio.h>#include<string.h>void main()char str30,t80; int i,j; gets(str); for(i=0,j=0;stri!=_;i+) /*$blank1$*/ t

18、j+=stri; for(-i;i>=_;i-) /*$blank2$*/ tj+=stri; tj=_; /*$blank3$*/ puts(t);参考答案: blank1: '0' blank2: 0 blank3: '0' cf203下列程序功能是:将自然数1-10以及他们的平方根写入到指定的文件中,指定的文件名为“myfile.txt”。#include <math.h>#include <stdio.h>void main()int i; file *fp; if(fp=fopen("myfile.txt&quo

19、t;,_)=null) /*$blank1$*/ exit(0); for(i=1;i<11;i+) fprintf(_,"%d %fn",i,sqrt(i); /*$blank2$*/fclose(_); /*$blank3$*/参考答案: blank1: "w" blank2: fp blank3: fp cf301在子函数中判断一个数是否为“水仙花数”,在主函数中调用子函数求所有“水仙花数”之和并输出所有“水仙花数”。所谓“水仙花数”是指一个三位数,其各位数字的立方和等于该数本身。例如153是一个“水仙花数”,因为153=13+53+33。#

20、include <stdio.h>int s(int k)int a,b,c; a=k%10; b=k/10%10; c=k/100; if(k_a*a*a+b*b*b+c*c*c) /*$blank1$*/ return(1); else return(_); /*$blank2$*/void main()int i,sum; sum=0; for (i=101;i<=999;i+) if(_!=0) /*$blank3$*/ printf("%dn",i); sum=sum+i; printf("sum=%dn",sum);参考答案

21、: blank1: = blank2: 0 blank3: s(i)cf302以下程序对学生的记录数据统计不及格的人数并输出不及格学生的信息,请填空。struct stu int num; char name12; double score;#include <stdio.h>void main( ) _stud5= 101,"li ping",45, /*$blank1$*/ 102,"zhang ping",62.5, 103,"he fang",92.5, 104,"cheng ling",87,

22、 105,"wang ming",58 ; int i,n=0; printf("numtnametscoren"); i=0; while(i<5) if(_<60) /*$blank2$*/ printf("%dt%st%.2fn",studi.num,,studi.score); _; /*$blank3$*/ i+; printf("n=%dn",n);参考答案: blank1: struct stu blank2: studi.score 或 (*(stud+i).scor

23、e blank3: n+ 或 n+=1 cf303以下程序的功能是调用fac(n)函数(函数功能是求n的阶乘),输出1到5的阶乘值,请填空。#include <stdio.h>int fac(int n) int k,f; f=_; /*$blank1$*/ for(k=1;k<_;k+) /*$blank2$*/ f*=k; return(_); /*$blank3$*/void main()int i;for(i=1;i<=5;i+) printf("%d!=%dn",i,fac(i);参考答案: blank1: !=0 或 >0 blan

24、k2: <=n 或 <n+1 blank3: return (f) 或 return f 三、编程题cp101 利用下面的公式求s的值(求前10项的和)s=1/3-(1/3)*(2/5)+ (1/3)*(2/5)*(3/7)- (1/3)*(2/5)*(3/7)*(4/9)+.输出格式:s=0.235167#include <stdio.h>print(float f) file *out; if(out=fopen("c:24000109result.txt","w+")!=null) fprintf(out,"s=%

25、f",f); fclose(out);void main()print(s);参考答案1: #include <stdio.h>print(float f) file *out; if(out=fopen("result.txt","w+")!=null) fprintf(out,"s=%f",f); fclose(out);void main() int i,j; double s=0,s1; for(i=1;i<=10;i+)s1=1;for(j=1;j<=i;j+)s1=s1*j/(2*j+1)

26、;if(i%2)s+=s1;elses-=s1; printf("s=%fn",s); print(s);参考答案2: #include <stdio.h>print(float f) file *out; if(out=fopen("result.txt","w+")!=null) fprintf(out,"s=%f",f); fclose(out);void main() int i; double s=0,s1=1; for(i=1;i<=10;i+) s1=s1*i/(2*i+1);if(

27、i%2)s+=s1;elses-=s1; printf("s=%fn",s); print(s);运行结果:s=0.239569cp102利用下面的公式求s的值s=1*2*3-2*3*4+3*4*5-4*5*6+.+19*20*21-20*21*22输出格式:s=23516#include <stdio.h>print(int s) file *out; if(out=fopen("c:24000102result.txt","w+")!=null) fprintf(out,"s=%d",s); fcl

28、ose(out);void main()print(s);参考答案:#include <stdio.h>print(int s) file *out; if(out=fopen("result.txt","w+")!=null) fprintf(out,"s=%d",s); fclose(out);void main() int i; long s=0; for(i=1;i<=20;i+) if(i%2) s+=i*(i+1)*(i+2); else s-=i*(i+1)*(i+2); printf("s=

29、%ldn",s); print(s);运行结果:s=-4950cp103利用下面公式求s的值:s=1/3+2/5+3/7+4/9+5/11+.+49/99+50/101输出格式:s=0.123456#include <stdio.h>print(float s) file *out; if(out=fopen("c:24000103result.txt","w+")!=null) fprintf(out,"s=%f",s); fclose(out);void main()print(s);参考答案:#includ

30、e <stdio.h>print(float s) file *out; if(out=fopen("result.txt","w+")!=null) fprintf(out,"s=%f",s); fclose(out);void main() int i; float s=0; for(i=1;i<=50;i+)s+=1.0*i/(2*i+1); printf("s=%fn",s); print(s);运行结果:s=24.026167cp201有2个小于40的正整数a、b,a的立方与b的和是24

31、420,b的立方与a的和是29820,求满足条件的a、b的值。(提示:满足条件的a、b的值唯一)#include <stdio.h>print(int a,int b) file *out; if(out=fopen("c:24000104result.txt","w+")!=null) fprintf(out,"a=%d,b=%d",a,b); fclose(out);void main()int a,b; print(a,b);参考答案:#include <stdio.h>print(int a,int b

32、) file *out; if(out=fopen("result.txt","w+")!=null) fprintf(out,"a=%d,b=%d",a,b); fclose(out);void main()int a,b;for(a=1;a<40;a+)b=24420-a*a*a;if(a+b*b*b=29820)break; if(a<40 && b<40) printf("a=%d,b=%dn",a,b); print(a,b);运行结果:a=29,b=31cp202一个自

33、然数除以2余1,除以3余2,除以4余3,除以5余4,除以7余5,求满足这个条件的最小的自然数。#include <stdio.h>print(int n) file *out; if(out=fopen("c:24000105result.txt","w+")!=null) fprintf(out,"n=%d",n); fclose(out);void main()int n;print(n);参考答案:#include <stdio.h>print(int n) file *out; if(out=fopen

34、("result.txt","w+")!=null) fprintf(out,"n=%d",n); fclose(out);void main()int n; n=1; while(1)if(n%2=1&&n%3=2&&n%4=3&&n%5=4&&n%7=5)break;n+; printf("n=%dn",n); print(n);运行结果:n=299cp203编写程序,计算200到700之间所有能被9整除且个位数字不为5的数之和。输出格式:2345

35、6#include <stdio.h>print(int s) file *out; if(out=fopen("c:24000106result.txt","w+")!=null) fprintf(out,"%d",s); fclose(out);void main()print(s);参考答案:#include <stdio.h>print(int s) file *out; if(out=fopen("result.txt","w+")!=null) fprintf

36、(out,"%d",s); fclose(out);void main()int i,s=0;for(i=200;i<=700;i+) if(i%9=0 && i%10!=5) s+=i;printf("%dn",s);print(s);运行结果:22050cp301根据下列公式,计算a30的值(必需使用循环)a1=1,a2=1,a3=3/(a2+a1),a4=4/(a3+a2),.,a30=30/(a29+a28)输出格式:a30=7.235167#include <stdio.h>print(float f) fil

37、e *out; if(out=fopen("c:24000107result.txt","w+")!=null) fprintf(out,"a30=%f",f); fclose(out);void main()print(s);参考答案:#include <stdio.h>print(float f) file *out; if(out=fopen("result.txt","w+")!=null) fprintf(out,"a30=%f",f); fclose(

38、out);void main()float a,b,s;int i;a=1;b=1;for(i=3;i<=30;i+)s=i/(a+b); a=b; b=s;printf("a30=%fn",s);print(s);运行结果:a30=3.921752cp302计算2150之间(即从2到150)的全部“同构数”之和。所谓“同构数”是指一个数,它出现在它的平方数的右端。如6的平方是36,6出现在36的右端,所以6就是同构数。输出格式:367#include <stdio.h>print(long s) file *out; if(out=fopen("c:24000108result.txt","w+")!=null) fprintf(out,"s=%ld",s); fclose(out);void main()long s;print(s);参考答案:#include <stdio.h>pri

温馨提示

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

评论

0/150

提交评论