2010C语言二级上机试题库.doc_第1页
2010C语言二级上机试题库.doc_第2页
2010C语言二级上机试题库.doc_第3页
2010C语言二级上机试题库.doc_第4页
2010C语言二级上机试题库.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

一、改错题1.随机输入10个数,选出其中最小数。程序如下:main()int i,min,a10;printf(“input 10 numbers:n”);for(i=0;i=10;i+) /*$ERROR1$*/for(i=0;i10;i+) or for(i=0;i=9;i+)scanf(“%d”,ai); /*$ERROR2$*/ scanf(“%d”,&ai);min=a0;for(i=1;i10;i+)if(aimin) min=ai;printf(“minnum=%dn”,min);2.不用strcat函数,将键盘输入的两个字符串连接起来形成一个新串。main()char s150,s220;int I,j=0;printf(“Enter string No.1:n”); gets(s1);printf(“Enter string No.2:n”);scanf(“%s”,&s2); /*$ERROR1$*/scanf(“%s”,s2);for(i=0;s1i!=0;i+); /*$ERROR2$*/ for(i=0;s1i!=0;i+)while(s1i+= =s2j)!=0); /*$ERROR3$*/while(s1i+=s2j+)!=0)printf(“n New string:%sn”,s1);3.下列程序的功能是:根据整型形参n,计算如下公式的值A1=1,A2=1/(1+A1),A3=1/(1+A2),An=1/(1+An-1)例如:若n=10,则输出A10为0.617977。#include “stdio.h”int fun(int n) /*$ERROR1$*/float fun(int n)float a=0; /*$ERROR2$*/float a=1;int i;for(i=2;i=n;i+) a=1/(1+a);return a;main()int n;printf(“n Please Enter a value of n”); scanf(“%d”,&n);printf(“A%d=%fn”,n,fun); /*$ERROR3$*/ printf(“A%d=%fn”,n,fun(n);4.让计算机出10道100以内的整数加法题,让学生回答。回答正确时,计算机提示“正确“,错误时提示”错误“,并统计做对的题数。程序如下:#include main()int a,b,c,i,n=0;radomize();for(i=0;i10;i+)a=random(100);b=random(100);printf(“%4dn”,a); printf(“%c%3dn”,+,b); printf(“=n”); printf(“?”);scanf(“%d”,c); /*$ERROR1$*/ scanf(“%d”,&c);if(c=a+b) /*$ERROR2$*/ if(c= =a+b)printf(“rightn”); n=n+1;else printf(“wrongn”);printf(“Right Total=%d!”,n); 5.下面程序的功能是输出字符串. Main() char *a=English”,”Chinese”,”American”,French”;char*p;int j=0;p=a;for(;j=4;j+) /*$ERROR1$*/for(;j4;j+)|for(;j=3;j+)|for(;j4;j=j+1)|for(;j=3;j=j+1)printf(“%sn”,*p); /*$ERROR2$*/ printf(“%sn”,*p+); 或printf(%sn”,*p);p+;6.下面程序先打印所给的前三个字符串,然后再打印前三个字符串的首字符.请找出程序中的错误.Main()char alpha5=“a”,”bc”,”def”,”1”,”23”,*p; /*$ERROR1$*/ /*char *alpha5= “a”,”bc”,”def”,”1”,”123”,*p;*/int i; p=alpha;for(i=0;i3;i+,p+) printf(“%s”,*p); /*$ERROR2$*/ printf(“%s”,*p);printf(“t”); p=p-3;for(i=0;i3;i+,p+) printf(%ct,*p); /*$ERROR3$*/ printf(“%ct”,*p);printf(“n”);7.以下程序分别在a数组和b数组中放入an+1和bn+1个由小到大的有序数,程序把两个数组中的数按由小到大的顺序归并到c数组中.#includemain()int a10=1,2,5,8,9,10,an=5; int b10=1,3,4,8,12,18,bn=5;int i,j,c20,max=9999;aan=bbn=max; /*$ERROR1$*/ aan+1=bbn+1=max;i=j=k=0;While(ai!=max&bj!=max) /*$ERROR2$*/ while(ai!=max)|(bj!=max) if(aibj) ck=ai;k+;i+ Elseck=bk;k+;j+ /*$ERROR3$*/ elseck=bj;k+;j+;For(i=0;ik;i+;) Printf(“%4d”,ci);Printf(“n”);8. 以下程序是将输入的十进制数转换为二进制数输出. #includemain()int y,i=0,j,a16;scanf(“%d”,&y);do ai=y%2;ai+=y/2; /*$ERROR1$*/ai+=y%2;y/=2; while(y=0); /*$ERROR2$*/while(y)或while(y0)for(j=i;j=0;j-) /*$ERROR3$*/ for(j=i-1;j=0;j-) printf(“%d”,aj);printf(“n”);9. 以下程序判断输入的字符串是否是” 回文”(即顺读和倒读都一样,例如:LEVEL).#include#includemain()char s81; int i,j,n;get(s); n=strlen(s);i=0;j=n; /*$ERROR1$*/j=n-1;While(si= = )i+;While(sj= = )j-;While(ij|si= =sj ) /*$ERROR2$*/while(ij) printf(Non”); /*$ERROR3$*/ if(i=13)|(mc=13)&(mc10)if(k%13= =0)&(k%17= =0) /*$ERROR2$*/ if(k%13= =0)|(k%17= =0)m+=k; mc+;k+; /*$ERROR3$*/ k-;return(m);main() printf(“%dn”,fun(500);11.以下程序将输入的数字字符序列转化成一个整数.#include#includemain()char c10; int i=0,j; long k=0;gets(c); j=strlen(c);for(;i=0|ci=0&ci=9)k=k*10+ci; /*$ERROR2$*/k=k*10+ci-0;printf(“k=%dn”,k); /*$ERROR3$*/ printf(“k=%ldn”,k);12.以下程序计算200以内的其平方具有回文性质的正整数的数目如:112=121,1112=12321#includesqrtes(int x) int s,y; s=x*x; y=0;while(s) y=y*10+s/10; /*$ERROR1$*/ y=y*10+s%10;s=s%10; /*$ERROR2$*/ s=s/10;if(y=x*x) return 1; /*$ERROR3$*/ if(y= =x*x) return 1;else return 0;main() int n,count=0;for(n=10;n200;n+)if(sqrtes(n) count+; printf(“n=%3d,n*n=%dn”,n,n*n);printf(“count=%dn”,count);13.以下程序将十进制正整数n转换成十六进制数,并存入字符串str中.Main()unsigned n,h; int i=0;printf(“input a decimal Number to n:”); scanf(“%d”,&n);do h=n/16; /*$ERROR1$*/ h=n%16; stri+=(h=0;) printf(“%s”,stri-); /*$ERROR3$*/ printf(“%c”,stri-);printf(“n”);14.以下程序能够将字符串str1和字符串str2 合并成一个新字符串str3. #includemain()char str130,str220,str60; int i=0,j=0;printf(“Enter first string:”); gets(str1);printf(“Enter second string:”); gets(str2);while(str1i) stri=str1i;i+; /*$ERROR1$*/ while(str1i)stri=str1i,i+;while(str2j)stri+=str2j;j+; /*$ERROR2$*/ while(str2j)stri+=str2j;j+;stri=”0”; /*$ERROR3$*/ stri=0;printf(“str=%sn”,str);15.以下程序实现字符串反向存储.Main()char str70,ch,*p,*temp; printf(“Enter string to str:”); scanf(“%s”,str); p=str; temp=str;while(temp) temp+; /*$ERROR1$*/ while(*temp) temp+; *temp-; /*$ERROR2*/ temp-;while(ptemp) /*$ERROR3$*/ while(ptemp) ch=*p;*p+=*temp;*temp-=ch;printf(“string=%sn”,str);二、填空题1.计算学生的平均成绩和不及格的人数.Struct stu int num; char *name; char sex; float score;main() _ student5= 101,”Li ping”,M,45, /*$BLANK1$*/* struct stu*/ 102,”Zhang ping”,M,62.5, 103,”He feng”,F,92.5, 104,”Cheng ling”,F,87, 105,”Wang ming”,M,58, ;int i,c=0; float ave,s=0;for(i=0;i5;i+) s+=_; /*$BLANK2$*/*studenti.score;*/ if(_60) c+; /*$BLANK3$*/* studenti.score*/ ave=s/5;printf(“average=%fn count=%dn”,ave,c);2.完善程序,使55数组的对角线元素为1,其它为0,即输出55的对角矩阵.#includemain() int j,k,a55; for(j=0;j5;j+) for(k=0;k5;k+)if(_) /*$BLANK1$*/* k= =j*/ _ /*$BLANK2$*/* ajk=1*/else_ ; /*$BLANK3$*/* ajk=0*/for(j=0;js;j+)for(k=0;k5;k+) printf(“%d”,ajk);printf(“n”);3.编制函数acopy(), 将数组a的内容复制到b数组中(以-999作结束标志),程序未完成,请填空.#includevoid acopy(_) /*$BLANK1$*/* void acopy(int a,int b)*/int i=0; while(ai!=-999) _ ; /*$BLANK2$*/* bi=ai*/i+;bi=a10;main()static int a=1,3,5,7,9,2,4,6,8,10,-999; int b80,i=0;_ ; /*$BLANK3$*/*acopy(a,b) */while(bi!=-999) printf(“%d”,bi+);4.以下程序用函数的递归调用打印n的阶乘值,请填空. Long fac(int n) long f;if(n0) printf(“n0,data error”);else if(n= =0|n= =1) f=1;else f=_ /*$BLANK1$*/* else f=n*fac(n-1);*/ _ ; /*$BLANK2$*/* return(f);*/main() int n; long y;printf(“input a integer number:”);scanf(“%d”,&n);y=_ ; /*$BLANK3$*/* y=fac(n);*/printf(“%d!=%ld”,n,y); 5.有一个34的矩阵,要求编程以求出其中最大的那个元素,以及它所在的行号和列号.程序如下: main()int i,j,row,col,max; static int a34=3,5,1,8,6,4,11,7,9,3,10,2;max=_ ; /*$BLANK1$*/*a00 */for(i=0;i3;i+) for(j=0;jmax*/ max=_; /*$BLANK3$*/ /*max=aij*/ row=i; col=j;6.删除一个字符串中的某个特定字符(设本例中要删除的特定字符为s)。main()char a=”this is a book”; char c=s;int i,j=0;for(i=0;ai!=_;i+) /*$BLANK1$*/ /*0*/if(ai!=_) /*$BLANK2$*/ /*c*/ aj+=ai;_=0; /*$BLANK3$*/ /*aj*/printf(“%s”,a);7.用冒泡法对10个数排序(从小到大),程序如下:main()int a11; int i,j,t;printf(“Enter 10 numbers:n”);for(i=1;i11;i+) scanf(“%d”,_); /*$BLANK1$*/ /*&ai*/printf(n”);for(j=1;j=9;j+) for(i=1;ia i+1*/ t=ai;ai=ai+1;ai+1=t;printf(“The sorted numbers:n”);for(i=1;i11;i+) printf(“%d”,ai);8.以下程序中,主函数调用了LineMax函数,实现N行M列的二维数组中,找出每一行上的最大值。#define N 3#define M 4void linemax(int aNM)int i,j,p; for (i=0;iN;i+) p=0; for (j=1;jM;j+) if(aipaij) _; /*$BLANK1$*/ /*p=j*/printf(“The max value in line %d is %dn”,i,_); /*$BLANK2$*/ /*aip*/9.编程输出以下的杨辉三角(输出前10行)11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 11 6 15 20 15 6 1#define N 10main()int i,j,aNM;for(i=0;iN;i+) aii=1; _=1; /*$BLANK1$*/ /*ai0*/ for(i=2;iN;i+) for(j=1;j=i-1;j+) aij=_; /*$BLANK2$*/ /*ai-1j-1+ai-1j*/ for(i=0;iN;i+)for(j=0;_;j+) /*$BLANK3$*/ /* j=i*/ printf(“%5d”,aij);printf(“n”);10.写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数并输出结果。main()int m,n,cd,cm, printf(“Input two numbers,please:n”); scanf(“%d%d”,&m,&n);cd=gcd(m,n);cm=gcm(_); /*$BLANK1$*/ /*m,n,cd*/printf(“gcd=%dn”,cd); printf(“gcm=%dn”,cm);int gcd(int a,int b)int t; if(ab)t=a;a=b;b=t;while(_) /*$BLANK2$*/ /*b!=0*/t=_;a=b;b=t; /*$BLANK3$*/ /*a%b*/return(a);intgcm(inta,int b,int h)return a*b/h;11.求数组的平均值。#includefloat mean (_) /*$BLANK1$*/ /*int *x,int num*/int i; float avg; for(_,i=0;inum;i+) /*$BLANK2$*/ /*avg=0*/ avg+=xi;avg/=num;_; /*$BLANK3$*/ /*return(avg)*/main()int i,a15; for(i=0;i15;i+) ai=i+1; printf(“average:%6.2fn”,mean(a,15);12.以下程序输出如下图所示的九九表。1 2 3 4 5 6 7 8 912 43 6 94 8 12 165 10 15 20 256 12 18 24 30 367 14 21 28 35 42 498 16 24 32 40 48 56 649 18 27 36 45 54 63 72 81#includemain()int i,j; for(i=1;_;i+) /*$BLANK1$*/ /*i10*/ printf(“%4d”,i); printf(“n-n”); for(i=1;i10;i+) for(j=1;_;j+) /*$BLANK2$*/ /*j=i*/printf(j= =i)? _:”%4d”,i*j); /*$BLANK3$*/ /*”%4dn”*/13.已知一个首项大于0的等差数列前四项只和是26,积是880,求该四项之值。#includemain()int sum,product,dif,a1,a2,a3,a4;for(a1=1;a15;a1+) for(dif=1;dif5;dif+) a2=a1+dif; a3=a1+2*dif; a4=a1+3*dif; _=a1+a2+a3+a4; /*$BLANK1$*/ /*sum*/ _=a1*a2*a3*a4; /*$BLANK2$*/ /*product*/ if(sum= =26_product= =880) /*$BLANK3$*/ /*&*/ printf(“a1=%2d, a2=%2d, a3=%2d, a4=%2dn”,a1,a2,a3,a4);14.以下程序输入一行字符,统计其中每种数字字符的个数,存放到一维数组a中,并输出a中不为0的元素值。#include main()char ch; int i,a10=0;while(ch=getchar()!=_) /*$BLANK1$*/ /*n*/ if(ch=0_ch=9) /*$BLANK2$*/ /*&*/ ach-0+;for(i=0;i=9;i+) if(_!=0) /*$BLANK3$*/ /*ai*/ printf(“a%d=%dn”,i,ai);15.以下程序编写了一个求nn数组a的两条对角线上元素之和的函数。#define N 5#includeint sumfun(int aNN)int i,j,sum_; /*$BLANK1$*/ /*=0*/for(i=0;iN;i+) for(j=0;jN;j+) if(i=j_i+j= =N-1) /*$BLANK2$*/ /*|*/sum+=aii;return sum;main()int i,j,k=0,aNN; for(i=0;iN;i+) for(j=0;jN;j+) aij=+k; printf(“%5d”,aij); printf(n”);printf(“the sum =%8dn”,sumfun_; /*$BLANK3$*/ /*(a)*/16.打印出1100间能被3整除且尾数是6的数main() ; /*$BLANK1$*/ /*int i,j;*/ for(i=0; ;i+) /*$BLANK2$*/ /*i10*/ j=i*10+6; if( =0) continue; /*$BLANK3$*/ /*j%3!*/ printf(“%d”,j);三、编程题1.求解满足条件1+2+3+n1000的最小n的值。输出格式:n=235main()Int s,n=1; s=0;while(s+=n+)1000);n-;printf(“n=%dn”,n);2.利用循环语句求1-1/3+1/5-1/7+1/(2n-1)的值(直到第100项的和)输出格式(6位小数):s=0.235167main()float s=0;int n=1,f=1;while(n=100)s+=f*1.0/(2*n-1);n+;f=f;printf(“s=%6fn”,s); 3.求ex=1+x+x2/2!+x3/3!+xn/n!(-+),要求:(1)用x=2,n=8编程(2)保留3位小数(3)不许使用系统数学函数 输出格式:ex=3.518main()float ex=1,x=2,t=1,x1;int n; x1=1;for (n=1;n9;n+) t=t*n; x1*=x;ex=ex+x1/t; printf(“ex=%3fn”,ex);刘144.计算1500之间的全部“同构数”之和。所谓“同构数”是指一个数,它出现在它的平方的右端。如6的平方是36,6出现在36的右端,6就是“同构数”。输出格式:36。main()long s=0,i,n,m=1; for(i=1;i501;i+)m=i*i;if(I10) n=m%10;else if(I100) n=m%100;else n=m%1000;if(n= =i) s+=i;printf(“i=%ld,i*i=%ldn”,i,i*i);printf(“s=%ldn”,s);5.利用下面的公式求s的值s=1*2*3-2*3*4+3*4*5-4*5*6+5*6*7-18*19*20+19*20*21-20*21*22 输出格式:s=2.3516main()int f=1,i;float s=0;for(i=1;i21;i+)s+=f*i*(i+1)*(i+2); f=f;printf(“s=%d”,s);6.统计有1,2,3,4四个数组成的4位数的个数。要求:1)允许4位数中有相同的数字2)个位数和百位数不同。例如:符合的有:1122,1244,2134,22333不符的有:1424,2313(个位数和百位数相同)输出格式;n=235main()int i,j,k,m,n=0;for(i=1;i5;i+)for(j=1;j5;j+) for(k=1;k5;k+) for(m=1;m5;m+)if(m!=j)n+;printf(“n=%d”,n);7.打印出所有的“水仙花数”之和,所谓“水仙花数”是指一个三位数,其各位数字的立方和等于该数本身。例如153是一个“水仙花数”,因为153=13+53+33输出格式:23456main()int s=0,k,a,b,c;for(k=100;k1000;k+)a=k/100;b=k%10;c=(k%100-b)/10;if(k= =a*a*a+b*b*b+c*c*c) s+=k;printf(“%dn”,s); 8.求s=1+1+2+3+5+8+13+21+34的和。其中:1)从第三项

温馨提示

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

最新文档

评论

0/150

提交评论