国家二级(C语言)机试模拟试卷478
选择题
1.以下选项中叙述正确的是( )。(A)
A. 函数体必须由{开始
B. C程序必须由main语句开始
C. C程序中的注释可以嵌套
D. C程序中的注释必须在一行里完成
解析:函数体是函数首部下面的花括号内的部分,所以函数休必须由{开始,A项正确。一个源程序文件可以包括预处理命令、全局声明、函数定义,程序总是从main函数开始执行的,不是rflain语句,B项错误。C程序中允许两种注释,以//开头的单行注释;以/*开始,以*/结束的块式注释,D项错误。函数可以嵌套,注释不能嵌套,C项错误。
2.下列方法中,不属于软件调试方法的是( )。(C)
A. 回溯法
B. 强行排错法
C. 集成测试法
D. 原因排除法
解析:软件调试主要采用以下三种方法:
强行排错法:作为传统的调试方法,其过程可概括为设置断点、程序暂停、观察程序状态、继续运行程序。
回溯法:该方法适合于小规模程序的排错、即一旦发现了错误,先分析错误征兆,确定最先发现“症状”的位置。
原因排除法:原因排除法是通过演绎和归纳,以及二分法来实现。
3.下列定义变量的语句中错误的是( )。(D)
A. int_int;
B. double int_;
C. char For;
D. float US$;
解析:C语言规定,变量的标识符只能由字母、数字和下划线3种字符组成,且首字符必须为字母或下划线。在C语言中大写字母和小写字母被认为是两个不同的字符。选项A定义的变量标识符int和选项B定义的变量标识符int与C语言的关键字int是不同的,是正确的变量标识。选项C定义的变量标识符For与C语言中的关键字for是两个不同的标识符,所以选项C是正确的,而选项D包含有特殊字符$,因而其不符合C语言的变量命名规定。
4.若运行时给变量x输入12,则以下程序的运行结果是( )。
main()
{ int x,y;
scanf(’’%d’’,&x);
y=x>127x+10:x-12;
printff(’’%d\n’’,y);
}(A)
A. 0
B. 22
C. 12
D. 10
解析:本题考查三目条件运算符“?:”。表达式“x>127x+10:x-12”即,如果x>12成立,则x+10的值即为此表达式的值,否则x.12即为此表达式的值。因为x=12,所以x>12不成立,所以执行“y=x-12=0”。
5.以下叙述中正确的是( )。(C)
A. 语句char a[2]={\\
B. 语句int a[]={0};是不合法的,遗漏了数组的大小
C. 语句int a[8]={0};是合法的
D. 语句char a[3];a=\\
解析:考查一维数组以及字符数组的初始化。初始化的时候可以只给数组的前面一部分元素设定初值,故C正确。字符数组中的每个元素为一个字符,需要用单引号,选项A错。若对数组全部元素赋初值时,可以不指定数组元素的个数,选项B错。定义字符数组时可以将字符串直接赋给该字符数组,其他情况则不可以,选项D错。答案选C。
6.下列程序的输出结果是( )。
#include main()
void fun(int*a,int*b) { int a=1,b=2,*x=&a,*y=&b;
{ int*k; fun(x,y);
k=a;a=b;b:k;)printf(\\(B)
A. 2 1
B. 1 2
C. 编译出错
D. 0 0
解析:本题考查函数调用时的参数传递。分析题目可知 函数的形参是指向实参的指针,但main()函数中调用fun()函数时,实参是指针变量x、y(分别为指向a和b的指针),a、b的值在函数调用前后未发生变化,因而a=1,b=2,即输出1 2。
7.结构化程序所要求的基本结构不包括( )。(B)
A. 顺序结构
B. GOTO跳转
C. 选择(分支)结构
D. 重复(循环)结构
解析:1966年B0ehm和Jacopini证明了程序设计语言仅仅使用顺序、选择和重复三种基本控制结构就足以表达出各种其他形式结构的程序设计方法。
8.有以下定义:
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中的三个不同的成员,占用不同的存储空间。
9.设变量均已正确定义,若要通过scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2);语句为变量a1和a2赋数值10和20,为变量c1和c2赋字符X和Y。下列所示的输入形式中正确的是(注:口代表空格字符)( )。(A)
A. 10□X□20□Y
B. 10□X20□Y
C. 10口X
20Y
D. 10X
20□Y
解析:在使用scanf函数进行输入数据时,输入的数据之间必须用空格、回车符、制表符(Tab键)等间隔符隔开。
10.有以下程序
#include
main()
{ int a=1,b=0;
printf(\\(A)
A. 1,2
B. 1,0
C. 3,2
D. 0,0
解析:考查数据的输入,printf(\\
11.下面程序的输出结果是( )。
Typedef union{long x[1];
int y[4];
char z[10];
}M;
M t:
main()
{ printf(’’%d\n\\(C)
A. 32
B. 26
C. lO
D. 4
解析:“联合体”所占用的内存空间为最长的成员所占用的空间。题中联合体的z[10]成员是联合体中占空间最长的成员。
12.以下程序中函数sort的功能是对a数组中的数据进行由大到小的排序
void sort(int a[],int n)
{ int i,j,t;
for(i=0;i<n-1;i++)
for(j=i+1 ;j<n;j++)
if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}
}
main()
{ int aa[10]={1,2,3,4,5,6,7,8,9,10},i;
sort(&aa[3],5)
本文档预览:3600字符,共15647字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载