1.下列程序段的输出结果是(C)。
int main(void)
{
int a = 2, b = -1, c = 2;
if(a < b)
if(b < 0)
c = 0;
else c++;
printf("%d\n",c);
return 0;
}
A.0
B.1
C.2
D.3
else与之前与其最近的且不带else的if配对,虽然这个题中没有加括号,但要清楚程序的执行顺序。上面的代码和下面等价:
#include <stdio.h>
int main(void) {
int a = 2, b = -1, c = 2;
if (a < b) {
if (b < 0) {
c = 0;
} else {
c++;
}
}
printf("%d\n", c);
return 0;
}
2.当字符型变量ch 取何值(或何范围)时输出“YES”(A)
char ch;
scanf("%c",&ch);
if(ch>='A'&&ch<='Z')
if(ch!='I'&&ch!='K')printf("NO");
else printf("YES");
A.I和K
B.除I和K以外的大写字母
C.除大写字母外的其他字符
D.大写字母
和上一个题大同小异,同样需要正确的刨析if语句中每一层的关系。
3.设变量已正确定义,以下(BCD)是合法的switch语句。
A.
switch(choice){ case 1: price = 3.0; break; case 2: price = 2.5; break; case 3: price = 4.0; break; case 4: price = 3.5; break; case 1: price = 3.0; break; default: price = 0.0; break; }
B.
switch(choice){ case 1: price = 3.0; break; case 2+2: price = 3.5; break; }
C.
switch(9){ case 3: price = 4.0; break; case 2: price = 2.5; break; }
D.
switch(choice* choice+1){ default: price = 0.0; break; case 2: price = 2.5; break; }
当时的主要困惑是C的9是否正确,9也算一个表达式。
另外,做关于switch的题时一定要关注break的使用。
4.对下列代码的描述正确的是:C
#include "stdio.h"
int main(){
long num=1;
while(num++ > 0) for(long i=num; i >=0; i--)printf("i :=\n \t %ld \n" , i);
return 0;
}
A.
程序有编译错误,不能执行
B.
循环条件永为真,循环无限次,程序根本停不下来,打印输出无限行
C.
循环有限次,程序正常结束,打印输出有限行
D.
程序运行过程必定会出错(崩溃),结果打印输出有限行
变量越界而反问题,在错题(1)中有具体介绍。
但同时发现,有些题会给出几个选项问到下列哪一个不是死循环,这时有时候便不会考虑这个问题,而是将这一问题笼统的归结为死循环,还是要具体问题具体分析,选出最优解。
5. 以下说法正确的是:(D)
A.一个C语言源文件(.c文件)必须包含main函数
B.一个C语言源文件(.c文件)可以包含两个以上main函数
C.C语言头文件(.h文件)和源文件(.c文件)都可以进行编译
D.在一个可以正确执行的C语言程序中,一个C语言函数的声明(原型)可以出现任意多次
一个函数的声明确实可以出现很多次,而一个c的项目可以包含很多.c文件,其中有且只能有一个有main函数 。
6. 关于递归函数以下叙述错误的是(B )。
A.
递归函数是自己调用自己。
B.
递归函数的运行速度很快。
C.
递归函数占用较多的存储空间。
D.
递归函数的运行速度一般比较慢。
递归函数运行速度一般比较慢,记住就好。
7.If all variables have been defined and declared in the following program, all the variables which can be used in function fun() are _A_.(如果在下面的程序中定义并声明了所有变量,那么fun()函数中可以使用的所有变量都是_A_。)
void fun(int x)
{
static int y;
……
return;
}
int z;
void main( )
{
int a,b;
fun(a);
……
}
A.x,y
B.x,y,z
C.a,b,y,z
D.a,b,x,y,z
z虽然是全局变量,但定义在函数fun之后,调用不到,而a、b是主函数里的,也调用不到
8. 静态变量的作用域是整个文件。(×)
看具体定义位置。
9.当变量的存储类型定义缺省时,系统默认为变量的存储类型为auto类型,分配在静态区。(×)
以上两题都是关于变量的存储方式问题,个人总结有以下需要注意的点:
《1. 全局变量全部存放在静态存储区;
《2.形参、函数中定义的没有用static声明的变量全部分配到动态存储区;
10.The following piece of code prints out_B_.
for (a=1,i=-1; -1<=i<1; i++) {
a++;
printf("%2d", a);
}
printf("%2d", i);
A.2 3 1
B.-1
C.1 2 0
D.3
在这个题的循环判断条件中的连续判断里面,从左到右先判断-1<=i,显然成立,返回1,之后再判断1<1,不成立,故不进入for循环,直接输出i。