国家二级(C语言)机试模拟试卷410
选择题
1.有以下程序:
#include
main()
{ int sum=0,x=5;
d0{sum+=x;}while(!–x);
printf(\\(B)
A. 0
B. 5
C. 14
D. 15
解析:do-while循环,先执行循环体sum+=x,则sum=sum+x=0+5=5,再执行while中的表达式,结果为0,退出循环,所以运行结果是5。
2.对下列二叉树进行前序遍历的结果为( )。
(B)
A. ABCDEFGH
B. ABDGEHCF
C. GDBEHACF
D. GDHEBFCA
解析:遍历就是不重复地访问一叉树的所有结点。二叉树遍历的方法有3种:前序遍历、中序遍历和后序遍历。记住3种遍历的顺序:①前序,访问根→按前序遍历左子树→按前序遍历右子树:②中序,按中序遍历左子树→访问根→按中序遍历右子树;③后序,按后序遍历左子树→按后序遍历右子树→访问根。所以对该二叉树的中序遍历结果为ABDGEHCF。
3.以下叙述中错误的是( )。(C)
A. 算法正确的程序可以有零个输入
B. 算法正确的程序最终一定会结束
C. 算法正确的程序可以有零个输出
D. 算法正确的程序对于相同的输入一定有相同的结果
解析:算法的特征:①有穷性。一个算法(对任何合法的输入)在执行有穷步后能够结束,并且在有限的时间内完成。②确定性。算法中的每一步都有确切的含义。③可行性。算法中的操作能够用已经实现的基本运算执行有限次来实现。④输入:一个算法有零个或者多个输入,零个输入就是算法本身确定了初始条件。⑤输出:一个算法有一个或者多个输出,以反映出数据加工的结果。所以C选项错误。
4.有以下程序段
char ch;int k;
ch=’a’:k=12;
printf(\\(D)
A. 因变量类型与格式描述符的类型不匹配输出无定值
B. 输出项与格式描述符个数不符,输出为零值或不定值
C. a,97,12k=12
D. a,97,k=12
解析:在用基本输出函数printf时,格式说明与输出项的个数应该相同。如果格式说明的个数少于输出项的个数,多余的输出项不予输出;如果格式说明个数多于输出项个数,则对于多余的格式项输出不定值或0。
5.有以下程序:
#include
main()
{ int i,j,m=1;
for(i=1;i<3;i++)
{ for(i=3;j>0;j一一)
{if(i*j>3)break;
m*=i*j;
}
}
prinff(“m=%d\n”,m);
}
程序运行后的输出结果是( )。(C)
A. m=4
B. m=2
C. m=6
D. m=5
解析:第一次外循环i的值为1,第一次内循环j的值为3,不满足条件执行m*=i*j即m的值为3;第二次j的值为2,不满足条件执行m*=i*j,即m的值为6;第三次j的值为1,不满足条件执行m*=i*j,即m的值仍为6。第二次外循环i的值为2,j的值为3,满足条件,执行break语句,跳出循环。
6.有以下程序:
#include <stdio.h>
void swap(char *x, char *y)
{ char t;
t=*x; *x=*y; *y=t;
}
main()
{ char *s1=\\(D)
A. 321,cba
B. abc,123
C. 123,abc
D. 1bc,a23
解析:字符串是一个特殊的数组,所以按照数组的规则,s1应该指向的是数组的首地址,即\\
7.以下说法正确的是( )。(B)
A. 宏定义是C语句,要在行末加分号
B. 可以使用#undefine提前结束宏名的使用
C. 在进行宏定义时,宏定义不能嵌套
D. 双引号中出现的宏名也要进行替换
解析:本题考查宏的使用规则:①字符替换格式:#define标识符字符串,行末不加分号;②双引号中出现的宏名不替换;③如果提前结束宏名的使用,程序中可以使用#undefine;④在进行宏定义时,宏定义能层层置换,能够嵌套。
8.软件需求分析阶段的工作,可以分为四个方面:需求获取、编写需求规格说明书、需求评审和( )。(B)
A. 阶段性报告
B. 需求分析
C. 需求总结
D. 都不正确
解析:软件需求分析阶段的工作,可以概括为四个方面:需求获取、需求分析、编写需求规格说明书和需求评审。
需求获取的目的是确定对目标系统的各方面需求。涉及到的主要任务是建立获取用户需求的方法框架,并支持和监控需求获取的过程。
需求分析是对获取的需求进行分析和综合,最终给出系统的解决方案和目标系统的逻辑模型。
编写需求规格说明书作为需求分析的阶段成果,可以为用户、分析人员和设计人员之间的交流提供方便,可以直接支持目标软件系统的确认,又可以作为控制软件开发进程的依据。
需求评审是对需求分析阶段的工作进行复审,验证需求文档的一致性、可行性、完整性和有效性。
9.有以下程序:
#include<stdio.h>
main()
{ int a=6,b=7,m=1;
switch(a%2)
{ case 0:m++;break;
case 1:m++:
switch(b%2)
{ defaut:m++;
case0:m++;break;
}
}
printf(’’%d\n’’,m);
}
程序运行后的输出结果是( )。(B)
A. 1
B. 2
C. 3
D. 4
解析:本题考查switch语句。因为“a=6”,所以“a%2=0”,因此第一个switch语句,执行“case0”,将m加1,遇到break语句跳出switch语句,输出m值为2。
10.以下不构成无限循环的语句或语句组是( )。
A
解析:选项A中do后面的语句只执行了一次便结束了循环;B选项中条件while(1)永远成立,所以是死循环;C选项中n的值为10,而循环体为空语句,所以while(n)永远为真:进入死循环,D选项中for语句第二个表达式为空,所以没有判别条件,进入死循环。
11.以下程序的输出结果是( )。
#include
本文档预览:3600字符,共16574字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载