国家二级(C语言)机试模拟试卷461
选择题
1.若变量已正确定义为int型,要通过语句scanf(\\(B)
A. 1,2,3<回车>
B. 1u2u3<回车>
C. 1,uu2,uu<回车>3<回车>
D. uu1,2,3<回车>
解析:scanf函数要求除格式控制符以外的字符都要原样输入。逗号是非格式符,所以需要原样输入,否则就不能正确读入数据。B项前两个数据后面没有紧跟一个逗号,格式不匹配,所以输入形式错误。
2.有以下定义:
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中三个不同的成员,占用不同的存储空间。
3.下列关于类、对象、属性和方法的叙述中,错误的是( )。(D)
A. 类是对一类具有相同的属性和方法对象的描述
B. 属性用于描述对象的状态
C. 方法用于表示对象的行为
D. 基于同一个类产生的两个对象不可以分别设置自己的属性值
解析:类是对一类具有相同的属性和方法对象的描述,属性用于描述对象的状态,方法用于表示对象的行为,基于同一个类产生的两个对象是可以分别设置自己的属性值。
4.在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是( )。(B)
A. 并
B. 交
C. 投影
D. 除
解析:关系R与S经交运算后所得到的关系是由那些既在R内又在S内的有序组所组成,记为R∩S,交运算不改变关系表中的属性个数但能减少元组个数。
5.下列特征中不是面向对象方法的主要特征的是( )。(D)
A. 多态性
B. 标识惟一性
C. 封装性
D. 耦合性
解析:面向对象设计方法与面向过程设计方法有本质的不同,其基本原理是:使用现实世界的概念抽象地思考问题从而自然地解决问题。其特点包括:标识惟一性、多态性、封装件、模块独立性、继承和多态性好。
6.下列叙述中正确的是( )。(A)
A. 程序执行的效率与数据的存储结构密切相关
B. 程序执行的效率只取决于程序的控制结构
C. 程序执行的效率只取决于所处理的数据量
D. 以上说法均错误
解析:程序执行的效率与数据的存储结构、数据的逻辑结构、程序的控制结构、所处理的数据量等有关。
7.若有以下定义(设int类型变量占2个字节)
int i=8,j=9;
则以下语句:
printf(’’i=%%d,j=%%%d\n’’,i,j);
输出的结果是( )。(B)
A. i=8,j=9
B. i=%d,j=%8
C. i=%d,j=%d
D. 8,9
解析:本题考查printf函数的格式。printf函数中格式说明符之前插入的任何字符都按原样输出。对于printf函数,有两个%说明,第一个%后面的内容要按原样输出。
8.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做( )。(B)
A. 软件矛盾
B. 软件危机
C. 软件耦合
D. 软件产生
解析:随着计算机软件规模的扩大,软件本身的复杂性不断增加,研制周期显著变长,正确性难以保证,软件开发费用上涨,生产效率急剧下降,从而出现了入门难以控制软件发展的局面,即所谓的“软件危机”。
9.有以下程序:
#include<stdio.h>
main()
{int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;
for(i=0;i<3;i++)
for(j=i;j<=i;j++)t+=b[i][b[j][i]];
printf(\\(B)
A. 3
B. 4
C. 1
D. 9
解析:每次内循环只循环一次就结束,第一次外循环时t=t+b[0][b[0][o]]=1+b[0][0]=1+0=1;第二次外循环时t=t+b[1][b[1][1]]=1+b[1][1]=1+1=2;第三次外循环时t=t+b[2][b[2][2]]=2+b[2][2]=2+2=4。
10.下面的for语句的循环次数为( )。
for(x=1,y=0;(y!=19)&&(x<6);x++);(D)
A. 是无限循环
B. 循环次数不定
C. 最多执行6次
D. 最多执行5次
解析:本题考查for循环。只考虑x的取值变化,x从1取到5,可以循环5次,但是并不知道y是如何变化的,有可能出现y=19提前跳出循环的情况,所以是最多执行了5次。
11.以下程序运行后的输出结果是( )。
#include<stdio.h>
void reverse(int a[],int n)
{int i,t;
for(i=0;i<n/2;i++)
{t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}}
main()
{int b[10]={10,9,8,7,6,5,4,3,2,1};int i,s=0;
reverse(b,10);
for(i=0;i<3;i++)s+=b[i];
printf(\\(B)
A. 27
B. 6
C. 25
D. 30
解析:本题考查函数调用时的参数传递。函数reverse将数组b进行了逆置,此时b[10]={10,9,8,7,6,5,4,3,2,1},后面for语句的功能是将b中的后3个数累加,并将结果放在s中,最后将s输出,结果s=1+2+3=6。
12.有以下程序段:
#include
int j;float y;char name[50];
scanf(“%2d%f%s”,&j,&y,name);
当执行上述程序段,从键盘上输入55566 7777abc后,y的值为( )。(A)
A. 566.0
B. 55566.0
C. 7777.0
D. 566777.0
解析:它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。其中的格式命令可以说明最大域宽。存百分号(%)与格式码之间的整数用于限制从对应域凑入的最大字符数。所以j的值为55,y的值为566.0,字符数组name为7777abc。
13.有以下程序:
#include
main()
{ FILE*fp;int a[10]={1,2,3},i,n;
fp=fopen(“d1.dat”,“W”);
for(i=0;i<3;i++)fprintf(fp,“%d”,a[i]);
本文档预览:3600字符,共15849字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载