您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 7-8-C语言上机考试试题2
C语言上机考试试卷-22008.1.7一、选择题(评分标准20分,每小题2分)1.执行语句“a=b=3;printf(“%d,%d\n”,a2,b2);”后的输出结果为___A_____。(A)12,0(B)12,3(C)false,true(D)true,false2^3+2^2=12★2.若a是32位int整型变量,判断其最低2个二进位均为1的表达式为____A____。位与运算,11得1,a的32位与3的32位,不足则补零。补它十几个零(A)a&3==3(B)a&3==11(C)a&11==3(D)a&11==113.以“只读”方式打开文本文件c:\xy.text,下列语句中哪一个是正确的___B_____。(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语言表达式是____D___。(A)(a!=0)‖(b!=0)(B)a‖b(C)!(a=0)&&(b!=0)(D)a&&b5.若x是单精度实型变量,k是基本整型变量,以下正确的输入语句是___A_____。(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.下列运算中优先级最低的是___C_____。(A)*(B)(C)=(D)-7.已知字符‘c’的ASCII为99,语句printf(“%d,%c”,‘c’,‘c’+1);输出为_____C___。(A)99,c(B)99,100(C)99,d(D)语句不合法8.不正确的赋值或赋初值的方式是____D____。(A)charstr[6]={‘s’,’t’,’r’,’i’,’n’,’g’};(B)charstr[10]=”string”定义阶段可以(C)char*str=”string”;(D)charstr[10];str=”string”;字符串不能直接赋值9.C语言程序中可以对程序进行注释,注释部分必须用符号____C_____括起来。(A)‘{‘和’}’(B)‘[‘和’]’(C)“/*”和”*/”(D)“*/”和”/*”10.____D____是合法的用户自定义标识符。(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语言语法。F2.在C程序中,用整数0表示逻辑值“假”。T3.08是正确的整型常量。F4.设变量定义为chars[]=“hello”,则数组s中有6个元素。T5.若x是单精度实型变量,表达式(x=10/4)的值是2.5。10.0/4.06.若变量已正确定义,表达式x=y=1符合C语言语法。T7.表达式!(x0‖y0)等价于!(x0)&&!(y0)。8.表达式(0x191)&0x7的值是3。F9.在C源程序中将语句“if(x==5)y++;”误写成“if(x=5)y++;”,将导致编译错误。F10.C的double类型数据可以精确表示任何实数。F套数号答案41.F2.T3.F4.T5.F6.T7.T8.F9.F10.F三、填空题(评分标准10分,每小题2分)1.存储‘A’要占用____1____个字节(用数字表示)。2.设a=3.b=2.c=1.则abc的值为___0_____。(用‘0’或‘1’表示)3.在C语言中,头文件的后缀名是___h_____。4.表达式!!5的值是____1____。5.若有定义:inta=8,b=5,c;,执行语句c=a/b+0.4;后,c的值为___1_____。参考答案:第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*/for(k=m;k%n!=0;)k=k+m;printf(%d\n,k);}操作说明:在考生目录的**子目录下,有*.c文件,该文件中“/*$1*/”行中的语句k%n==0;有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:输入m、n(要求输入数均大于0),输出它们的最小公倍数。参考答案:k%n!=0运行样例2行运行样例:86结果:24运行样例:68结果:242.该程序功能:输入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*/t=-t*x/i++;s+=t;}while(fabs(t)=eps);printf(%f\n,s);}操作说明:在考生目录的**子目录下,有*.c文件,该文件中“/*$1*/”行中的语句t=-t*x/i;有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:输入x、eps,计算多项式1-x+x*x/2!-x*x*x/3!+...的和直到末项的绝对值小于eps为止。参考答案:t=-t*x/i++;运行样例1行运行样例:10.0001结果:0.3678823.该程序功能:输入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*/continueif(j==ny){y[ny]=x[i];ny++;}}for(i=0;iny;i++)printf(%c,y[i]);printf(\n);}操作说明:在考生目录的**子目录下,有*.c文件,该文件中“/*$1*/”行中的语句break;有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:输入1个字符串,输出其中所出现过的大写英文字母。参考答案:continue运行样例1行运行样例:FONTNAMEandFILENAME结果:FONTNAMEFILENAME4.该程序功能:输入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*/if(str[i]='a'&&str[i]='z')str[i]=str[i]-32;puts(str);}操作说明:在考生目录的**子目录下,有*.c文件,该文件中“/*$1*/”行中的语句if(str[i]='a'&&str[i]='z')有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:输入n以及小于n个字符的字符串,将字符串中所有小写字母改为相应的大写字母后,输出该字符串。参考答案:if(str[i]='a'&&str[i]='z')运行样例1行运行样例:5Apple结果:APPLE五、程序填空(评分标准10分,每小题5分)1.以下程序对test.txt进行读操作,并将读出的文本输出到屏幕上。#includestdio.h#includestdlib.hmain(){FILE*fp;charch;/*$*/fp=fopen(test.txt,r);if(fp==NULL){printf(cannotopentest\n);exit(0);}ch=fgetc(fp);while(ch!=EOF){putchar(ch);ch=fgetc(fp);}fclose(fp);}操作说明:在考生目录的**子目录下,有*.c文件,该文件中“/*$1*/”行是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能对test.txt进行读操作,并将读出的文本输出到屏幕上。把这一句删除:将test.txt文件放在考生目录下,并在其中存入“hello,welcometotheworldofC!”字样。参考答案:fp=fopen(test.txt,r);运行样例1行运行结果1:hello,welcometotheworldofC!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*/)a[k]a[m]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]);}操作说明:在考生目录的**子目录下,有*.c文件,该文件中“/*$1*/”行是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:输入6个整数1233436322,输出结果:3612223343。参考答案:a[k]a[m]运行样例1行运行样例1:1233436322结果:3612223343六、程序设计(评分标准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行运行样例1:3结果:1.672.操作说明:设计程序:编写函数strcmpA(char*s1,char*s2),返回较长的字符串的长度减去较短的字符串的长度,相等返回0。参考答案:/*字符串操作*/#includestdio.h#includestdlib.h#includemath.h
本文标题:7-8-C语言上机考试试题2
链接地址:https://www.777doc.com/doc-6262151 .html