您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > C程序设计等级考试复习1-6模拟题参考答案
模拟测试(一)一、填空题(20)1、x+y=10&&x+y=30、sqrt(b*b-4*a*c)/(2*sin(3.14159/4)、sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)+(z2-z1)*(z2-z1))2、13、10,144、24245、按行的顺序6、117、68、109、110、-1,65535二、单项选择题(20)(把正确答案填入下表各对应的题号下)12345678910ADCACBDDCA三、程序填空(15)1、fabs(t)=1.0E-6、t、n+22、j9、a[i]a[i+1]、i++、a[i]3、int*n、k=0&&xv[k]、v[k+1]四、阅读程序并写出程序的输出结果(20)1、Max=12,row=2,colum=12、3,2,5,3,3,54,2,6,3,4,63、MaxofarrayA=644、755、8五、程序设计(25分)1、用二重循环建立以下数组,并打印出来1、main()(不用scanf()函数和静态数组){inta[5][5],i,j;/*定义数组和变量*/01111for(i=0;i5;i++)/*用二重循环产生二维数组*/-10111for(j=0;j5;j++)-1-1011if(ij)a[i][j]=1;-1-1-101elseif(jj)a[j][j]=-1;-1-1-1-10elsea[i][j]=0;2、编一程序打印输出如下图案for(i=0;i5;i++)/*打印输出*/A{for(j=0;j5;j++)BBBprintf(%d,a[i][j]);CCCCCprintf(\n);/*输出一行后换行*/DDDDDDD}EEEEEEEEE}main(){inti,j;charch='A',space='';/*定义字符变量ch,space*/for(i=1;i6;i++)/*i循环控制打印行数,共5*/{for(j=1;j40-i;j++)/*输出39-i个空格,即将第一行打印在第40列上..*/printf(%c,space);for(j=0;k2*i-1;k++)/*打印2*i-1个字符,即第一行打印1个....*/printf(%c,ch);ch++;/*输出一行后,让ch增加1,即变为相邻的下一字符*/printf(\n);/*输出一行后,换行*/}}3、编一个函数voidfun(char*ss),它的功能是:把ss字符串中的字符按逆序存放。例如:若输入字符串为ABCDEFG,则逆置后的字符串为GFEDCBA。在主函数main调用该函数实现输入任意字符串,按逆置打印输出。#includestring.hvoidfun(char*ss){inti,j,k;charch;k=strlen(ss);/*求出字符串的长度*/for(i=0;ik/2;i++)/*将字符串倒置,即第O个与第k-1个交换,....*/{j=k-i-1;ch=*(ss+i);*(ss+i)=*(ss+j);*(ss+j)=ch;}}main(){charstr[80];/*定义一字符数组,存放字符串数据*/printf(Enterthestring\n);scanf(%s,str);/*输入字符串*/fun(str);/*调用函数,倒置字符串*/printf(%s,str);}模拟试题二一、填空题(10)1、322、交换x和y变量的值3、11134、55、9.56、2二、单项选择题(20)(把正确答案填入下表各对应的题号下)12345678910ADCDADDDA三、写出程序的输出结果(20)1、62、8113、100104、8,175、CDG四、根据各编程题意填空(25)1、bi.dat、&j、fp2、inta[]、a[k]!=a[0]、k3、printf(Enterthe10number\n)、&a[i]、k=i、a[i]五、编程题(20)1.请编一个函数intfun(intpm),它的功能是:判断pm是否是素数。若pm是素数,返回1;若不是素数,返回0。pm的值由主函数从键盘读入。intfun(intpm){inti;for(i=2;i=pm/2;i++)if(pm%2==0)return0;return1;}main(){intx,k;scanf(%d,&x);k=fun(x);if(k)printf(%d是素数\n,x);elseprintf(%d不是素数\n,x);}2.请编写函数voidfun(int*a,int*n,inty),它的功能是:把y值插入到a数组中,a数组中的数由主函数按由小到大的次序从键盘读入,y的值也从键盘读入。插入后,数组中的数仍然有序。voidfun(int*a,int*n,inty){intk,i;k=*n;for(i=0;i*n;i++)if(ya[i]){k=i;break;}if(k*n)for(i=*n;ik;i--)a[i]=a[i-1];a[k]=y;(*n)++;}main(){inta[]={......}intn=1,y,i;scanf(%d,&y);fun(a,&n,y);for(i=0;in;i++)printf(%d,a[i]);}模拟试题三一、填空题(10)1、是指向含有n个元素的一维数组的指针变量的指针变量2、13、123456.1234、45、9006、存储单元7、28、89、非010、y=x&&y=z二、单项选择题(20)(把正确答案填入下表各对应的题号下)12345678910CDCCADDABD三、写出程序的输出结果(20)1、i=6j=7202、Theoutputof5.3is:3、Theoutputof5.521-101011207654300123-7B6702154300四、根据各编程题意填空(25)1、t=-t*x*x/(n*(n+1))、n+=2、epsil=02、i=j、i--、j++3、r、w、!feof(fp1)五、编程题(20)1.编一个C函数是将字符数组中的小写字母转换成大写字母,或者将字符数组中的大写字母转换成小写字母。voidstruplw(char*pc){while(*pc!='0'){if(*pc='A'&&*pc='Z')*pc+=32;elseif(*pc='a'&&*pc='z')*pc-=32;pc++;}}1.请编一个函数intfun(floats[],intn),它的功能是:求高于平均分的人数,并作为函数值返回。数组s中存放n位学生的成绩。数组s的值由主函数从键盘读入,用-1来结束输入。intfun(floats[],intn){inti,k=0;floataver,y=0;for(i=0;in;i++)y=y+s[i];aver=y/n;for(i=0;in;i++)if(s[i]y)k++;returnk;}main(){floats[100],x,m,n=0;scanf(%f,&x)while(x!=-1&&n100){s[n]=x;n++;scanf(%f,&x);}m=fun(s,n);printf(m=%d,m);}模拟测试(四)一、单项选择题(14)(把正确答案填入下表各对应的题号下)1234567891011121314DAACBBDCCBBDDA二、填空题(14)1、692、0.5*a*b3、fabs(a+b)*fabs(a-b)4、ab&&ac5、m%n==0或!(m%n)6、9、9、37、-178、m=1F9、5*3=1510、inta[5],*p=a11、012、413、fopen(a.dat,rw)14、地址传递三、写出程序的输出结果(20)1、10225713202、bcdefga32cdefgab3defgabc57四、根据各编程题意填空(22)1、ints1=0,s2=0;、ch=getchar()、||ch'A'&&ch'Z'、printf(%d,%d,s1,s2)2、int,intn,char*ch、printf()、printf(%c,ch[i])、printf(\n)3、head!=NULL、p=p.next、no==p.num五、编程题(30)1.输入20个整数,输出其中能被组中其它元素整除的那些数组元素。main(){inta[20],i,j,k;printf(Enterthenumber=\n);for(i=0;i20;i++)scanf(%d,&a[i]);for(i=0;i20;i++){k=1;/*用k判断a[i]是否被其它元素整除,首先设为1,即表示能被其它元素整除*/for(j=0;j20;j++)/*判断a[i]是否被其它元素整除*/if(i!=j)/*此条件可以不要;即此语句可以不用,因为自身除自身一定能整除*/if(a[i]%a[j]!=0)/*如果被其中一个整除了则k=0,并中断j的循环,判断下一个a[i]*/{k=0;break;}if(k==1)printf(%d,a[i]);}}2.编写一个函数,在n个元素的一维数组中,统计比相邻元素大的数组元素个数并将统计数返回(不考虑a[0]和a[n–1]),要求以指针变量而不是数组名作参数。intcount(float*a,intn){inti,num;num=0;/*置num的初值为0*/for(i=1;in-1;i++)/*依次比较a[i]与相邻元素的关系*/if(a[i]a[i-1]&&a[i]a[i+1])/*如果比相邻元素大,则计数*/num++;returnnum;}3.把文本文件d1.dat复制到文本文件d2.dat中,要求仅复制d1.dat中除英文字符和数字以外的其它内容。#includestdio.hmain(){FILEfp1,fp2;/*定义两个文件类型指针变量*/charch;fp1=fopen(d1.dat,r);/*以读方式打开文件d1.dat*/fp2=fopend(d2.dat,W);/*以写方式打开文件d2.dat*/while(!feof(fp1))/*如果没遇到文件结束标志,则循环地读一个字符*/{ch=fgetc(fp1);/*从文件d1.dat中读出一个字符*/if(!((ch=A&&ch=Z)||(ch=a&&ch=z)||(ch=0&&ch=9))fputc(ch,fp2);/*如果不是字母或数字字符,则写入到文件d2.dat中*/}fclose(fp1);/*关闭文件d1.dat*/fclose(fp2);}模拟测试(五)一、填空题(15)1、(-b+sqrt(b*b-4*a*c))/(2*a)2、!(ch='0'&&ch='9')3、2.44、105、int(或整型)6、10,127、128、0,-19、8,u10、our11、312、513、3二、单项选择题(20)(把正确答案填入下表各对应的题号下)12345678910CCBCABDDCB三、写出程序的输出结果(20)1、18—262、3,2,5—3,3,5——4,3,6—3,4,63、144、4321四、根据各编程题意填空(22)1、s[k].aver、s[k].avers[maxsub].aver、maxsub=k2、int*m、k=0&&xv[k]、v[k+1]3、char*s、sign=-1;k++;、digit=0、digit=10*digit+s[k]-'0'五、编程题(30)1.输入m和n(m≥n≥0)后,计算)!(!!nmnm表达式的值并输出。要求将计算阶乘的运算写成函数fact(n),函数返回值的类型为float。floatfact(intn){inti;floats=1.0for(i=1;i=n;i++)s=s*i;returns;}main(){intn,m;floatydo/*输入m,n,如果mn或n0,则重输入:即要求m=n=0*/{scanf(%d%d,&m,&n)}wh
本文标题:C程序设计等级考试复习1-6模拟题参考答案
链接地址:https://www.777doc.com/doc-2907621 .html