国家二级C语言机试(选择题)模拟试卷599
选择题
1.下列描述中不属于软件特点的是( )。(D)
A. 软件是一种逻辑实体,具有抽象性
B. 软件在使用中不存在磨损、老化问题
C. 软件复杂性高
D. 软件使用不涉及知识产权
解析:软件不像硬件一样具有实物的特性,而是一种逻辑实体,具有抽象性;复杂性高,成本昂贵;运行使用期间不存在磨损、老化问题。由于软件是一种知识产品,受知识产权法的保护,故D选项错误。
2.若有定义:int a,b,c;,则以下选项中的赋值语句正确的是( )。(C)
A. a=(b==c)=1;
B. (a=b)=c=1;
C. a=(b=c)+1;
D. a+b=c;
解析:赋值运算符的左侧必须为变量而不能是表达式。
3.有以下程序:
#include <stdio.h>
void main()
{
char a,b,c,d;
scanf(”%c%c”,&a,&b);
c=getchar();
d=getchar();
printf(”%c%c%c%c\n”,a,b,c,d);
}
当执行程序时,按下列方式输入数据(从第一列开始,<CR>代表回车,注意:回车是一个字符):
12<CR>
34<CR>
则输出结果是( )。(C)
A. 12<CR>34
B. 12
C. 12<CR>3
D. 123<CR>4
解析:scanf()函数的一般调用形式为:scanf(格式控制字符串,地址列表)。其中,格式控制字符串是用双引号括起来的字符串,包括格式字符和普通字符,格式转换说明由“%”和格式字符组成。getchar()函数的功能是从标准输入设备上读入一个字符。根据程序中的格式控制字符串可知,接收输入时分别把1赋给了a,2赋给了b,然后getchar()函数提取一个换行符赋给c,再提取一个字符3赋给d,所以程序的输出结果为:12<CR>3。
4.以下叙述中正确的是( )。(A)
A. 如果企图通过一个空指针来访问一个存储单元,将会得到一个出错信息
B. 即使不进行强制类型转换,在进行指针赋值运算时,指针变量的基类型也可以不同
C. 设变量p是一个指针变量,则语句p=0;是非法的,应该使用p=NULL;
D. 指针变量之间不能用关系运算符进行比较
解析:空指针意味着该指针没有指向任何具体的变量,所以不能访问一个存储单元,故A选项正确。指针的赋值运算只能在同一数据类型之间进行,故B选项错误。语句p=0和p=NULL是一样的,都是把一个空指针赋给指针变量p,故C选项错误。指针之间能进行关系运算,比较的是地址值的大小,故D选项错误。
5.下列叙述中正确的是( )。(A)
A. 循环队列中的元素个数随队头指针与队尾指针的变化而动态变化
B. 循环队列中的元素个数随队头指针的变化而动态变化
C. 循环队列中的元素个数随队尾指针的变化而动态变化
D. 以上说法都不对
解析:在循环队列中,用队尾指针rear指向队列中的队尾元素,用队头指针front指向队头元素的前一个位置。因此,从队头指针front指向的后一个位置直到队尾指针rear指向的位置之间所有的元素均为队列中的元素,所以循环队列中的元素个数随队头指针和队尾指针的变化而变化。
6.有以下定义:
struct data{
int i;char c;double d;
}x;
以下叙述中错误的是( )。(D)
A. x的内存地址与x.i的内存地址相同
B. struct data是一个类型名
C. 初始化时,可以对x的所有成员同时赋初值
D. 成员i、c和d占用的是同一个存储空间
解析:i、c、d是结构体变量x中的三个不同的成员,占用不同的存储空间。
7.有以下程序:
#include <stdio.h>
#include <string.h>
typedef struct{
char name[9];
char sex;
float score[2];}STU;
void f(STU *a)
{
strcpy(a﹣>name,”Zhao”);
a﹣>sex=’m’;
a﹣>score[1]=90.0;
}
main()
{
STU c={\\(C)
A. Qian,f,95,92
B. Zhao,f,95,90
C. Zhao,m,95,90
D. Zhao,f,95,92
解析:f函数调用时,结构体数组名作为实参传给了形参指针,使结构体指针a指向了数组c的首地址。因此,f持有了主函数中数组c的指针,可以对数组c中的元素赋值,故返回主函数之后,数组c中的成员值已被更新。
8.设变量x为long int型,并已正确赋值,以下表达式中能将x的百位上的数字提取出的是( )。(D)
A. x/10%100
B. x%10/100
C. x%100/10
D. x/100%10
解析:x/100的个位数是x的百位数上的数字,所以再进行%10运算即可得到该数字。
9.若变量已正确定义并赋值,则错误的赋值语句是( )。(D)
A. a+=a+1;
B. a=sizeof(double);
C. a=d丨丨c;
D. a+1=a;
解析:赋值号“=”的左边必须是一个变量名。
10.程序测试的目的是( )。(C)
A. 为被测程序设计正确的测试用例
B. 发现并改正程序中的错误
C. 发现程序中的错误
D. 改正程序中的错误
解析:程序测试是使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别,即为发现错误而执行程序的过程,而不是改正错误。
11.有以下程序:
#include <stdio.h>
main()
{
int k=﹣17;
printf(”%d,%o,%x\n”,k,1﹣k,1﹣k);
}
程序运行后的输出结果是( )。(A)
A. ﹣17,22,12
B. ﹣17,12,22
C. ﹣17,﹣22,﹣12
D. 17,22,12
解析:整型常量有3种表示方法,分别是十进制数表示法、八进制数表示法和十六进制数表示法。十进制整常量没有前缀,输出格式控
本文档预览:3600字符,共9181字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载