国家二级(C语言)机试模拟试卷530
选择题
1.若有定义:int a=0,b=0,c=0,d=0;,有C语言表达式(a++&&b++)?c++:d++,以下关于其执行顺序的叙述中正确是( )。(A)
A. 先执行a++,表达式a++的值为0,由此即可确定(a++&&b++)值为0,因此执行d++
B. 先执行a++,表达式a++的值为0;再执行b++,表达式b++的值为0,由此可确定(a++&&b++)值为0,因此执行d++
C. 先执行a++,表达式a++的值为1;再执行b++,表达式b++的值为1,由此可确定(a++&&b++)值为1,因此执行c++
D. 先执行b++,表达式b++的值为1;再执行a++,表达式a++的值为1,由此可确定(a++&&b++)值为1,因此执行c++
解析:把握前置运算和后置运算的基本运算规则。
2.下面是有关C语言字符数组的描述,其中错误的是( )。(D)
A. 不可以用赋值语句给字符数组名赋字符串
B. 可以用输入语句把字符串整体输入给字符数组
C. 字符数组中的内容不一定是字符串
D. 字符数组只能存放字符串
解析:字符数组可以用来存放单个的字符或者字符串。
3.有以下程序:
#include<stdio.h>
void fun(int p)
{
int d=2:
p=d++;
printf(\\(C)
A. 32
B. 12
C. 21
D. 22
解析:C语言中函数参数传递满足“单向传递”,实现传递值的功能,实参能传给形参,形参却不能传回给实参。fun函数体内输出p的值为2,并不影响到fun函数外a的值,a的值在main函数内依然为1。
4.下面程序的运行结果是( )。
#include<stdio.h>
void del(char*s)
{int i,j;char*a;
a=s;
for(i=0,j=0;a[i]!=’\0’;i++)
{if(a[i]>=’0’&&a[i]<=’9’){s[j]=a[i];j++;}
s[j]=’\0’;}}
main()
{char s[]=\\(B)
A. aa
B. 89
C. gggh
D. aa89gggh
解析:本题中del(char*s)函数实现的功能是:逐个读入s数组中的字符,如果遇到数字,则将其重新存在s中,遇到非数字字符则跳过。所以最后输出的应该是字符串s中的所有数字。
5.下述程序的输出结果是( )。
#include<stdio.h>
void main()
{ int a[20],*p[4];
int i,k=0;
for(i=0;i<20;i++)
a[i]=i;
for(i=0;i<4;i++)
p[i]=&a[i*i+1];
for(i=0;i<4;i++)
{ k=k+*p[i];}
printf(\\(B)
A. 10
B. 18
C. 6
D. 数组元素引用不合法,输出结果不定
解析:第一个for循环,给数组a的20个元素分别赋值0~19;第二个for循环,给数组p赋值,p[0]=a[1]=1,p[1]=a[2]=2,p[2]=a[5]=5,p[3]=a[10]=10;第三个for循环,将数组p中元素的值进行累加,k=1+2+5+10=18。
6.以下程序中c的二进制值是( )。
char a=2,b=4,c;
c=a^b>>2(A)
A. 00000011
B. 00010100
C. 00011100
D. 00011000
解析:本题主要考查按位异或和右移运算。b=4的二进制为00000100,b>>2后为00000001,a=2的二进制为00000010,两者异或为00000011。
7.设有定义:intx=2;,以下表达式中,值不为6的是( )。(A)
A. 2*x,x+=2
B. x++,2,x
C. x*=(1+x)
D. x*=x+1
解析:A选项中逗号表达式先计算第一表达式2*x,然后计算表达式x+=2的值,即x=x+2即4,整个逗号表达式为第二个表达式的值4,所以选择A。B选项中首先计算逗号表达式中第一表达式x++,此时x为3,在执行第二个表达式2*x=2*3=6,所以逗号表达式为第二个表达式的值6。C选项的赋值表达式可以表示为x=x}(1+x)=2*(1+2)=6。D选项中的表达式可以表示为x=x*(x+1)=2*3=6。
8.在源程序的开始处加上“#include<stdio.h>”进行文件引用的原因,以下叙述正确的是( )。(A)
A. stdio.文件中包含标准输入输出函数的函数说明,通过引用此文件以便能正确使用printf、scanf等函数
B. 将stdio.h中标准输入输出函数链接到编译生成的可执行文件中,以便能正确运行
C. 将stdio.h中标准输入输出函数的源程序插入到引用处,以便进行编译链接
D. 将stdio.h中标准输入输出函数的二进制代码插入到引用处,以便进行编译链接
解析:“stdio.h”文件中包含标准输入输出函数的函数说明,预处理指令#include<stdio.h>是指程序可以在该文件中找到printf、scanf等函数。
9.下面程序的输出结果是( )。
typedefunion{long x[1];
int y[4];
char z[10];
}M;
M t:
main()
{printf(\\(C)
A. 32
B. 26
C. 10
D. 4
解析:“联合体”所占用的内存空间为最长的成员所占用的空间。题中联合体的z[10]成员是联合体中占空间最长的成员。
10.软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是( )。(C)
A. 编译程序
B. 操作系统
C. 教务管理系统
D. 汇编程序
解析:编译软件、操作系统、汇编程序都属于系统软件,只有C教务管理系统才是应用软件
11.在软件生产过程中,需求信息的来源是( )。(D)
A. 程序员
B. 项目经理
C. 设计人员
D. 软件用户
解析:软件需求是指用户对目标软件系统在功能、性能、设计约束等方面的要求,是由用户提出的。
12.对关系S和R进行集合运算,结果中既包含S中的所有元组也包含R中的所有元组,这样的集合运算称为( )。(A)
A. 并运算
B. 交运算
C. 差运算
D. 积运算
解析:关系的并运算是指由结
本文档预览:3600字符,共14243字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载