国家二级(C语言)机试模拟试卷108
选择题
1.有以下定义:
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中三个不同的成员,占用不同的存储空间。
2.以下函数的功能是:计算a的n次方作为函数值返回。
double fun(double a,int n)
{ int i;double s=1.0;
for(i=1;i<=n;i++)S=________;
return s;
}
为实现上述功能,函数中下划线处应填入的是( )。(B)
A. S*i
B. S*a
C. s+i*i
D. S+a*a
解析:s为a的(i-1)次方的结果,所以令s=s*a即可得到a的i次方。
3.有以下程序:
#include
#include
main()
{ char str[]={\\(B)
A. 13,13
B. 13,14
C. 13,15
D. 14,15
解析:strlen返回字符串的长度,不包含字符串末尾的结束字符’\0’,结果为13;sizeof返回字符串所占存储空间的大小,由于字符串最后要加上一个’\0’,所以结果为13+1=14。
4.若有说明:typedef struct{int a;char c;}w;,则以下叙述正确的是( )。(D)
A. 编译后系统为w分配5个字节
B. 编译后系统为w分配6个字节
C. 编译后系统为w分配8个字节
D. 编译后系统不为w分配存储空间
解析:w是一个自定义类型,不是变量,故编译后系统不为w分配存储空间。当w定义为结构体变量时才会为其分配存储空间。
5.以下叙述中错误的是( )。
D
解析:数组初始化时,若赋初值的个数多于所定义数组的元素个数时,编译器会报错。
6.若有以下定义:
struct tt{char name[10];char sex;}aa={\\(A)
A. scanf(\\
B. aa.sex=getchar();
C. printf(\\
D. printf(\\
解析:sex是一个char类型变量,不是地址,A项应为scanf(\\
7.C语言编译程序的功能是( )。(C)
A. 执行一个C语言编写的源程序
B. 把C源程序翻译成ASCII码
C. 把C源程序翻译成机器代码
D. 把C源程序与系统提供的库函数组合成一个二进制执行文件
解析:编译程序的功能是将“高级语言”翻译为“机器语言”,将c语言语句转换成二进制的机器指令。
8.有以下程序:
#include
int fun(int n)
{ if(n)return fun(n-1)+n;
else return 0;
}
main()
{printf(\\(C)
A. 4
B. 5
C. 6
D. 7
解析:fun函数是一个递归函数,调用f(3),参数n=3,返回f(3-1)+3=f(2)+3=f(1)+2+3=f(0)+1+2+3=0+6=6。
9.有以下程序:
#include
main()
{ int sum=0,x=5;
d0{sum+=x;}while(!–x);
printf(\\(B)
A. 0
B. 5
C. 14
D. 15
解析:do-while循环,先执行循环体sum+=x,则sum=sum+x=0+5=5,再执行while中的表达式,结果为0,退出循环,所以运行结果是5。
10.下面不属于软件设计阶段任务的是( )。(A)
A. 软件的功能确定
B. 软件的总体结构设计
C. 软件的数据设计
D. 软件的过程设计
解析:软件设计阶段的任务包括:①结构设计;②数据设计;③接口设计;④过程设计。软件的功能确定是在需求分析阶段完成的。
11.有以下程序:
#include
#include
typedef struet{char name[9];char sex;float score[2];}STU;
void f(STU*a)
{ strcpy(a->name,\\(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中的成员值已被更新。main函数中有赋值语句\\
12.在C语言程序中,下列说法正确的是( )。(B)
A. 函数的定义可以嵌套,但函数的调用不可以嵌套
B. 函数的定义不可以嵌套,但函数的调用可以嵌套
C. 函数的定义和调用均不可以嵌套
D. 函数的定义和调用均可以嵌套
解析:函数定义都是在函数外部进行的,函数调用是在函数内部进行的,所以函数的定义不可以嵌套,但函数的调用可以嵌套。
13.执行以下程序段后,8的值为( )。
int a[]:{1,2,3,4,5,6,7,8,9},S=0,k;
for(k=0;k<8;k+=2)s+=*(a+k);(B)
A. 13
B. 16
C. 17
D. 45
解析:数组a中的元素为:a[0]=1,a[1]=2,…,a[8]=9。k=0时,s=s+*(a+0)=0+1=1;k=2时,s=1+*(a+2)=1+3=4;k=4时,s=4+5=9;k=6时,s=9+7=16。
14.有以下程序:
#include
#define M 5
#define f(x,y)x*y+M
main()
{
int k;
k=f(2,3)*f(2,3);
printf(\\(B)
A. 22
B. 41
C. 100
D. 121
解析:宏定义中的函数在调用时只做简单的替换,不能进行任何修改。所以k=2*3+5*2*3+5=41。
15.有以
本文档预览:3600字符,共12139字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载