636648992.doc
模拟一
第 一 题:选择题(总题数:10 总分数:20) 1:一个C语言程序是由
A)一个主程序和若干子程序组成 B)函数组成
C)若干过程组成 D)若干子程序组成
2:C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符 A)必须为字母 B)必须为下划线
C)必须为字母或下划线 D)可以是字母,数字和下划线中任一种字符 3:已经x为float类型的变量。x=213.82631;printf(\,x);则以上语句______ A)输出格式描述答的域宽不够,不能输出 B)输出为213.83 C)输出为213.82 D)输出为-213.82 4:以下不正确的if语句是:
A)if(x>y$$x!=y); B)if(x==y) x+=y; C)if(x!=y) x++ ; else x--; D)if(x A)goto语句只能用于退出多层循环 B)switch语句中不能出现continue语句 C)只能用continue语句来终止本次循环 D)在循环中break语句不能独立出现 6:若有说明:int a[10];则对a数组元素的正确引用是__ A)a[10] B)a[3.5] C)a[5.5] D)a[10-10] 7:fun((exp1,exp2),(exp3,exp4,exp5)),以上函数调用语句中含有实参的个数为: A)1 B)2 C)4 D)5 8:以下叙述不正确的是 A)一个C源程序可由一个或多个函数组成 B)一个C源程序必须包含一个main函数 C)C程序的基本组成单位是函数 D)在C程序中,注释说明只能位于一条语句的后面 9:已有如下定义和输入语句,int a1,a2; char c1,c2; scanf(\,&a1,&a2); scanf(\,&c1,&c2);若要求a1,a2,c1,c2的值分别为10,20,A,B,当从第一列开始输入数据时,正确的数据输入方式是: A)1020AB(回车) B)10 20(回车)AB(回车) C)10 20 AB(回车) D)10 20AB(回车) 10:设有说明:char w; int x; f1oat y; double? z;则表达式w* x+z一y值的数据类型为: A)float B)char C)int D)double 第 二 题:C语言改错题(总题数:4 总分数:20) 在下面的程序中存在一处错误,请找出来,将错误的行号(2分)和正确答案(3分)填写在每题后面的空格中 1:求ax^2+bx+c=0方程的根,a,b,c由键盘输入,设b^2-4ac>0 行号 语句 1: #include 第 1 页 共 12 页 636648992.doc 4: { 5: float a,b,c,disc,x1,x2,p,q; 6: scanf(“a=%f,b=%f,c=%f”,&a,&b,&c); 7: disc=b*b-4*a*c; 8: p=-b/2a; 9: q=sqrt(disc)/(2*a); 10: x1=p+q;x2=p-q; 11: printf(“x1=%5.2f x2=%5.2f ”,x1,x2); 12: } 错误行号为: 8 。 正确答案为: p=-b/(2*a); 2:设圆半径r=1.5,圆锥高h=3,求圆周长和圆锥体体积。用scanf输入数据,输出计算结果时要求有文字说明,取小数点后2位数字。 行号 语句 1: #include 4: float pi,h,r,l,v; 5: pi=3.1415926; 6: printf(“input r&h: ”); 7: scanf(“%f%f”,&r,&h); 8: l=2*pi*r; 9: v=1/3*pi*r*2*h; 10: printf(“l=%6.2f v=%6.2f ”,l,v); 11: } 错误行号为: 9 。 正确答案为: v=1/3*pi*r*r*h; 3:求前100个自然数的和。 行号 语句 1: #include 4: int i,sum; 5: i=1; 6: while(i<=100) 7: { 8: sum+=i; 9: i++; 10: } 11: printf(“%d ”,sum); 12: } 错误行号为: 4 。 正确答案为: int i,sum=0; 4:求前10个自然数的阶乘之和 行号 语句 1: #include 第 2 页 共 12 页 636648992.doc 3: { 4: long f,s; 5: int k; 6: s=0;f=0; 7: for(k=1;k<=10;k++) 8: { 9: f*=k; 10: s+=f; 11: } 12: printf(“sum=%d ”,s); 13: } 错误行号为: 6 。 正确答案为: s=0;f=1; 第 三 题:C语言程序填空题(总题数:2 总分数:20)根据试题要求将正确答案填到空中(每空5分) 1:从键盘输入一个年份,判断是否是闰年。 # include int year,leap; printf(“input the year:”); scanf(“%d”,&year); if((year%4==0&&year0!=0)||(year@0==0)) leap=1; else leap=0; if(leap==1) printf(“%d is a leap year! ”,year); else printf(“%d is not a leap year! ”,year); } 2:下面程序的功能是检查一个二维数组是否对称(即:对所有i和j都有a[i][j]=a[j][i])。请填空 # include int a[4][4]={1,2,3,4,2,2,5,6,3,5,3,7,4,6,7,4}; int i,j,found=0; for(j=0;j<4;j++) for( i=0 ;i<4;i++) if(a[j][i]!=a[i][j]) { found=1; break; } 第 3 页 共 12 页