您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > c语言程序设计试题2
C语言试卷-2一、选择题(评分标准20分,每小题2分)1.执行语句“a=b=3;printf(“%d,%d\n”,a2,b2);”后的输出结果为________。(A)12,0(B)12,3(C)false,true(D)true,false2.若a是32位int整型变量,判断其最低2个二进位均为1的表达式为________。(A)a&3==3(B)a&3==11(C)a&11==3(D)a&11==113.以“只读”方式打开文本文件c:\xy.text,下列语句中哪一个是正确的________。(A)fp=fopen(“c:\\xy.txt”,“a”);(B)fp=fopen(“c:\\xy.txt”,“r”);(C)fp=fopen(“c:\\xy.txt”,“wb”);(D)fp=fopen(“c:\xy.txt”,“r”);4.为表示“a和b都不等于0”,应使用的C语言表达式是_______。(A)(a!=0)‖(b!=0)(B)a‖b(C)!(a=0)&&(b!=0)(D)a&&b5.若x是单精度实型变量,k是基本整型变量,以下正确的输入语句是________。(A)scanf(“%f%d”,&x,&k);(B)scanf(“%f%d”,x,k);(C)scanf(“%d%f”,&x,&k)(D)scanf(“%d%f”,x,k);6.下列运算中优先级最低的是________。(A)*(B)(C)=(D)-7.已知字符‘c’的ASCII为99,语句printf(“%d,%c”,‘c’,‘c’+1);输出为________。(A)99,c(B)99,100(C)99,d(D)语句不合法8.不正确的赋值或赋初值的方式是________。(A)charstr[6]={‘s’,’t’,’r’,’i’,’n’,’g’};(B)charstr[10]=”string”(C)char*str=”string”;(D)charstr[10];str=”string”;9.C语言程序中可以对程序进行注释,注释部分必须用符号_________括起来。(A)‘{‘和’}’(B)‘[‘和’]’(C)“/*”和”*/”(D)“*/”和”/*”10.________是合法的用户自定义标识符。(A)b-b(B)float(C)fr(D)_isw套数号答案21.A2.A3.B4.D5.A6.C7.C8.D9.C10.D二、判断题(评分标准20分,每小题2分)1.表达式(3.6%2)符合C语言语法。2.在C程序中,用整数0表示逻辑值“假”。3.08是正确的整型常量。4.设变量定义为chars[]=“hello”,则数组s中有6个元素。5.若x是单精度实型变量,表达式(x=10/4)的值是2.5。6.若变量已正确定义,表达式x=y=1符合C语言语法。7.表达式!(x0‖y0)等价于!(x0&&!(y0)。8.表达式(0x191)&0x7的值是3。9.在C源程序中将语句“if(x==5)y++;”误写成“if(x=5)y++;”,将导致编译错误。10.C的double类型数据可以精确表示任何实数。套数号答案41.F2.T3.F4.T5.F6.T7.T8.F9.F10.F三、填空题(评分标准10分,每小题2分)1.存储‘A’要占用________个字节(用数字表示)。2.设a=3.b=2.c=1.则abc的值为________。(用‘0’或‘1’表示)3.在C语言中,头文件的后缀名是________。4.表达式!!5的值是________。5.若有定义:inta=8,b=5,c;,执行语句c=a/b+0.4;后,c的值为________。参考答案:第4套(1)1(2)0(3)h(4)1(5)1四、程序改错题(评分标准20分,每小题5分)1.该程序功能:输入m、n(要求输入数均大于0),输出它们的最小公倍数。#includestdio.hvoidmain(){intm,n,k;while(scanf(%d%d,&m,&n),m0&&n0);for(k=m;k%n==0;)/*$1*/k=k+m;printf(%d\n,k);}说明:该程序中“/*$1*/”行中的语句k%n==0;有错误,请改正(注意:不得加行、减行、加句、减句)。运行样例:86结果:24运行样例:68结果:24参考答案:k%n!=02.该程序功能:输入x、eps,计算多项式1-x+x*x/2!-x*x*x/3!+...的和直到末项的绝对值小于eps为止。/*一重循环*/#includestdio.h#includemath.hvoidmain(){floatx,eps,s=1,t=1,i=1;scanf(%f%f,&x,&eps);do{t=-t*x/i;/*$1*/s+=t;}while(fabs(t)=eps);printf(%f\n,s);}说明:该程序中“/*$1*/”行中的语句t=-t*x/i;有错误,请改正(注意:不得加行、减行、加句、减句)。运行样例:10.0001结果:0.367882参考答案:t=-t*x/i++;3.该程序功能:输入1个字符串,输出其中所出现过的大写英文字母。/*循环,分支,库函数*/#includestdio.hvoidmain(){charx[80],y[26];inti,j,ny=0;gets(x);for(i=0;x[i]!='\0';i++)if(x[i]='A'&&x[i]='Z'){for(j=0;jny;j++)if(y[i]==x[j])break;/*$1*/if(j==ny){y[ny]=x[i];ny++;}}for(i=0;iny;i++)printf(%c,y[i]);printf(\n);}说明:该程序中“/*$1*/”行中的语句break;有错误,请改正(注意:不得加行、减行、加句、减句)。运行样例:FONTNAMEandFILENAME结果:FONTNAMEFILENAME参考答案:continue4.该程序功能:输入n以及小于n个字符的字符串,将字符串中所有小写字母改为相应的大写字母后,输出该字符串。#includestdio.h#includestring.h#includestdlib.hvoidmain(){intn;unsignedinti;char*str;scanf(%d\n,&n);str=(char*)malloc(n);gets(str);for(i=0;istrlen(str);i++)if(str[i]='a'&&str[i]='z')/*$1*/str[i]=str[i]-32;puts(str);}说明:该程序中“/*$1*/”行中的语句if(str[i]='a'&&str[i]='z')有错误,请改正(注意:不得加行、减行、加句、减句)。运行样例:5Apple结果:APPLE参考答案:if(str[i]='a'&&str[i]='z')五、程序填空(评分标准10分,每小题5分)1.以下程序对test.txt进行读操作,并将读出的文本输出到屏幕上。设test.txt文件中存有“hello,welcometotheworldofC!”字样。#includestdio.h#includestdlib.hmain(){FILE*fp;charch;/*$*/if(fp==NULL){printf(cannotopentest\n);exit(0);}ch=fgetc(fp);while(ch!=EOF){putchar(ch);ch=fgetc(fp);}fclose(fp);}说明:该程序中“/*$1*/”行是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句)。运行结果1:hello,welcometotheworldofC!参考答案:fp=fopen(test.txt,r);2.输入6个整数1233436322,输出为:3612223343。/*形参和实参的传递*/#includestdio.hvoidsort(int*a,intn){inti,k,m,t;for(i=0;in-1;i++){k=i;for(m=i+1;mn;m++)if(/*$1*/)k=m;t=a[k];a[k]=a[i];a[i]=t;}}voidmain(){intk,a[6];for(k=0;k6;k++)scanf(%d,&a[k]);sort(a,6);for(k=0;k6;k++)printf(%d,a[k]);}说明:该程序中“/*$1*/”行是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句)。运行样例1:1233436322结果:3612223343参考答案:a[k]a[m]六、程序设计(评分标准20分,每小题10分)1.设计程序:输入一个正整数n,求1+1/2!+1/3!+...+1/n!的值,要求定义并调出函数fact(n)计算与n的阶乘有关的计算式,函数返回值的类型是单精度浮点型,保留小数2位。/*二重循环,求自然对数e的和函数*/参考答案:#includestdio.h#includestdlib.hfloatfact(intn);voidmain(){intn;floatsum;while(scanf(%d,&n),n0);/*排除n为负数的可能性*/if(n==0)sum=1;/*因为0!=1,但是函数调用进不去循环体,所以预先赋值*/elsesum=fact(n);printf(%2.2f,sum);}floatfact(intn){inti,j;floatsum=0,temp;for(i=1;i=n;i++){temp=1;for(j=1;j=i;j++)temp*=1/(float)(j);sum+=temp;}returnsum;}运行样例1:3结果:1.672.设计程序:编写函数strcmpA(char*s1,char*s2),返回较长的字符串的长度减去较短的字符串的长度,相等返回0。参考答案:/*字符串操作*/#includestdio.h#includestdlib.h#includemath.h#includestring.h/*支撑strlen(*str)的函数,一定要加上*/intstrcmpA(char*s1,char*s2);voidmain(){charstr1[100],str2[100];intresult;scanf(%s%s,str1,str2);result=strcmpA(str1,str2);printf(%d,result);}intstrcmpA(char*s1,char*s2){if(strlen(s1)=strlen(s2))returnstrlen(s1)-strlen(s2);elsereturnstrlen(s2)-strlen(s1);}运行样例1:appletree结果:1运行样例2:treeapple结果:1
本文标题:c语言程序设计试题2
链接地址:https://www.777doc.com/doc-2908716 .html