1、试题二、语言基础题 ( 本题共 34 分 ) (一 ) 判断题 ( 每题 1 分 , 共 10 分 ) 说明 : 在以下提供的若干陈述中 , 逐一判断其正确与否 , 选 A 表示正确 , 选 B 表示错误。 (16) C 语言源程序文件通过了编译、连接之后 , 生成一个后缀为 .EXE 的文件。 (17) 在 C 程序中 , 函数既可以嵌套定义 , 也可以嵌套调用。 (18) 在 C 程序中 ,APH 和 aph 代表不同的变量。 (19) 表达式 0195 是一个八进制整数。 (20) 表达式 3.14%2 不符 合 C 语言语法。 (21) 设变量定义为 char cc=“12n345“,
2、 则表达式 sized(cc) 的值是 7 。 (22) 执行 printf(“ %d“, M - A + a - m);, 输出 0 。 (23) 表达式 !x 等价于 x!=1 。 (24) 表达式 (z=0,(x=2)|(z=1),z) 的值是 1。 (25) 执行 printf(“%x“,“12345“+1);, 输出 12346 。 (二 )单选题 ( 每题 2 分 , 共 24 分 ) (26) 运算符 (26) 的优先级最高。 A 、 B 、 += C 、 ?: D、 + (27) 若 a 是整型变量 , 表达式 (aa) 等价于 (27) . A 、 a B 、 1 C 、 0
3、 D、 2 (28) 下列程序段的输出结果是 (28) #define MA(x,y)(x)*(y) printf(“%d“,MA(5,4+2)-7); A 、 30 B 、 23 C 、 15 D 、 1 (29) 设有整型变量 a,b,c, 其中 a,b 的值分别为 10 与 20, 计算表达式 “c=(a%2=0)?a:b“后 ,c 的值为 (29) A 、 O B 、 5 C、 10 D、 20 (30) 下列程序的输出结果是 ( 30) 。 #include stdi0.h void main () int y; double d=3.4,x; x=(y=d/2.0)/2; prin
4、tf(“(%0.2f,%d)” ,x,y); A 、 (0.00,1) B、( 0.85,1.7) C、 (0.50,1) D、以上都不对 (31) 程序段 ( 31) 的功能是将变量 u 、 S 中的最大值赋给变量 t 。 A、 if(us) t=u;t=s; B 、 t=u; if(t )s)t=s; C、 if(us) t=s;else t=u; D 、 t=s;if(u ) t)t=u; (32)对于以下递归函数 f,调用 f( 3) 的返回值是 (32) A 、 10 B 、 6 C 、 3 D 、 0 (33)下列程序段的输出结果是 ( 33) 。 int k; switch(k)
5、 case 1:putchar( P ); case 2: case 3: putchar( Q );break; case 4: putchar( R ); default: putchar( S ); A、 P B、 PQ C、 PQR D、 PQRS ( 34)下列程序段的输出结果是 ( 34) 。 void main() int k; for (k=1;k 5;k+ if(k%2) printf(“#“);else continue ; printf(“ *” ) ; A 、 #*#* B 、 *#*# C、 # D、以上都不对 (35) 设变量定义为 int a3=1,4,7,*p=
6、 int p(int *y) +*y; return x-1; void main () int y ; y=p( printf(“(%d,%d)” ,x,y); A、( -1, 0) B、( 1, -1) C、( 1, 0) D 、出错 试 题三、程序填空题 ( 每空 2 分 , 共 16 分 ) 说明 : 阅读下列程序说明和相应程序 , 在每小题提供的若干可选答案中 , 挑选一个正确答案。 程序 1 、 【程序说明】 输出 11000 之间所有满足各位数字的立方和等于它本身的数。 【程序】 #include stdi0.h void main () int digit,k,m,s; for
7、 (k=1;k =1000;k+) (38) while (m!=0) digit=m%10;s=s+digit*digit*digit; (39); if (40) printf(“%d“,s); (38) A 、 s=0; B、 m=k;s=0 C、 m=k; D、 k=m;s=0; (39) A.m=m/10 B m=m%10 C.m=m D、 m=k/lO (40) A.m!=s B.m=s C.k!=s D.k=s 程序 2 【程序说明】 输入 10 个整 数 , 将它们存入数组 a 中 , 再输入一个数 x, 然后在数组中查找 x, 如果找到 , 输出相应的下标 ( 如有多个元素与
8、 x 相等 , 只要输出下标值最小的那个元素的下标 ), 否则 , 输出 “Not Found“ 。 【程序】 #include stdi0.h void main () int k,sub,x;int a10; for (k=0;k 10;k+ scanf(“%d“,ak); printf(“Input x n“); scanf(“%d“,sub=-l; for (k=0;k 10;k+ if(ak=x)(41) if (42) printf(“Index is %d n“,sub); else printf(“Not Found n“); (41)A 、 sub=k; B 、 break
9、; C 、 sub=k;break ; D 、 sub=k;break ; (42)A 、 sub !=-1 B 、 sub !=0 C 、 sub=-1 D 、 sub=0 程序 3 、 【程序说明】 当前目录下存放着文本文件 from.txt, 将其中除数字以外的内容显示在屏幕上。 【程序】 #include stdi0.h #include stdlib.h void main () FILE *fr;int ch; if(43) printf(“Can not open file- ) form.txt“); exit (O); while (!feof(fr) (44) if ( (
10、45) ) putchar(ch); fclose(fr); (43)A、 (fr=fopen(“from.txt“,“w“)=NULL B 、 (fr=fopen(“from.txt“,“r“)=NULL C 、 fr=fopen(“from.txt“,“r“)=NULL D 、 fr=fopen(“from.txt“,“a“)=NULL (44)A 、 ch=getchar(fr) B 、 ch=fgetc() C.ch=fgetc(fr) D 、 ch=getchar() (45)A. ch= 0 |chm) m=sk; k+; printf(“%d“,m); 2 、程序 2 #incl
11、ude stdi0.h void main () int j,k; int a3=3,4,5; for (j=0;j 3;j+ for (k=0;k 3;k+ printf(“%d“,a(j+k)%3); printf(“#“); 3 、程序 3 #include stdio.h void main () int i=0,n; char S 10=“298h01“; n=0; for (i=0;S != 0;i+) if(s = 9 else break; printf(“%dn“,n); 试题五、程序设计题(每题 10 分,共 20分) 1、 输入 10 个整数,求它们的平均值,并输出大于平均值的数据的个数。 2、 输入两个正整数 m 和 n( mn),求从 m 到 n之间(包括 m和 n)所有素数的和,要求定义并调用函数 isprime(x)来判断 x 是否为素数(素数年是除 1 以外只能被自身整除的自然数)。