国家二级(C语言)机试模拟试卷416
选择题
1.以下程序段完全正确的是( )。(C)
A. int*p;seanf(\\
B. int*p;searrf(\\
C. int k,*p=&k;seanf(\\
D. int k,*p;*p=&k;seanf(\\
解析:A选项中错在没有对指针进行初始化,是无效指针,并且在scanf(\\
2.有以下程序:
#include
void fun(int a[],int n)
{ int i,t;
for(i=0;i<n/2;i++){t=a[i];a[i]=a[n一1一i];a[n一1一i]=t;}
}
main()
{ int k[10]={1,2,3,4,5,6,7,8,9,10},i;
fun(k,5);
for(i=2;i<8;i++)printf(“%d”,k[i]);
prinff(“\n”);
}
程序运行后的输出结果是( )。(A)
A. 321678
B. 876543
C. 1098765
D. 345678
解析:本题中的函数fun()的功能是将数组k中前5个元素倒序,所以返回后数组k中的元素排列是5,4,3,2,1,6,7,8,9,10。所以打印输出k[2]到k[7]元素的值,即321678,所以选择A。
3.下面结构体的定义语句中,错误的是( )。
A
解析:A选项struct ord{int x;int y;int z;}struct ord a;错误,不能在定义结构体的同时,又用结构体类型名定义变量。应该写成B选项或者D选项的格式。
4.以下选项中,能用作数据常量的是( )。(A)
A. 115L
B. 0118
C. 1.5e1.5
D. 0115
解析:A选项中115L表示115是长整型数据,合法。B选项是八进制常量的表示方法,但是在八进制中不能含有数字8,所以B错误。C选项中e后面应该是整数不能是小数1.5,所以C错误。D选项中八进制常量应该是数字“0”开始,而不是字母“o”开始。
5.若i、j已定义成int型,则以下程序段中内循环体的总执行次数是( )。
for(i=6;i>0;i–)
for(j=0.j<4.j++){…}(B )
A. 20
B. 24
C. 25
D. 30
解析:本题考查的是嵌套for循环执行次数。对于外层i的循环中任何一个i,内层i的循环中的j都要从0变化到3,i=4时退出循环;然后外层i循环的i减少1,内层循环的j仍要从0变化到3,j=4时退出循环……直到外层i循环的i变为0,退出i循环。所以执行多重循环时,对外层循环变量的每一个值,内层循环的循环变量都要从初始值变化到终值。对外层循环的每一次循环,内层循环要执行完整的循环语句。外层for语句执行6次,内层for语句执行4次,所以内循环体执行6*4=24次。
6.若要求从键盘读入含有空格字符的字符串,应使用函数( )。(B)
A. getc()
B. gets()
C. getchar()
D. scanf()
解析:scarlf()语句中用“空格”间隔不同的字符串,空格将被全部忽略掉,所以用scanf()函数不能输入空格;getchavO函数用于输入字符,其调用形式为:ch=getehar(),getchar()函数从终端读入一个字符作为函数值,把读入的字符赋给变量ch。在输入时,空格、回车符都将作为字符读入,而且只有在用户敲入Enter键时,读入才开始执行。gets()函数的调用形式为:gets(str_adr),其中str_adr是存放输入字符串的起始地址,可以是字符数组名、字符数组元素的地址或字符指针变量。gets函数用来从终端键盘读入字符串(包括空格符),直到读入一个换行符为止。getc()函数的调用形式为:ch=getc(pf)其中pf是文件指针。函数的功能是从pf指定的文件中读入一个字符,并把它作为函数值返回。
7.有三个关系R、S和T如下:
(B)
A. 选择
B. 差
C. 交
D. 并
解析:关系T是关系R的一部分,并且将关系R去掉了R和S相同的元素,符合差操作。
8.在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是( )。(B)
A. 逻辑设计
B. 需求分析
C. 详细设计
D. 物理设计
解析:软件开发阶段包括需求分析、总体设计、详细设计、编码和测试五个阶段。其中需求分析阶段常用的工具是数据流图和数据字典。
9.若有定义语句:
int year=2009,*p=&year;
以下不能使变量year中的值增至2010的语句是( )。(B)
A. (*P)++;
B. *P++;
C. ++(*P);
D. *P+=1;
解析:由于自加运算符++的运算级别高于间接运算*的运算级别,所以B选项的表达式*p++不能使变量year中的值增至2010。因此B选项正确。
10.有以下程序
#include <stdio.h>
main()
{ int k=5;
while(–k) printf(\\(A)
A. 1
B. 2
C. 4
D. 死循环
解析:
11.执行以下程序段后,w的值为( )。
int w=’A’,x=14,y=15;
w=((x || y)&&(w<’a’));(C )
A. .1
B. NULL
C. 1
D. 0
解析:字符变量w的初值为字符’A’,其ASCII码值为65,字符’a’的ASCII码值为97,所以关系表达式w<’a’的值为1;变量x=14,变量y=15,x||y为或,x、y均为真,所以x||y的结果1。因而逻辑表达式(x 1l y)&&(w<’a’)的值为1。
12.下面叙述中错误的是( )。(A)
A. 软件测试的目的是发现错误并改正错误
B. 对被调试的程序进行“错误定位”是程序调试的必要步骤
C. 程序调试通常也称为Debug
D. 软件测试应严格执行测试计划,排除测试的随意性
解析:软件测试是为了发现软件中的错误,开发出高质量的完全符合用户需要的软件。
13.在下列选项中,没有构成死循环的程序段是( )。(C )
A. int i=100;
for(;;)
{i=i%10+1;
B. while(1);
本文档预览:3600字符,共14511字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载