1、C言语期中试卷 测试A卷 一、单项抉择题〔40分〕 第1题〔2.0分〕题号:1939 以下描绘中,准确的选项是〔〕。 A:预处置是指实现宏交换跟文件包括中指定的文件的挪用 B:预处置指令只能位于C源文件的开场 C:C源顺序中但凡行首以#标识的操纵行基本上预处置指令 D:预处置确实是实现C编译顺序对C源顺序第一遍,为编译词法跟语法剖析作预备 谜底:C 第2题〔2.0分〕题号:1944 履行上面顺序后,输入后果是〔〕。 main() {a=45,b=27,c=0; c=max(a,b); printf("%d\n",c); } intmax(x,y) i
2、ntx,y; {intz; if(x>y)z=x; elsez=y; return(z); } A:45 B:27 C:18 D:72 谜底:A 第3题〔2.0分〕题号:1853 以下标识符中,不克不及作为正当的C用户界说标识符的是〔〕。 A:a3_b3 B:void C:_123 D:IF 谜底:B 第4题〔2.0分〕题号:1880 以下语句的后果是〔〕。 main() {intj; j=3; printf("%d,",++j); printf("%d",j++); } A:3,3 B:3,4 C:4,3 D:
3、4,4 谜底:D 第5题〔2.0分〕题号:1920 以下顺序的输入后果是〔〕。 main() {intx=1,y=0,a=0,b=0; switch(x) { case1:switch(y) { case0:a++;break; case1:b++;break; } case2:a++;b++;break; case3:a++;b++;break; } printf("a=%d,b=%d\n",a,b); } A:a=1,b=0 B:a=2,b=1 C:a=1,b=1 D:a=2,b=2 谜底:B 第6题〔2.0分〕题号:191
4、0 履行以下语句后,a跟b的值分不为〔〕。 inta,b; a=1+'a'; b=2+7%-4-'A'; A:-63,-64 B:98,-60 C:1,-60 D:79,78 谜底:B 第7题〔2.0分〕题号:1917 在以下给出的表白式中,与do--while(E)语句中的〔E〕不等价的 表白式是〔〕。 A:(!E==0) B:(E>0||E<0) C:(E==0) D:(E!=0) 谜底:C 第8题〔2.0分〕题号:1899 曾经明白字母a的ASCII十进制代码为97,那么履行以下语句后的输入后果为〔〕。 chara='a';
5、a--; printf("%d,%c\n",a+'2'-'0',a+'3'-'0'); A:b,c B:a--运算分歧法,故有语法错 C:98,c D:格局描绘跟输入项不婚配,输入无定值 谜底:C 第9题〔2.0分〕题号:1900 以下顺序的输入后果为〔A〕。 main() {intm=7,n=4; floata=38.4,b=6.4,x; x=m/2+n*a/b+1/2; printf("%f\n",x); } A:27.000000 B:27.500000 C:28.000000 D:28.500000 谜底:A 第10题〔2
6、0分〕题号:1921 在C言语中,为了完毕由while语句形成的轮回,while后一对圆括号 中表白式的值应当为〔〕。 A:0 B:1 C:True D:非0 谜底:A 第11题〔2.0分〕题号:1915 以下顺序的运转后果是〔〕。 main() {intn; for(n=1;n<=10;n++) { if(n%3==0)continue; printf("%d",n); } } A:12457810 B:369 C:12 D:1234567890 谜底:A 第12题〔2.0分〕题号:1914 以下顺序的运转后果是〔〕。
7、 main() { inti=1,sum=0; while(i<10)sum=sum+1;i++; printf("i=%d,sum=%d",i,sum); } A:i=10,sum=9 B:i=9,sum=9 C:i=2,sum=1 D:运转呈现过错 谜底:D 第13题〔2.0分〕题号:1876 以下顺序的输入后果是〔〕。 main() {charc1=97,c2=98; printf("%d%c",c1,c2); } A:9798 B:97b C:a98 D:ab 谜底:B 第14题〔2.0分〕题号:1858 在C言语中,能代
8、表逻辑值“真〞的是〔〕。 A:True B:年夜于0的数 C:非0整数 D:非0的数 谜底:D 第15题〔2.0分〕题号:1903 a,b为整型变量,二者均不为0,以下关联表白式中恒成破的是〔〕。 A:a*b/a*b==1 B:a/b*b/a==1 C:a/b*b+a%b==a D:a/b*b==a 谜底:C 第16题〔2.0分〕题号:1889 以下顺序的输入后果是〔〕。 main() {inta=7,b=5; printf("%d\n",b=b/a); } A:0 B:5 C:1 D:不断定值 谜底:A 第17题〔2
9、0分〕题号:1916 在C言语中,if语句后的一对原括号中,用以决议分支的流程的表 达式〔〕。 A:只能用逻辑表白式 B:只能用关联表白式 C:只能用逻辑表白式或关联表白式 D:可用恣意表白式 谜底:D 第18题〔2.0分〕题号:1924 设j跟k基本上int范例,那么for轮回语句 for(j=0,k=-1;k=1;j++,k++)printf("****\n");〔〕。 A:轮回完毕的前提分歧法 B:是有限轮回 C:轮回体一次也不履行 D:轮回体只履行一次 谜底:B 第19题〔2.0分〕题号:1922 以下顺序的输入为〔〕。
10、 main() {inty=10; while(y--); printf("y=%d\n",y); } A:y=0 B:while形成有限轮回 C:y=1 D:y=-1 谜底:D 第20题〔2.0分〕题号:1882 曾经明白year为整型变量,不克不及使表白式〔year%4==0&&year%100!=0〕 ||year%400==0的值为“真〞的数据是〔〕。 A:1990 B:1992 C:1996 D:2000 谜底:A 二、推断题〔5分〕 第1题〔1.0分〕题号:605 C言语中"%"运算符的运算工具必需是整型.
11、谜底:Y 第2题〔1.0分〕题号:601 #define跟printf都不是C语句。 谜底:Y 第3题〔1.0分〕题号:597 假定有intⅰ=10,j=0;那么履行完语句 if(j=0)ⅰ++;elseⅰ--;ⅰ的值为11。 谜底:N 第4题〔1.0分〕题号:622 假如被挪用函数的界说出如今主调函数之前,能够不用加以申明. 谜底:Y 第5题〔1.0分〕题号:579 x*=y+8等价于x=x*(y+8)。 谜底:Y 三、顺序填空题(18分) 第1题〔9.0分〕题号:115 /*----------------
12、
【顺序填空】
---------------------------------------------------------
功用:不用第三个变量,实现两个数的对换操纵。
-------------------------------------------------------*/
#include
13、ACE***********/ a=【?】; /***********SPACE***********/ b=【?】; /***********SPACE***********/ a=【?】; printf("a=%d,b=%d\n",a,b); } 谜底: =======(谜底1)======= a+b =======(谜底2)======= a-b =========或========= a-b =======(谜底3)======= a-b =========或========= a-b 第2题〔9.0分〕题号:123
14、/*-------------------------------------------------------
【顺序填空】
---------------------------------------------------------
功用:识不输入的字符串,每个单词输入一行
-------------------------------------------------------*/
#include
15、 while((c=getchar())!='\n') { if(c==''||c=='\t'||c=='\n') { if(inspase=0) { inspace=1; putchar('\n'); } } else { inspace=0; putchar(c); } } } 谜底: =======(谜底1)======= inspace=0 =======(谜底2)======= inspace==0 =======(谜底3)======= putchar(c) 四、编程(37分) 第1题〔15.0分
16、〕题号:106
/*------------------------------------------------
【顺序计划】
--------------------------------------------------
功用:编写函数fun盘算以下分段函数的值:
x^2+x+6x<0且x≠-3
f(x)=x^2-5x+60≤x<10且x≠2及x≠3
x^2-x-1别的
------------------------------------------------*/
#include
17、n(floatx) { /**********Program**********/ /**********End**********/ } main() { floatx,f; printf("inputx="); scanf("%f",&x); f=fun(x); printf("x=%f,f(x)=%f\n",x,f); wwjt(); } voidwwjt() { FILE*IN,*OUT; intn; floati; floato; IN=fopen("in.dat","r"); if(IN==NULL) {
18、 printf("ReadFILEError"); } OUT=fopen("out.dat","w"); if(OUT==NULL) { printf("WriteFILEError"); } for(n=0;n<10;n++) { fscanf(IN,"%f",&i); o=fun(i); fprintf(OUT,"%f\n",o); } fclose(IN); fclose(OUT); } 谜底:---------------------- floaty; if(x<0&&x!=-3.0) y=x*x+x+6; elseif(x>=0&&x
19、<10.0&&x!=2.0&&x!=3.0) y=x*x-5*x+6; elsey=x*x-x-1; returny; ---------------------- 第2题〔22.0分〕题号:108 /*------------------------------------------------ 【顺序计划】 -------------------------------------------------- 功用:编写函数fun求sum=d+dd+ddd+……+dd...d(n个d), 此中d为1-9的数字。 比方:3+33+333+3333+333
20、33(如今d=3,n=5),d跟n在主函
数中输入。
------------------------------------------------*/
#include
21、 scanf("%d",&n); sum=fun(d,n); printf("sum=%ld\n",sum); wwjt(); } voidwwjt() { FILE*IN,*OUT; intn; inti[2]; longo; IN=fopen("in.dat","r"); if(IN==NULL) { printf("ReadFILEError"); } OUT=fopen("out.dat","w"); if(OUT==NULL) { printf("WriteFILEError"); } for(n=0;n<2;n++) { fscanf(IN,"%d",&i[n]); } o=fun(i[0],i[1]); fprintf(OUT,"%ld\n",o); fclose(IN); fclose(OUT); } 谜底:---------------------- longints=0,t=0; inti; for(i=1;i<=n;i++) {t=t+d; s=s+t; d=d*10; } returns; ----------------------






