C模拟卷子.docx
- 文档编号:3712889
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:44
- 大小:94.60KB
C模拟卷子.docx
《C模拟卷子.docx》由会员分享,可在线阅读,更多相关《C模拟卷子.docx(44页珍藏版)》请在冰豆网上搜索。
C模拟卷子
2007-2008学年第1学期期末考试试卷及参考答案
07-08第1学期《C语言程序设计基础》试卷A
班级姓名学号分数
一、单项选择题。
(每道选择题只有一个正确答案,请将答案填在题前的括号内,填写其它地方无效。
每题2分,共15题,共计30分。
)
()1、一个C语言程序是由。
A)一个主程序和若干子程序组成B)函数组成
C)若干过程组成D)若干子程序组成
()2、已知各变量的类型说明如下:
intk,a,b;
unsignedlongw=5;
doublex=1.42;
则以下不正确的表达式是。
A)x%(-3)B)w+=-2
C)k=(a=2,b=3,a+b)D)a+=a-=(b=4)*(a=3)
()3、当a=1、b=3、c=5、d=4时,执行以下程序段后x的值是。
if(a
if(c else if(a if(b elsex=3; elsex=6; elsex=7; A)1B)2C)3D)6 ()4、以下正确的描述是。 A)continue语句的作用是结束整个循环的执行 B)只能在循环体内和switch语句体内使用break语句 C)在循环体内使用break语句或continue语句的作用相同 D)从多层循环嵌套中退出时,只能使用goto语句。 ()5、C语言规定,函数返回值的类型是由。 A)在定义该函数时所制定的函数类型所决定 B)return语句中的表达式类型所决定 C)调用该函数时的主调函数类型所决定 D)调用该函数时系统临时决定 ()6、以下关于宏替换的叙述不正确的是。 A)宏替换不占用运行时间B)宏名无类型 C)宏替换只是字符替换D)宏名必须用大写字母表示 ()7、以下程序的运行结果是。 #defineMIN(x,y)(x)<(y)? (x): (y) main() {inti=10,j=15,k; k=10*MIN(i,j); printf(“%d\n”,k); } A)10B)15C)100D)150 ()8、____是C语言合法的变量说明。 A.floatm=n=3.45;B.inta1,a2=001; C.charch={'A','B'};D.inta;b; ()9、以下正确的函数形式是。 A)doublefun(intx,inty){z=x+y ;returnz ;} B)fun(intx,y){intz;returnz;} C)fun(x,y){intx,y;doublez;z=x+y;returnz;} D)doublefun(intx,inty){doublez ;z=x+y ;returnz ;} ()10、在C语言程序中以下正确的描述是。 A)函数的定义可以嵌套,但函数的调用不可以嵌套 B)函数的定义不可以嵌套,但函数的调用可以嵌套 C)函数的定义和函数的调用均不可以嵌套 D)函数的定义和函数的调用均可以嵌套 ()11、下面函数调用语句含有实参的个数为。 A)5B)1C)2D)4 ()12、以下不正确的说法是。 A)在不同函数中可以使用相同名字的变量B)形式参数是局部变量 C)在函数内定义的变量只在本函数范围内有效D)在函数内的复合语句中定义的变量在本函数范围内有效。 ()13、以下程序的正确运行结果是。 #include voidnum() {externintx,y ;inta=15,b=10 ; x=a-b;y=a+b; } intx,y; main() {inta=7,b=5 ; x=a+b ; y=a-b; num() printf(“%d,%d\n”),x,y); } A)12,2B)不确定C)5,25D)1,12 ()14、在一个源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是。 A)externB)registerC)autoD)static ()15、如果这样定义: inta[3][4];则数组a中各元素。 A)可在程序运行阶段得到初值0; B)可在程序编译阶段得到初值0; C)不能得到确定的初值; D)可在编译阶段或在运行阶段得到初值0; 二、写出下列程序的运行结果。 (在书写结果的表格中,假定每一格代表屏幕上一个字符的位置,请在表格内书写运行结果。 共计10分) 1、(4分) voidmain() {floatx=6.7,y=8.5; inti,j; i=x+y; j=(int)x+(int)y; printf("x=%f,\ny=%f,\ni=%d,\nj=%d\n",x,y,i,j); } 运行结果为: 2、(6分) voidmain() { inti=0;charst[]="1234567"; while(i<6){ switch(st[i]) {case'1': putchar('1'); case'2': putchar('2');break; case'3': putchar('3'); case'4': putchar('4'+1); default: printf("%s","56"); } putchar('\n');i++; } } 运行结果为: 三、读程序(共16分) 1、(8分)写出其代表的数学运算的表达式,并给程序加注释。 #include main() {intn,i; longlFactorial=1,lSum=0; scanf(“%d”,&n);/**/ for(i=1;i<=n;i++) { lFactorial=lFactorical*i; lSum=lSum+lFactorial; }/**/ printf("sum=%ld\n",lSum);/**/ } 2、(8分)写出其代表的数学运算的表达式,并给程序加注释。 #include main() {intn,i; longlFactorial=1,lSum=0; scanf(“%d”,&n);/**/ for(i=1;i<=n;i++) { lFactorial=lFactorial*i; if(i%2==1)lSum=lSum+lFactorial; }/**/ printf("sum=%ld\n",lSum);/**/ } 四、编程题(共30分) 1、(20分)从键盘读入N个整数,存入一个一维数组中,输出这N个数,对这N个数排序后重新输出,请编写程序。 编程要求: 1)输出时,一行输出5个数;2)排序后为升序,即由小到大;3)程序框架采用函数调用的形式;4)N的大小可自由定义。 2、(5分)输入一个长整型数,计算该数的每位数字之和。 3、(5分)输出1到100之内所有能被4整除的数据,并计算这些数据的和。 五、算法题(8分) 1、方程ax2+bx+c=0,考虑以下几种可能: 1)a=0,不是二次方程; 2)b2—4ac=0,有两个相等实根; 3)b2—4ac>0,有两个不等实根; 4)b2—4ac<0,有两个共轭复根; 设计算法求解,用N—S图表示。 六、简答题(6分) 1、第一个人A写了一个文件,取名为a.cpp;第二个人B写了一个文件,保存的物理地址和名字为: D: \abc\b.cpp,B中有一个排序函数voidbsort(intarray[],intn){}。 a.cpp执行时,需要调用b.cpp中的排序函数,为了使上面的工作正常执行,请写出a.cpp文件和b.cpp文件的简单框架(排序函数可以用空函数代替)。 07-08第1学期《C语言程序设计基础》试卷B 一、单项选择题。 (每道选择题只有一个正确答案,请将答案填在题前的括号内,填写其它地方无效。 每题2分,共15题,共计30分。 ) ()1、在C语言中,____既不是保留字,也不是合法的标识符。 A)a*bB)autoC)sharD)a2b ()2、以下程序的输出结果是。 (注: □表示空格) main() { printf(“\n*s1=%15s*”,“chinabeijing”); printf(“\n*s2=%-5s*”,“chi”); } A)*s1=chinabeijing□□□* *s2=**chi* B)*s1=chinabeijing□□□* *s2=chi□□* C)*s1=□□□chinabeijing* *s2=chi□□* D)*s1=*□□chinabeijing* *s2=□□chi* ()3、执行下列程序段: for(i=0;i<5;i++) for(j=1;j<6;j++)x+=3; 其中表达式“x+=3”共执行____次。 A)30B)24C)25D)20 ()4、判断字符串a和b是否相等,应当使用。 A)if(a==b) B)if(a=b) C)if(strcpy(a,b)) D)if(strcmp(a,b)) ()5、凡是函数中未指定存储类别的局部变量,其隐含的存储类别 为。 A)静态(static) B)自动(auto) C)外部(extern) D)寄存器(register) ()6、#define能做简单的替代,用宏替代计算多项式4*x*x+3*x+2之值的函数f,正确的宏定义是。 A)#definef(x)4*x*x+3*x+2 B)#definef4*x*x+3*x+2 C)#definef(a)(4*a*a+3*a+2) D)#define(4*a*a+3*a+2)f(a) ()7、下面程序的输出结果是。 #defineMUL(z)(z)*(z) main() { printf(“%d”,MUL(1+2)+3); } A)12B)6C)36D)9 ()8、在C语言中,表达式____的值是整数类型。 A.25.0B.34.5+0.5C.12.3*10D.3%10 ()9、以下正确的函数声明形式是。 A)doublefun(intx,inty)B)doublefun(intx;inty) C)doublefun(intx,inty) ;C)doublefun(intx,y) ()10、C语言规定,简单变量作为实参时,它和对应形参之间的数据传递方式是。 A)地址传递B)单向值传递 C)由实参传给形参,再由形参传回给实参D)由用户定义传递方向 ()11、下面函数调用语句含有实参的个数为。 A)5B)1C)2D)4 ()12、若用数组名作为函数调用的实参,则传递给形参的是。 A)数组的首地址B)数组第一个元素的值 C)数组中全部元素的值D)数组元素的个数 ()13、以下不正确的说法是。 A)在不同函数中可以使用相同名字的变量B)形式参数是局部变量 C)在函数内定义的变量只在本函数范围内有效D)在函数内的复合语句中定义的变量在本函数范围内有效。 ()14、以下程序的正确运行结果是。 #include voidnum() {externintx,y ;inta=15,b=10 ; x=a-b;y=a+b; } intx,y; main() {inta=7,b=5 ; x=a+b ; y=a-b; num() printf(“%d,%d\n”),x,y); } A)12,2B)不确定C)5,25D)1,12 ()15、C语言规定,函数返回值的类型是由。 A)在定义该函数时所制定的函数类型所决定 B)return语句中的表达式类型所决定 C)调用该函数时的主调函数类型所决定 D)调用该函数时系统临时决定 二、写出下列程序的运行结果。 (在书写结果的表格中,假定每一格代表屏幕上一个字符的位置,请在表格内书写运行结果。 共计10分) 1、(4分) #include"stdio.h" intfb(intn) {inti,t=1; for(i=1;i<=n;i++) t=t*i; returnt; } main() {intj=1; for(;j<5;j++) printf("j=%d,fb(%d)=%d\n",j,j,fb(j)); } 2、(6分) #include voidmain(void) {intx,y; for(x=1;x<15;x+=3) {if(x>10)continue; printf("x=%d\n",x); for(y=1;y<=10;y+=2) {if(y%3)break; printf("y=%d\n",y); } } printf("x=%d,y=%d\n",x,y); } 三、读程序(共26分) 1、(8分)写出其代表的数学运算表达式。 #include voidmain() {floatfac(intn); intn; floaty; printf("inputanintegernumber: "); scanf("%d",&n); y=fac(n); printf("%d! =%10.0f\n",n,y); } floatfac(intn) { floatf; if(n<0){printf("n<0,dataerror! ");} elseif(n==0||n==1)f=1; elsef=fac(n-1)*n; return(f); } 数学表达式: 2、(8分)写出其代表的数学运算表达式。 #include voidmain() {longfac(long); longi,n; scanf("%ld",&n); for(i=1;i<=n;i++) printf("%ld! =%ld\n",i,fac(i)); } longfac(longn) {staticlongi,f=1; for(i=1;i<=n;i++) f=f*i; return(f); } 数学表达式: 3、(10分)分析程序的数学功能: #include main() {intiN=0;intiNN=0; intinsum;intiX=0; intinprod; for(iNN=10;;iNN++) { insum=0; inprod=1; iN=iNN; do { iX=iN%10; insum=insum+iX; iN=iN/10; }while(iN! =0); iN=iNN; do { iX=iN%10; inprod=inprod*iX; iN=iN/10; }while(iN! =0); if(insum==inprod) {printf(”iNN=%d\n”,iNN); break; } } } 功能: 四、编程题(共20分) 1、(15分)用二分法求方程x3-3x2+2x-6=0在(-20,20)之间的根,要求绝对误差不超过0.001。 2、(5分)请编写程序: 如果3个班的成绩分别放在3个一维数组中,每个数组中学生数不一样,假设3个一维数组的初始化可以一次给出。 求解每个数组中的平均成绩并打印输出结果,假设主程序已经写出,请写出子程序。 #include voidmain() {floataverage(floatarray[],intn) floatscore_1[5]={98.5,97,91.5,60,55}; floatscore_2[10]={67.5,89.5,99,69.5,77,89.5,76.5,54,60,99.5}; Floatscore_3[6]={58,65,90,89,85,94}; printf(“theaverageofclassAis%6.2f\n”,average(score_1,5)); printf(“theaverageofclassBis%6.2f\n”,average(score_2,10)); printf(“theaverageofclassCis%6.2f\n”,average(score_3,6)); } floataverage(floatarray[],intn) { } 五、算法题(8分) 设计一个算法,求解从1908至2007年之间的闰年,输出闰年(四位数表示: ××××)。 用N—S图表示。 能定为闰年的条件: 1)能被4整除但不能被100整除;或2)能被100整除且能被400整除。 六、简答题(6分) 第一个人A写了一个文件,取名为a.cpp;第二个人B写了一个文件,保存的物理地址和名字为: D: \abc\b.cpp,B中有一个排序函数voidbsort(intarray[],intn){}。 a.cpp执行时,需要调用b.cpp中的排序函数,为了使上面的工作正常执行,请写出a.cpp文件和b.cpp文件的简单框架(排序函数可以用空函数代替)。 07-08第1学期《C语言程序设计》试卷A 一、选择题(每小题2分,共计30分) 题号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 得分 答案 1、设有如下程序段: intx=2002,y=2003; printf("%d\n",(x,y)); 则以下叙述中正确的是()。 A)输出语句中格式说明符的个数少于输出项的个数,不能正确输出 B)运行时产生出错信息C)输出值为2002D)输出值为2003 2、已定义a、b、c为double类型,若要求通过输入分别给a、b、c输入1、2、3,输入形式如下(其中⊔代表空格): 1.0⊔2.0⊔3.0↙ 则,下面能正确进行输入的语句是() A)scanf("%f%f%f",a,b,c);B)scanf("%5.1lf%5.1lf%5.1lf",&a,&b,&c); C)scanf("%lf%lf%lf",&a,&b,&c);D)scanf("%e%e%e",&a,&b,&c); 3、为了避免嵌套的if-else语句的二义性,C语言规定else总是与()组成配对关系。 A)缩排位置相同的ifB)与其之前未配对的if C)与其之前未配对的最近的ifD)同一行上的if 4、判断字符串a和b是否相等,应当使用。 A)if(a==b)B)if(a=b)C)if(strcpy(a,b))D)if(strcmp(a,b)) 5、以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是。 main() {int*p,*q,a,b; p=&a, printf(“inputa: ”); scanf(“%d”,*p); … } A)*p表示的是指针变量p的地址 B)*p表示的是变量a的值,而不是变量a的地址 C)*p表示的是指针变量p的值 D)*p只能用来说明p是一个指针变量。 6、下列叙述不正确的是() A)主函数中定义的变量在整个程序中都是有效的。 B)复合语句中定义的变量只在该复合语句中有效。 C)其他函数中定义的变量在主函数中不能使用。 D)形参是局部变量。 7、说明一
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 模拟 卷子