二级C语言分类模拟题513
(总分52.5, 做题时间90分钟)
选择题
1. 
以下程序段的输出结果是
char s[]="\\141\141abc\t";
printf ("%d\n",strlen(s));
A 9
B 12
C 13
D 14
    分值: 1
答案:A
[解析] 本题考核的知识点是字符串的长度。字符数组中可以存放字符串,但字符数组的长度并不是字符串的长度,字符串的长度是指字符数组中存放的有效字符个数,即,"\0"之前的字符数。 字符数组s中依次存放的字符是: "\"1"4"1"141"a"b"c"\t"和最后一个字符串结束标记 "\0",故字符串的长度是9。所以,4个选项中A为所选。
2. 
结构化程序所要求的基本结构不包括______。
A 顺序结构
B GOTO跳转
C 选择(分支)结构
D 重复(循环)结构
    分值: 2
答案:B
[解析] 1966年Boehm和Jacopini证明了程序设计语言仅仅使用顺序、选择和重复(循环)三种基本控制结构就足以表达出各种其他形式的结构化程序设计方法,因此本题答案为B。
3. 
下面程序的运行结果是______。
for(i=3;i<7;i++)printf((i%2)?("**%d\n"):("##%d\n"),i);
A **3##4**5**6
B ##3**4##5**6
C ##3**4##5##6
D **3##4**5##6
    分值: 2.5
答案:D
[解析] 本题考查printf函数的输出格式和条件表达式“?:”的使用。①printf函数输出时“**%d\n”和“##%d\n”中的“##”和“**”都是直接输出。②条件表达式的基本格式为:“a?b:c”。它的运算规则为:当a为非0时,整个表达式的值取b的值,当a为0时,整个表达式取c的值。
4. 
有以下程序
#include<stdio.h>
main()
{
int i,j,x=0;
for(i=0;i<2;i++)
{
x++;
for(j=0;j<=3;j++)
{
if(j%2)continue;
x++;
}
x++;
}
printf("x=%d\n",x);
}
程序执行后的输出结果是______。
A x=8
B x=4
C x=6
D x=12
    分值: 2
答案:A
[解析] 本题考查的是for循环的嵌套。外循环的循环变量i从0递增到1会循环2次,内循环的循环变量j从0递增到3会循环4次。但是内循环中有一条if语句,每当j%2为真,即j为奇数时会跳过下面的x++;语句,所以4次内循环只有2次执行到x++;语句,再加上外循环中包含的2条x++;语句,所以每次外循环会使x自增4次,2次外循环下来x的值为8。故应该选择A。
5. 
设某棵树的度为3,其中度为3,1,0的节点个数分别为3,4,15。则该树中总节点数为______。
A 22
B 30
C 35
D 不可能有这样的树
    分值: 1
答案:B
[解析] 在树结构中,一个节点所拥有的后件个数称为该节点的度,所有节点中最大的度称为树的度,树中的节点数即为树中所有节点的度数之和再加1。假设本题中度为2的节点数为n,
总节点数为m,m=3×3+1×4+n×2+1,叶子节点数15=m-(3+4+n),得n=8,则m=9+4+8×2+1=30。故答案为B选项。
6. 
有以下程序:
#include<stdio.h>
main()
{
char c[2][5]={"6938","8254"},*p[2];
int i,j,s=0;
for(i=0;i<2;i++)p[i]=c[i];
for(i=0;i<2;i++)
for(j=0;p[i][j]>0;j+=2)s=10*s+p[i][j]-"0";
printf("%d\n",s);
}
程序运行后的输出结果是______。
A 6938
B 9824
C 4528
D 6385
    分值: 1
答案:D
[解析] 本题中首先是将二维字符数组c赋值指针数组p,然后遍历p到两个字符串中的偶数位置的字符并组成一个数值输出,根据代码执行即可得到结果为6385。
7. 
在一个C程序中( )。
A main函数必须出现在所有函数之前
B main函数可以在任何地方出现
C main函数必须出现在所有函数之后
D main函数必须出现在固定位置
    分值: 1
答案:B
[解析] 一个完整的C语言程序有且仅有一个主函数(main()函数)。程序总从main()函数的第一条语句开始执行,到main()函数的最后一条语句结束,其他函数都是在执行main()函数时,通过函数调用或嵌套调用而得以执行的。C语言规定,main()函数在程序中的位置是任意的,故选项A、选项C和选项D均不正确。所以,B选项为所选。
8. 
有以下程序
#include<stdio.h>
main()
{ int i=1;
i=i^i;
printf("%d\n",i);
}
程序运行后的输出结果是______。
A 0
B -1
C 1
D 7
    分值: 1
答案:A
[解析] ^是按位异或,1^1结果为0,答案选择A。
9. 
阅读以下程序
#include <stdio.h>
main()
{ int case;
float printF;
printf("请输入2个数:");
scanf("%d%f",&case,&printF);
printf("%d%f\n",case,printF);
}
该程序在编译时产生错误,其出错原因是______。
A 定义语句出错,case是关键字,不能用作用户自定义标识符
B 定义语句出错,pfintF不能用作用户自定义标识符
C 定义语句无错,scanf不能作为输入函数使用
D 定义语句无错,printf不能输出case的值
printf输出格式右对齐    分值: 1
答案:A
[解析] 用户自定义标识符不能使用关键字,case是关键字之一,所以选择A。
10. 
有以下程序
main( )
{ int i,s=0;
for(i=1;i<l0;i+=2) s+=i+1
printf("%d\n",s);
}
程序执行后的输出结果是 ______。
A 自然数1~9的累加和