1、国家二级( C语言)笔试模拟试卷 50及答案与解析 1 算法一般都可以用 _控制结构组合而成。 ( A)循环、分支、递归 ( B)顺序、循环、嵌套 ( C)循环、递归、选择 ( D)顺序、选择、循环 2 数据的存储结构是指 _。 ( A)数据所占的存储空间量 ( B)数据的逻辑结构在计算机中的表示 ( C)数据在计算机中的顺序存储方式 ( D)存储在外存中的数据 3 设有下列二叉树: 对此二叉树中序遍历的结果为 _。 ( A) ABCDEF ( B) DBEAFC ( C) ABDECF ( D) DEBFCA 4 在面向对象方法中,一个对象请求另一对象为其服务的方式是通过发送 _。 ( A)
2、调用语句 ( B)命令 ( C)口令 ( D)消息 5 检查软件产品是否符合需求定义的过程称为 _。 ( A)确认测试 ( B)集成测试 ( C)验证测试 ( D)验收测试 6 下列工具中为需求分析常用工具的是 _。 ( A) PAD ( B) PFD ( C) N-S ( D) DFD 7 下面不属于软件设计原则的是 _。 ( A)抽象 ( B)模块化 ( C)自底向上 ( D)信息隐蔽 8 索引属于 _。 ( A)模式 ( B)内模式 ( C)外模式 ( D)概念模式 9 在关系数据库中,用来表示实体之间联系的是 _。 ( A)树结构 ( B)网结构 ( C)线性表 ( D)二维表 10
3、将 E-R图转换到关系模式时,实体与联系都可以表示成 _。 ( A)属性 ( B)关系 ( C)键 ( D)域 11 下列叙述中正确的是 _。 ( A) C语言编译时不检查语法 ( B) C语言的子程序有过程和函数两种 ( C) C语言的函数可以嵌套定义 ( D) C语言中,根据函数能否被其他源文件调用,被区分为内部函数和外部函数 12 有以下程序: main() int a; char c=10; float f=100.0; double x; a=f/=c*=(x=6.5); printf(“%d%d%3.1f%3.1fn“, a, c, f, x); 程序运行后的输出结果是 _。 (
4、A) 1 65 1 6.5 ( B) 1 65 1.5 6.5 ( C) 1 65 1.0 6.5 ( D) 2 65 1.5 6.5 13 以下变量 x、 y、 z均为 double类型且已正确赋值,不能正确表示数学式子x/(y*2)的 C语言表达式是 _。 ( A) x/y*2 ( B) x*(1/(y*z) ( C) x/y*1/z ( D) x/y/z 14 若 a为 int类型,且其值为 3,则执行完表达式 a+=a-=a*a后, a的值是_。 ( A) -3 ( B) 9 ( C) -12 ( D) 6 15 以下程序段中与语句 k=a b?(b c?1: 0): 0;功能等价的是
5、 _。 ( A) if(a b) ( A) 9 ( B) -2 ( C) -1 ( D) 8 18 若执行以下程序时从键盘上输入 9,则输出结果是 _。 main() int n; scanf(“%d: “, ( A) 11 ( B) 10 ( C) 9 ( D) 8 19 有以下程序段: int k=0; while(k=1)k+; while循环执行的次数是_。 ( A)无限次 ( B)有语法错,不能执行 ( C)一次也不执行 ( D)执行 1次 20 有以下程序: void sum(int *A) a0=a1; main() int aa10=1,2,3,4,5,6,7,8,9,10,
6、i; for(i=1; i 0; i-)sum( int s4; double ave; a, *p; 34 如果输入 1、 2、 3、 4,则以下程序的运行结果为【 】。 #include stdio.h main() char c; int i, k; k=0; for (i=0; i 4; i+) while(1) c=getchar(); if(c =0 int i, j; i=0; for (j=0; j 3; j+) printf(“b%d%d=%d “, i, j, *(pbi+j); printf(“n“); 38 若输入 5、 9,以下程序的运行结果为【 】。 main()
7、int a, b, *pt1, *pt2; printf(“input a, b: “); scanf(“%d%d“, a+=-6, a=(-6)+(-6)=-12。 15 【正确答案】 A 【试题解析】 “a b?(b c?1:0):0”的求解顺序是:先判断 a b是否为真,如果为真,则执行 b c?1:0,如果 b c为真 ,则 (b c?1:0)的值为 1,从而整个表达式返回 1,否则整个表达式返回 0;如果 a =b,则表达式返回 0。因此功能等价的语句应为 if(a B) else k=0;。 16 【正确答案】 C 【试题解析】 C语言中在做逻辑或运算时,自左向右判断各个参加或运算
8、的表达式,一旦运算到某式的值为非零时,表明整个表达式一定为真,余下的语句则不再进行运算。本题中, +x的值为真,则 +y并没有进行运算,所以 y值不变。 17 【正确答案】 D 【试题解析】 本题程序第一轮 循环后 b的值为 9,在进行循环条件测试时,先取b的现值 9与 0比较,然后再将 b减 1。由于 9 0不成立,因此循环结束,这时 b的值已变成 8,本题正确答案为 D。 18 【正确答案】 B 【试题解析】 n+是在语句结束后再加 1,因此, if语句中相当于判断的是 910,当然是执行 if语句后面的 printf语句,而这时,因为 if语句被执行, n的值也被加 1,所以在打印时,
9、n值为 10,而 n-是在 printf语句执行完毕后再减 1的。 19 【正确答案】 A 【试题解析】 C语言里关系表达式的等于应该是 “ ”。一个等于号表示赋值,即这里面重复的把 1赋给 k,自然表达式 k=1的值总为 1, while后面的表达式恒为真,当然会进入死循环。 20 【正确答案】 D 【试题解析】 C语言规定,实参变量对形参变量的数据传递是 “值传递 ”,只由实参传给形参,而不能由形参传回来给实参。函数调用结束后,形参单元被释放,实参单元仍保留并维持原值。本题要求输出 aa0的值,结果应为 1。 21 【正确答案】 A 22 【正确答案】 D 23 【正确答案】 A 24 【
10、正确答案】 D 25 【正确答案】 A 26 【正确答案】 C 27 【正确答案】 C 28 【正确答案】 C 29 【正确答案】 C 30 【正确答案】 A 31 【正确答案】 10.5 32 【正确答案】 *(p+5) 33 【正确答案】 22 34 【正确答案】 k=1234 35 【正确答案】 1 1 36 【正确答案】 countryside 37 【正确答案】 b00=1 b01=2 b02=3 38 【正确答案】 5,9 39 【正确答案】 3, 4, 5, 6, 1, 2 40 【正确答案】 4, 8 4, 4 41 【正确答案】 CIRCLE(R, L, S, V) S=PI*R*R r, 1, s, v