国家二级(C语言)机试模拟试卷467
选择题
1.有以下程序:
#include<stdio.h>
main()
{
int x=1,y=2,z=3;
if(x>y)
if(y<z)printf(\\(D)
A. 3 3 1
B. 4 1
C. 2
D. 1
解析:else子句总是与最前面最近的不带else的if相结合,与书写格式无关,所以本题中的else语句与第二个if语句配对,且if和else都在第一个if的控制范围内。首先判断x>y不成立,直接退出第一个if语句,执行printf(\\
2.以下程序的输出结果是( )。
#include
main()
{ int a=8,b=6,m=1;
switch(a%4)
{ case 0:m++;
break;
case 1:m++:
switch(b%3)
{default:m++;
case 0:m++:break;
}
}
printf(“%d\11”,m);}(B)
A. 1
B. 2
C. 3
D. 4
解析:本题考查switch语句。因为a=8,a%4=0,所以执行case 0后面的语句,将m加1,遇到break语句跳出SWitch。
3.有以下程序:
#include<stdio.h>
main()
{ int x;
scanf(’’%dt’’,&x);
if(x<=0);else
if(x!=5)printf(’’%d\n’’,x);
}
程序运行时,输入的值在哪个范围才会有输出结果( )。(B)
A. 不等于5的整数
B. 大于0且不等5的整数
C. 大于0或等于5的整数
D. 小于5的整数
解析:题目中,虽然else和第二个if不在同一行上,但等价于在同一行上,因此,程序的意思是当x大于0且不等于5时将其打印出来。
4.定义如下变量和数组:
int i,x[3][3]={1,2,3,4,5,6,7,8,9};
则下面语句的输出结果是( )。
for(i=0;i<3;i++)printf(\\(C )
A. 159
B. 147
C. 357
D. 369
解析:本题主要考查二维数组的使用。题中利用for循环来输出x数组中的指定元素:
①当i=0时,输出x[0][2]=3;
②当i=1时,输出x[1][1]=5;
③当i=2时,输出x[2][0]=7。
5.若函数中有定义语句:int a;,则( )。(B)
A. 系统将自动给a赋初值0
B. 这时a中的值是和随机数
C. 系统将自动给a赋初值-1
D. 这a中无任何值
解析:本题考查变量赋值基本概念。在声明一个变量后,如果未显式的对其进行赋值,则它的值是一个随机值。
6.若函数调用时的实参为变量,以下关于函数形参和实参的叙述中正确的是( )。(D)
A. 函数的实参和其对应的形参共占同一存储单元
B. 形参只是形式上的存在,不占用具体存储单元
C. 同名的实参和形参占同一存储单元
D. 函数的形参和实参分别占用不同的存储单元
解析:在C语言中,函数的实参单元与形参单元在内存中分配不同的存储单元。在调用函数时,给形参分配临时存储单元,并将实参对应的值传递给形参,在被调用函数中对形参存储单元中的值进行运算,最后通过return语句把函数值返回调用函数。当调用结束后,形参单元被释放,实参单元仍保留并维持原值。
7.开发大型软件时,产生困难的根本原因是 ( )。(A)
A. 大型系统的复杂性
B. 人员知识不足
C. 客观世界千变万化
D. 时间紧、任务重
解析:随着计算机软件规模的扩大,软件本身的复杂性不断增加,研制周期显著变长,正确性难以保证,软件开发费用上涨,生产效率急剧下降,从而出现了人们难以控制软件发展的局面,即所谓的“软件危机”。
8.有以下程序
#include<stdio.h>
main()
{int k=5,n=0;
while(k>0)
{switch(k)
{default:break;
case1:n+=k;
case2:
case3:n+=k;
}
k–;}
printf(\\(D)
A. 0
B. 4
C. 6
D. 7
解析:因为没有break语句,当k=2的时候,会顺序执行两条语句,k=1的时候,会顺序执行3条语句。
9.有以下程序:
#include<stdio.h>
main()
{
int a[4][4]={{1,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}},i,k,t;
for(i=0;i<3;i++)
for(k=i+1;k<4;k++)
if(a[i][i]<a[k][k])
{t=a[i][i];a[i][i]=a[k][k];a[k][k]=t;}
for(i=0;i<4;i++)
printf(\\(C)
A. 1,1,2,6,
B. 6,2,1,1,
C. 6,4,3,2,
D. 2,3,4,6,
解析:首先对二维数组进行赋值操作,a[0][0]、a[0][1]、…、a[3][2]、a[3][3]的值为1、4、…、6、1。通过for嵌套循环语句和if条件语句,对二维数组对角线元素进行由大到小的排序操作,程序最后通过for语句输出二维数组第1行的4个元素。因此C选项正确。
10.有以下程序:
#include
main()
{
int i,data;
$canf(\\(A)
A. 3,4,
B. 1,2,3,4,
C. 0,1,2,3,4,5,
D. 0,1,2,
解析:continue语句的作用是结束本次循环,即不再执行循环体中continue语句之后的语句,而是立即转入下次循环对循环条件的判断与执行。本题执行过程为:输入3,则data:3;执行for循环,i=0,if条件成立,结束本次循环,不输出i值,执行下一次循环;直到i>=3,if条件不成立,依次输出i值3、4,直到i=5退出for循环。
11.如果进栈序列为A,B,C,D,则可能的出栈序列是( )。(B)
A. C,A,D,B
本文档预览:3600字符,共15191字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载