国家二级(C语言)机试模拟试卷419
选择题
1.下列叙述中,正确的是( )。(A)
A. 软件交付使用后还需要进行维护
B. 软件一旦交付使用就不需要再进行维护
C. 软件交付使用后其生命周期就结束
D. 软件维护是指修复程序中被破坏的指令
解析:软件的运行和维护是指将己交付的软件投入运行,并在运行使用中不断地维护,根据新提出的需求进行必要而且可能的扩充和删改。而软件生命周期是指软件产品从提出、实现、使用维护到停止使用退役的过程。
2.以下选项中不合法的标识符是( )。(A)
A. &a
B. FOR
C. 13rint
D. _00
解析:C语言中标识符由字母、下划线、数字组成,且开头必须是字母或下划线。另外,关键字不能作为标识符。因为C语言中区分大小写,所以B选项中的“FOR”可以作为标识符来用。A选项中含有非法字符&,所以选择A。
3.定义如下变量和数组:
int i,x[3][3]={1,2,3,4,5,6,7,8,9};
则下面语句的输出结果是( )。
for(i=0;i<3;i++)printf(“%d”,x[i][2-i]);(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。
4.以下程序的输出结果是( )。
#include<stdio.h>
main()
{ int a=1,b=3;
ifi[(++a<0)&&!(b–<=0))
printf(’’%d,%d\n’’,a,b);
else
printf(’’%d,%d\n’’,b,a);
}(C)
A. 2,2
B. 1,3
C. 3,2
D. 3,1
解析:解答本题的关键在于if语句条件中的表达式。初始时“a=1,b=3”,所以“++a=2>0”,因此“++a<0”为假;因为是进行逻辑与(&&)运算,在&&的一个运算对象为假的前提下不用判断第二个运算对象的真假,就可以直接得出整个表达式的值为逻辑0,所以执行else语句。
5.有以下程序:
#include<stdio.h>
int fun(int x[],int n)
{
static int sum=0,i;
for(i=0;i<n;i++)sum+=x[i];
return sum;
}
main()
{
int a[]={1,2,3,4,5},b[]={6,7,8,9},s=0;
s=fun(a,5)+fun(b,4);
printf(\\(D)
A. 55
B. 50
C. 45
D. 60
解析:内部静态变量是始终存在的,当函数被调用退出后,内部静态变量会保存数据,再次调用该函数时,以前调用时的数值仍然保留着。fun(a,5)的值是15,再次调用后sum=15,所以fun(b,4)=45,s:45+15=60。因此D选项正确。
6.下列程序的运行结果是( )。
#include
void sub(int*s,int*y)
{ static int m=4;
*y=s[m];
m–;
}
void mainO
{ int a[]={1,2,3,4,5),k,x;
printf(\\(A )
A. 5,4,3,2,1,
B. 1,2,3,4,5,
C. 0,0,0,0,0,
D. 4,4,4,4,4,
解析:本题考查的是静态变量以及函数的实参与形参之间的地址值传递。sub()函数中定义的变量m是一个静态变量,系统可为其分配固定的存储空间,重复使用时,变量的值保留;所以当main()函数中的for循环中语句sub(a,&x);执行时,sub函数中m的值依次是4,3,2,1,0;因为变量x进行的是地址值传递,所以最后依次输出的是数组a的元素a[4]、a[3]、a[2]、a[1]、a[0]。
7.有以下程序:
#include<stdio.h>
main()
{unsigned char a=8,c;
e=a>>3:
printf(\\(B)
A. 16
B. 1
C. 32
D. 0
解析:无符号整型变量a的值为8,二进制表示为00001000,右移3位后为00000001,即十进制的1,所以输出1。
8.读取二进制文件的函数调用形式为:fread(buffer,size,count,fp);,其中buffer代表的是( )。(D)
A. 一个内存块的字节数
B. 一个整型变量,代表待读取的数据的字节数
C. 一个文件指针,指向待读取的文件
D. 一个内存块的首地址,代表读入数据存放的地址
解析:fread(void*buffer,size_t size,size_t count,FILE*stream);功能是从一个文件流中读数据,读取count个元素,每个元素size字节,如果调用成功返回count。buffer:用于接收数据的内存地址,大小至少是size*count字节;size:单个元素的大小,单位是字节;count:元素的个数,每个元素是size字节;stream:输入流。
9.有以下程序
#include<stdio.h>
void main()
{ int a=1,b=0;
printf(’’%d,’’,b=(a++)+(a++));
printf(’’%d\n’’,a+b);}
程序运行后的输出结果是( )。(B)
A. 4,6
B. 2,5
C. 3,5
D. 2,6
解析:在主函数中定义了两个整型变量a和b,并把它们的初值分别设置为1和0;在第二条语句中,首先计算b=a+a,然后a自增两次,因此第二句结束时,b=2,a=3,然后第三句,a+b=5。
10.设变量x和y均已正确定义并赋值,以下if语句中,在编译时将产生错误信息的是( )。(C)
A. if(x++);
B. if(x>y&&y!=0);
C. if(x>y)x-else y++;
D. if(y<0){;)else x++;
解析:选项C中,if(x>y)后面的“x–”是一个表达式而不是一个语句,所以在编译时会产生错误信息。
11.若有说明“int m[3][4]={3,9,7,8.5},(*q)[4];”和赋值语句“q=m;”,则对数组元素“m[i][j](
本文档预览:3600字符,共15763字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载