西工大21年4月机考随机《C语言程序设计》标准资料
试卷总分:100 得分:100
一、 单选题 (共 35 道试题,共 70 分)
1. 以下错误的描述为( )。
A.在函数之外定义的变量称为外部变量,外部变量是全局变量
B.在一个函数中既可以使用本函数中的局部变量,又可以使用外部变量
C.外部变量定义和外部变量声明的含义相同
D.若在同一个源文件中,外部变量与局部变量同名,则在局部变量的作用范围内,外部变量不起作用
正确答案:C
2. 有以下程序
#include
main()
{ int x=1,y=0,a=0,b=0;
switch(x)
{ case 1:
switch(y)
{ case 0:a++; break;
case 1:b++; break;
}
case 2:a++; b++; break;
case 3:a++; b++;
}
printf("a=%d,b=%d\n",a,b);
}
A.a=1,b=0
B.a=2,b=2
C.a=1,b=1
D.a=2,b=1
3. 以下叙述中错误的是( )。
A.计算机不能直接执行用C语言编写的源程序
B.C程序经C编译程序编译后,生成后缀为.obj的文件是一个二进制文件
C.后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件
D.后缀为.obj和.exe的二进制文件都可以直接运行
4. 若二维数组a由m列,则在a[i][j]之前的元素个数为( )。
A.j*m+i
B.i*m+j
C.i*m+j-1
D.i*m+j+1
5. 有以下程序
main()
{ int i,s=1;
for (i=1;i<50;i++)
if(!(i%5)&&!(i%3)) s+=i;
printf("%d\n",s);
A.409
B.277
C.1
D.91
6. 若a为int类型,且其值为5,则执行表达式a+=a-=a*a后,a的值是( )。
A.-5
B.-40
C.-15
D.不确定
7. 设有 int x=8; 则表达式 (++x*1/3) 的值是( )。
A.2
B.3
C.2.6
D.0
8. 若变量已正确定义,有以下程序段
i=0;
do printf("%d,",i);while(i++);
printf("%d\n",i);
其输出结果是( )。
A.0,0
B.0,1
C.1,1
D.程序进入无限循环
9. 以下定义语句中正确的是( )。
A.int a=b=0;
B.char A=65+1,b=′b′;
C.float a=1,*b=&a,*c=&b;
D.double a=0.0;b=1.1;
10. 以下叙述中错误的是( )。
A.改变函数形参的值,不会改变对应实参的值
B.函数可以返回地址值
C.可以给指针变量赋一个整数作为地址值
D.当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULL
11. 以下程序的输出结果是( )。
main()
{ char c='z';
printf("%c",c-22);
A.d
B.e
C.c
D.f
12. C语言规定,在一个源程序中,main函数的位置( )。
A.必须在最开始
B.必须在系统调用的库函数的后面
C.可以任意
D.必须在最后
13. 若int i, x; 则for(i=x=0; i<9&&x!=5; i++, x++)控制的循环体将执行( )次。
A.10
B.9
C.5
D.6
14. 以下描述错误的是( )。
A.不同函数中可以使用相同的变量名
B.形式参数是局部变量
C.一个函数内部定义的变量只能在本函数范围有效
D.在一个函数内部的复合语句中定义的变量可以在本函数范围内有效
15. 数组定义char a[10]={'a','b','c';包括了( )。个元素。
A.3
B.9
C.4
D.10
16. 运行下面程序:
main()
{
int n1,n2;
scanf("%d",&n2);
while(n2!=0)
\ n1=n2%10;
n2=n2/10;
}
printf("%d",n1);
}若从键盘上输入298↙ ,则输出结果为( )。
A.2
B.29
C.8
D.0
17. ( )是构成C语言程序的基本单位。
A.函数
B.过程
C.子程序
D.子例程
18. 以下有关宏替换叙述中,错误的是( )。
A.宏替换不占用运行时间
B.宏无类型名
C.宏替换只是字符替换
D.宏名必须用大写字母表示
19. 已知static int a[2][3]={2,4,6,8,10,12; 正确表示数组元素地址的是( )。
A.*(a+1)
B.*(a[1]+2)
C.a[1]+3
D.a[0][0]
20. 设x、y、t均为int型变量,则执行语句:x=y=2;t=++x||++y;后,y的值为( )。
A.不确定
B.2
C.3
D.1
21. 在C语言中,变量的隐含存储类别是( )。
A.auto
B.static
C.extern
D.无存储类别
22. 不合法的常量是( )。
A.'\2'
B.'""'(外面是单引号)
C." "
D."\483"
23. 设有定义:char p[]={′1′,′2′,′3′,*q=p;,以下不能计算出一个char型数据所占字节数的表达式是( )。
A.sizeof(p)
B.sizeof(char)
C.sizeof(*q)
D.sizeof(p[0])
24. 逻辑运算符两侧运算对象的数据类型( )。
A.只能是0或1
B.只能是0或非0正数
C.只能是整型或字符型数据
D.可以是任何类型的数据
25. 对for(表达式1; ; 表达式3)可理解为( )。
A.for(表达式1; 0;表达式3)
B.for(表达式1: 1 ;表达式3)
C.for(表达式1; 表达式1; 表达式3)
D.for(表达式1; 表达式2; 表达式3)
26. 当c的值不为0时,在下列选项中能够将c的值赋给变量a、b的是( )。
A.c=b=a;
B.(a=c)︱︱(b=c);
C.(a=c)&&(b=c);
D.a=c=b;
27. 已知x=43,ch='A',y=0;则表达式x=y&& ch<'B'&&!y的值是( )。
A.0
B.语法错
C.1
D."假"
28. 以下描述中正确的是( )。
A.由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
B.do-while循环由do开始,用while结束,在while(表达式)后面不能写分号
C.在do-while循环体中,是先执行一次循环,再进行判断
D.do-while循环中,根据情况可以省略while
29. 在C语言中,逻辑值"真"是用( )表示的。
A.预定义为真值的宏
B.非零数
C.正数
D.非零整数
30. 以下存储类型只有在使用时才为该类型变量分配内存的是( )。
A.auto和static
B.auto和register
C.register和static
D.static和extern
31. 在一个C源程序文件中,若要定义一个只允许在该源文件中所有函数使用的变量,则该变量需要的存储类别是( )。
A.extern
B.register
C.auto
D.static
32. 请选出可用作C语言用户标识符的是( )。
A.void,define,WORD
B.a3_b3,_123,IF
C.FOR,--abc,Case
D.2a,Do,Sizeof
33. 下面程序的输出结果是( )。
main()
{
int x=10;
x+=(x=8);
printf("%d\n",x);
}
A.10
B.8
C.18
D.16
34. 设a=5, b=6, c=7, d=8, m=2,n=2, 执行(m=a>b)&&(n=c>b)后n的值为( )。
A.1
B.2
C.3
D.4
35. 当顺利执行了文件关闭操作时,fclose函数的返回值是( )。
A.0
B.True
C.-1
D.1
二、 判断题 (共 15 道试题,共 30 分)
1. 一个变量的地址就称为该变量的"指针"。
A.错误
B.正确
2. 数组的下标可以float数据类型。
A.错误
B.正确
3. 若有说明int c;则while(c=getchar());是正确的C语句。
A.错误
B.正确
4. 函数的实参和与其对应的形参各占用独立的存储单元。
A.错误
B.正确
5. 在c程序中,语句之间必须要用分号";"来分隔。
A.错误
B.正确
6. 语句 y=*p++; 和 y=(*p)++; 是等价的。
A.错误
B.正确
7. 若变量a和x均为double类型,则代数式x^2-e^5转化为正确的C语言表达式为:x*x-exp(5)。
A.错误
B.正确
8. for循环只能用于循环次数已经确定的情况。
A.错误
B.正确
9. 函数的定义可以嵌套,但函数的调用不可以嵌套。
A.错误
B.正确
10. 在C语言中整数只能表示为十进制数的形式。
A.错误
B.正确
11.题型:判断题
A.错误
B.正确
12. 用typedef可以定义各种类型名,但不能用来定义变量。
A.错误
B.正确
13. 已有定义int(*p)();指针p可以指向函数的入口地址。
A.错误
B.正确
14. 一个可执行的C语言程序总是从main()函数的入口地址处开始执行。
A.错误
B.正确
15. 若i为某函数func之内说明的变量,则当func执行完后,i值无定义。
A.错误
B.正确