选择题
1.局部变量的作用域是:(D)
A.main函数内部
B.整个程序
C.main函数之前
D.局部变量所在的局部范围
2.字符串的结束标志是:(A)
作业内容
A.是’0’
B.是EOF
C. 是’\0’
D.是空格
3.下面那个不是转义字符?(C)
A.‘\n’ //‘\n’ 转义字符,代表换行
B.‘\060’ //‘\060’ 转义字符,060八进制数据,十进制为48,表示ASCII码为48的’0’
C.‘\q’ //‘\q’ 什么都不是
D.‘\b’ //‘\b’ 转义字符,表示退格
4.下面代码的结果是:( C)
#include <stdio.h> #include <string.h> int main() { char arr[] = {'b', 'i', 't'}; printf("%d\n", strlen(arr)); return 0; }
A.3
B.4
C.随机值 strlen函数是以’\0’为停止标识符,在arr数组中没有碰到,自然向后随机读取至’\0’
D.5
5.下面代码输出的结果是:( B )
#include <stdio.h> int num = 10; int main() { int num = 1; printf("num = %d\n", num); return 0; }
A. 程序有问题,不能编译
B.输出1
C.输出10
D.输出0
本题主要考察变量的访问规则,C语言中:
- 不允许在同一个作用域中定义多个相同名称的变量
- 允许在不同的作用域中定义多个相同名称的变量
- 不同作用域中定义的变量,在访问时采用就近原则。
6.下面程序的结果是:( A)
#include <stdio.h> #include <string.h> int main() { printf("%d\n", strlen("c:\test\121")); return 0; }
A.7
B.8
C.9
D.10
c:\test\121,来逐步分析c是1个,:2个,\t3个,est6个,\121(八进制数字)7个。
7.关于C语言关键字说法正确的是:( B )
A.关键字可以自己创建
B.关键字不能自己创建
C.关键字可以做变量名
D.typedef不是关键字
8.用在switch语言中的关键字不包含哪个?(A )
A.continue
B.break
C.default
D.case
9.关于数组描述错误的是:(B)
A.数组是一组相同类型元素的集合
B.数组的下标是从1开始的
C.数组的下标是从0开始
D.数组如果初始化,可以不指定数组的大小
10.C语言中下面哪个数组的创建错误的:( B)
A.int arr[10] = {0}
B.int n = 10; int arr[n] ={0} // 对c语言来讲,数组的大小必须是常量
C.int arr[] = {1,2,3,4,5,6,7,8,9,0}
D.char ch[10] = “hello bit”
11.下面哪个不是关键字:( C)
A.int
B.struct
C.define // 定义标识符
D.continue
12.下列程序执行后,输出的结果为(B)
#include <stdio.h> int cnt=0; int fib(int n){ cnt++; if(n==0) return 1; else if(n==1) return 2; else return fib(n-1)+fib(n-2); } void main() { fib(8); printf("%d",cnt); }
A. 41
B. 67
C. 109
D. 177
这道题很明显就是问这个fib函数一共被调用了多少次,来具体分析一下就可以了。
把数一下有多少个数字就知道答案是多少了,很明显答案是67。
13.在上下文和头文件均正常情况下,以下程序的输出结果是()
int x = 1; do{ printf("%2d\n",x++); }while(x--);
A. 1
B. 无任何输出
C. 2
D. 陷入死循环
这个很简单先使用那么打印的1,该语句过后x变为2,先判断while条件为2,后使用变为1,之后再次先使用打印的为1,该语句过后为2,之后判断条件又为2,判断后变为1,所以这段代码是在死循环的打印“01”。
14.下面的代码段中,执行之后 i 和 j 的值是什么(C)
int i=1; int j; j=i++;
A. 1,1
B. 1,2
C. 2,1
D. 2,2
这里i的值先使用赋给j,所以j为1,这条语句执行完i变为2,所以很明显答案是2,1。
15.以下程序的k最终值是(A)
int i = 10; int j = 20; int k = 3; k *= i + j;
A. 90
B. 50
C. 70
D. 30
最后一条语句的意思可以理解为最后的k=k*(i+j),所以k=90