国家二级(C语言)机试模拟试卷470
选择题
1.若有以下程序段:
int r=8:
printf(\\(C)
A. 16
B. 8
C. 4
D. 2
解析:C语言中“>>”是对二进制的右移运算符,右移相当于将原数做除二操作,它将原数右移相应位数,并将移出的位舍去,在高位补0,将所得的结果再赋值给变量。本题中8的二进制为00001000,右移一位得到00000100,所以是4。
2.需求分析阶段的任务是( )。(D)
A. 软件开发方法
B. 软件开发工具
C. 软件开发费用
D. 软件系统功能
解析:需求分析是软件定义时期的最后一个阶段,它的基本任务就是详细调查现实世界要处理的对象,充分了解原系统的工作概况,明确用户的各种需求,然后在这些基础上确定新系统的功能。
3.以下能对一维数组a进行初始化的语句是( )。
C
解析:选项A,数组可以看作是若干个相同数据类型元素的有序集合,因此以集合的形式对其初始化,使用{}对其初始化;选项BD,常量表达式只能放在中括号[]中。故C选项正确。
4.有以下程序:
main()
{int k=33;
printf(\\(D)
A. 33,033,0x21
B. 33,033,21
C. 33,041,021
D. 33,41,21
解析:本题考查不同进制间的转换。printf输出函数中输出变量的格式,由输出格式符决定。题中“%o”格式符表示以八进制的形式输出;“%x”格式符表示以十六进制的形式输出。“33”的八进制和十六进制分别是41和21。
5.有以下程序:
#include<sidio.h>
main()
{char s[]=\\(B)
A. 0
B. 3
C. 7
D. 8
解析:本题中遇到“\”字符循环结束,所以只统计“\”之前的数字字符,所以为3。
6.以下不正确的转义字符是( )。(D )
A. ’\\\\\\\\’
B. ’\\\\d’
C. ’\\\\s’
D. ’088’
解析:’\\\\\\\\’是反斜线符,’\\\\d’是整型变量转义字符,’\\\\s’是字符串型转义字符,C语言中没有规定’088’为转义字符。
7.设变量x和y均已正确定义并赋值,以下if语句中,在编译时将产生错误信息的是( )。
C
解析:选项C中,if(x>y)后面的“x一”是一个表达式而不是一个语句,所以在编译时会产生错误信息。
8.有以下程序:
#include<stdio.h>
main()
{int i,j,m=1;
for(i=1;i<3;i++)
{for(j=3;j>0;j–)
{if(i*j>3)break;
m*=i*j;
}
}
printf(\\(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语句,跳出循环。
9.若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,内层j的循环中的.j都要从0变化到3,j=4时退出循环;然后外层i循环的i减少1,内层循环的i仍要从0变化到3,j=4时退出循环……直到外层i循环的i变为0,退出i循环。所以执行多重循环时,对外层循环变量的每一个值,内层循环的循环变量都要从初始值变化到终值。对外层循环的每一次循环,内层循环要执行完整的循环语句。外层for语句执行6次,内层for语句执行4次,所以内循环体执行6*4=24次。
10.设有如下定义:
struct sk
{ int m;
float x:
}data,*q;
若要使q指向data中的m域,正确的赋值语句是( )。(C)
A. q=&data.m:
B. *q=data.m;
C. q=(struct sk*)&data.m;
D. q=(struct sk*)data.m;
解析:利用强制类型转换(struct sk)把整数型地址&data.m转换成结构体变量指针赋给结构体指针变量q。
11.以下不能将s所指字符串正确复制到t所指存储空间的是( )。
A
解析:do{*t++={s++;}while(*s);不能因为当*s=‘\0’时,while(。s)跳出循环,这样字符串结束标志‘\0’没有复制给*t,造成}t不完整。注意,*t++=*s++是先执行t=*s,然后才进行t=t+1,s=s+1。B、C、D都能将‘\0’复制过去。
12.开发大型软件时,产生困难的根本原因是 ( )。(A)
A. 大型系统的复杂性
B. 人员知识不足
C. 客观世界千变万化
D. 时间紧、任务重
解析:随着计算机软件规模的扩大,软件本身的复杂性不断增加,研制周期显著变长,正确性难以保证,软件开发费用上涨,生产效率急剧下降,从而出现了人们难以控制软件发展的局面,即所谓的“软件危机”。
13.有以下程序:
#include <stdio.h>
main()
{ int c=0,k;
for (k=1;k<3;k++)
switch (k)
{ default: c+=k;
case 2: c++;break;
case 4: c+=2;break;
}
printf(\\(C)
A. 7
B. 5
C. 3
D. 9
解析:向switch语句块传送参数后,编译器会先寻找匹配的case语句块,找到后就执行该语句块,遇到break跳出;如果没有匹配的语句块,则执行default语句块。case与default没有顺序之分。所以第一次循环k的值为1,执行c+=k,c的值为1,再执行case 2 后的语句c++,c的值为2,遇到break语句跳出循环;第二次循环k的值为2,执行case 2 后面的语句c++,c的值为3,跳出循环。
14.执行下列程序时输入456789123,输出结果是( )。
#include
main()
{char
本文档预览:3600字符,共15068字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载