1、一、简答题(10选2,每题5分) 1.简要叙述指针为函数参数的使用方法。 2.简要叙述结构体特点。 3. 简述机器语言、汇编语言和高级语言。 4. 简述C语言的特点。 5. 简述C语言程序的编辑、编译与运行。 6 简述程序设计语言的分类、高级语言及其分类。 7. 简述C语言的发展简史。 8. 简要列举C语言中的常用表达式。 9. 简要叙述break语句与continue语句的区别。 10.冯洛伊曼体系结构图 二、填空题(10个空每空2分) 1. 程序运行过程中,其值保持不变的量称为 ;为了提高程序的可读性与易维护性,可以用宏替换 给常量
2、命名。程序运行过程中,其值可以改变的量称为 。 2. 程序的三种基本结构是: 结构、 结构、 结构。 3. 数组是一组 、 的变量,数组中的变量称为 。数组名本质上是 ,它是数组的首地址即数组第一个元素的地址。 4. 函数是具有相对独立功能的 。函数定义中的参数称为 参数,函数调用中的参数称为 参数。函数的数据类型是函数返回值的数据类型;无返回值时,函数的数据类型为 。函数直接或间接调用自身称为 调用。 5
3、 计算机内存单元的 称为地址,存放地址的变量称为 变量。 6. 结构是一组 、 的变量,结构中的变量称为 。 7. 标识符由 、 、 组成,以 或 开头,字母区分大小写; 不能用作标识符。 8. 通过变量名访问变量,称为变量的 访问。通过变量的地址访问变量,称为变量的 访问。 9. 字符型常量是一对 括起的单个字符,字符串常量是一对 括起的一串字符。 10.在C语言中,文件可
4、以用 ___________和____________两种形式存取。 11.函数定义____________和_______________两部分组成。 12. 设p是指向数组中某元素的指针变量,分别写出下列表达式的含义: p++:___________________________________________________________; ++p:____________________________________________________________。 13.C标准函数库提供了丰富的输入输出函数,用户程序使用时需包含系统头文件_____________。
5、 14.数组的下标从_______开始,数组的最大下标是________________。 15.( )、=、&&的优先级顺序从高到低依次为__________________________。 16.任何一个计算机程序执行时的控制流程均可用三种基本结构表示:_________、__________、__________。 17.变量的地址被称为__________,而存放地址数据的变量称为__________。 18.运行C程序的一般步骤:____________、________________、______________、______________。 19.C标准函数库提供
6、了常用的字符串处理函数,用户使用时需包含头文件____________。 三、单选题(每题2分10题,请大家考试时慎重答题) 1. 以下正确的标识符是( C )。 A. %X B. a+b C. a123 D. test! 2. C语言中的基本数据类型包括( B )。 A. 整型、实型、逻辑型 B. 整型、实型、字符型 C. 整型、字符型、逻辑型 D. 整型、实型、逻辑型、字符型 3. 下面程序段所表示的逻辑关系是( B )。 if(a < b) x = 1; else x = 2 ; A. 当a < b时x = 1,当a > b
7、时x = 2 B. 当a < b时x = 1,当a ≥ b时x = 2 C. 当a ≤ b时x = 1,当a > b时x = 2 D. 当a ≥ b时x = 1,当a ≠ b时x = 2 4. 下列说法正确的是( )。 A. while循环中,必须使用break语句跳出循环 B. while循环中,当循环条件为真时结束循环 C. while循环中,必须使用continue语句跳出循环 D. while循环中,当循环条件为假时结束循环 5. 定义10个元素的整型数组a,应使用语句( A )。 A. int a[10] B. int a[2, 5]
8、 C. int a[] D. int *a[10] 6. 设有定义char s[10] = "ABCDE", t[10] = "xyz"; 则printf("%d", strlen(strcpy( s, t ))); 的输出是( A )。 A. 6 B. 5 C. 4 D. 3 7. 以下正确的说法是( )。 A. 函数定义不能嵌套,但函数调用可以嵌套 B. 函数定义可以嵌套,但函数调用不能嵌套 C. 函数定义和函数调用都可以嵌套 D. 函数定义和函数调用都不能嵌套 8. 已知double *p[6];它的含义是( C )。 A.
9、 p是指向double类型变量的指针 B. p是double类型数组 C. p是指针数组 D. p是数组指针 9. 设变量i的值为3,i的地址为2000,使指针变量p指向i,则赋值正确的是( D )。 A. &i = 3 B. *p = 3 C. *p = 2000 D. p = &i 10. 已知学生记录描述为: struct student{ int no; char name[20]; char sex; struct{ int year, month, day; }birth; }; struct stud
10、ent s; 设变量s中的“生日”为1994年11月11日,下列对birth的正确赋值方式是( D )。 A. year = 1994; month = 11; day = 11; B. birth.year = 1994; birth.month = 11; birth.day = 11; C. s.year = 1994; s.month = 11; s.day = 11; D. s.birth.year = 1994; s.birth.month = 11; s.birth.day = 11; 1. 以下选项中属于C语言的数据类型是( C )。 A.
11、 复数型 B. 逻辑型 C. 双精度型 D. 集合型 2. 已知字母A的ASCII是65,变量c是字符型,则执行语句c = 'A'+'6'-'3'; 后,c的值为( D )。 A. C B. D C. 68 D. 不确定 3. 下面程序段所表示的逻辑关系是( A )。 if( a < b ) x = 1; else x = 2 ; A. 当a < b时x = 1,当a ≥ b时x = 2 B. 当a ≤ b时x = 1,当a > b时x = 2 C. 当a < b时x = 2,当a ≥ b时x = 1 D. 当a ≥ b时x = 1,当
12、a ≠ b时x = 2 4. 下列说法正确的是( )。 A. do-while循环中,当循环条件为真时结束循环 B. do-while循环中,当循环条件为假时结束循环 C. do-while循环中,必须使用break语句跳出循环 D. do-while循环中,必须使用continue语句跳出循环 5. 设有定义char s[12] = "string"; 则printf("%d", strlen(s)); 的输出是( A )。 A. 6 B. 7 C. 8 D. 9 6. 在下述对C语言字符数组的描述中错误的是( C )。 A. 字符数组
13、可以存放字符串 B. 字符数组中的字符串可以进行整体输入/输出 C. 可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值 D. 字符数组的下标从0开始 7. 以下正确的说法是( )。 A. 函数定义不能嵌套,但函数调用可以嵌套 B. 函数定义可以嵌套,但函数调用不能嵌套 C. 函数定义和函数调用都可以嵌套 D. 函数定义和函数调用都不能嵌套 8. 已知char s[10], *p=s; 则在下列语句中,错误的语句是( B )。 A. p=s+5 B. s=p+s C. s[2]=p[4] D. *p=s[0] 9. 求数组int a[1
14、0]的首地址运算是( C )。 A. &a[10] B. a[0] C. &a[0] D. a[10] 10. 当说明一个结构体变量时,系统分配给它的内存是( A )。 A. 各成员所需内存量的总和 B. 结构中第一个成员所需内存量 C. 成员中占内存量最大者所需的容量 D. 结构中最后一个成员所需内存量 1. C语言中字符型(char)数据在内存中的存储形式是( D )。 A. 原码 B. 补码 C. 反码 D. ASCII码 2. 若已定义x和y为double型,则表达式x = 1.0, y = 3/2+x的值是( C
15、 )。 A. 1.0 B. 1.5 C. 2.0 D. 2.5 3. C语言的运算符按运算对象的数目不同可以分为( C )。 A. 单目运算符 B. 单目和双目运算符 C. 单目、双目和三目运算符 D. 单目、双目、三目和四目运算符 4. 下列说法正确的是( )。 A. while循环中,当循环条件为真时结束循环 B. while循环中,当循环条件为假时结束循环 C. while循环中,必须使用break语句跳出循环 D. while循环中,必须使用continue语句跳出循环 5. 已知:int a[3][4];则对数组
16、元素引用正确的是( C )。 A. a[2][4] B. a[1,3] C. a[1+1][0] D. a(2)(1) 6. 若有以下语句,则正确的描述是( B )。 char x[ ] = "12345"; char y[ ] = { '1', '2', '3', '4', '5' }; A. x数组和y数组的长度相同 B. x数组长度大于y数组长度 C. x数组长度小于y数组长度 D. x数组等价于y数组 7. 下列函数中,字符串比较函数是( )。 A. strcat B. strlen C. strcpy D. strcmp
17、 8. 已知函数定义如下: f(char *s, char *t) { while(*s++ = *t++); } 函数f的功能是( )。 A. 串复制 B. 求串长 C. 串比较 D. 串反向 9. 已知int x,则下面的定义指针变量p的语句正确的是( A )。 A. int p = &x B. int *p = x C. int *p = &x D. int *p = *x 10. 已知学生记录描述为: struct student{ int no; char name[20]; char sex; str
18、uct{ int year, month, day; }birth; }; struct student s; 设变量s中的“生日”应为1994年11月11日,下列对“生日”的正确赋值方式是( D )。 A. year = 1994; month = 11; day = 11; B. birth.year = 1994; birth.month = 11; birth.day = 11; C. s.year = 1994; s.month = 11; s.day = 11; D. s.birth.year = 1994; s.birth.month
19、 = 11; s.birth.day = 11; 1. 结构化程序设计所规定的三种基本控制结构是___C________。 A. 输入、处理、输出 B.树形、网形、环形 C. 顺序、选择、循环 D.主程序、子程序、函数 2.以下叙述中正确的是__________。 A. 构成C程序的基本单位是函数 B.可以在一个函数中定义另一个函数 C. main()函数必须放在其它函数之前 D. 所有被调用的函数一定要在调用之前进行定义 3. 以下选项中合法的用户标识符是___D_______。 A. long B. test1 C. 3Dmax
20、 D. A.dat 4. 已知i、j、k为int型变量,若从键盘输入:1,2,3<回车>,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是____B_______。 A.scanf(%2d%2d%2d,&i,&j,&k); B. scanf(%d %d %d,&i,&j,&k); C. scanf(%d,%d,%d,&i,&j,&k); D. scanf(i=%d,j=%d,k=%d,&i,&j,&k); 5. 以下c语言函数声明中,不正确的是___B_______。 A. void fun (int x, int y); B. fun
21、 (int x, int y); C. int fun (int x,y); D. char *fun (char *s); 6. C语言中while和do-while循环的主要区别是____D________。 A. do-while 循环体至少要无条件执行一次。 B. while循环比do-while 循环控制条件严格。 C. do-while 允许从外部转到循环体内。 D .do-while 的循环体不能是复合语句。 7. 变量的指针,其含义是指该变量的_____B________。 A. 值 B. 地址 C. 名 D. 一个标
22、志 8. 假设指针p已经指向某个整型变量m,则*p相当于____C__________。 A. &m B. &p C. m D. *m 9. 若x=2,y=3则x&y的结果是______D__________。 A. 0 B. 2 C. 3 D. 5 10. 设有定义int x=1; int y=‘a’<‘A’?x--:x++;,则变量y的值是___C________。 A. 0 B. 2 C. 1 D. 3 1. 要把高级语言编写的源程序转换为目标程序,需要使用_____A_______
23、 A. 编辑程序 B. 驱动程序 C. 诊断程序 D. 编译程序 2. 英文小写字母d的ASCII码为100,英文大写字母D的ASCII码为 _____D_______。 A. 50 B. 66 C. 52 D. 68 3.设a和b均为double型常量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是_____B_____。 A. 6.500000 B. 6 C. 5.500000 D. 6.000000 4. 表达式1&&3&&5的值为____D_________。 A. 1 B. 3
24、 C. 5 D. 7 5. 下列选项中,不合法的C语言关键字是______________。 A. auto B. default C. static D. var 6. C语言允许函数值缺省定义,此时该函数值隐含的类型是______B________。 A.float B. int C. long D. double 7. 若x=5,则x*=x+2的值为____C____________。
25、
26、
27、
28、
29、
30、
31、
32、 A. 35 B. 12 C. 7 D. 25 8. 以下运算符中,运算对象必须是整型的是___B__
33、 A. / B. % C. ! D.〈 9. 若有定义:int a[10];则对a数组元素的正确引用是____C_________。 A. a[10] B. a[15] C. a[7] D. a (5) 10.设有定义int x=2; int y=‘a’<‘A’?x--:x++;,则变量y的值是_____D______。 A. 0 B. 2 C. 1 D. 3 四、判断题(每题2分10题,请大家考试时慎重答题) 1. C变量必须先定义(声明),后使用。 ( T ) 2. C语言不允许混合
34、类型数据间进行运算。 ( F ) 3. 模运算符%要求运算对象必须是实型。(整数) ( T ) 4. 多个变量定义时赋初值可以写成:int a = b = c = 3。 ( F ) 5. 逗号运算符的优先级最低。 ( T ) 6. 若x是双精度型变量,赋值x = 10后,则x中存放的是整型数。 ( T ) 7. switch语句中可使用break语句和continue语句。 ( T ) 8. switch语句中的case表达式可以是任意类型的表达式。 ( T ) 9. C程序总
35、是从main函数开始执行,因此main函数必须是第一个函数。 ( F ) 10. 函数必须有返回值,否则不能定义成函数。 ( T ) 3. 自增运算符(++)或自减运算符(--)的运算对象是变量,而不能是常量或表达式。( T ) 4. 多个变量定义时赋初值可以写成:int a = b = c = 3。 ( F ) 5. 逗号运算符的优先级最低。 ( T ) 6. 若a是浮点型变量,赋值a = 100后,则a中存放的是整型数。 ( F ) 7. switch语句中的case表达式可以是任意类型的表达式。 ( T )
36、 8. break语句只能用于循环语句。 ( F ) 9. C程序总是从第一个函数开始执行,执行完最后一个函数后,程序结束。 ( F ) 10. 调用函数时,只能把实参的值传递给形参,形参的值不能传递给实参。 ( T ) 1. C 语言源程序文件通过了编译、连接之后生成一个后缀为 .EXE 的文件。 ( T ) 2. 在 C 程序中函数既可以嵌套定义 , 也可以嵌套调用。 ( F ) 3. 在 C 程序中APH 和 aph 代表不同的变量。 ( T ) 4.
37、 表达式 0195 是一个八进制整数。 ( F ) 5. Continue语句的作用是结束本次循环。 ( F ) 6. 可以将一个整数赋给一个指针变量。 ( ) 7. C语言中字符串的结束符是’\0’。 ( ) 8. do-while的循环体至少无条件执行一次。
38、 ( T ) 9. C程序总是从main( ) 函数的第一条语句开始执行的。 ( F ) 10. 数组名代表数组的首地址。 ( ) 1.在对一个C程序进行编译的过程中,不能发现注释中的拼写错误。 (F ) 2.在C程序中,main函数必须位于程序的最前面。 (F ) 3.printf()函数总是从新行的起始位置开始打印。 ( F) 4.C语言认为变量numbe
39、r和NuMbEr是不相同的。 (F ) 5.在C程序中,无论是整数还是实数都能被准确无误地表示。 (F ) 6.switch选择结构中必须有default子句。 (F ) 7.如果x>y或ay&&a
40、
10.int i,*p=&i;是正确的C语言的说明。 (T )
五、程序阅读(每题2分5题)
1. 以下程序的运行结果为 62 。
#include
41、 。
#include
42、iness university";
strcat(s, t);
printf("%s, %d\n", s, strlen(s));
}
4. 以下程序的运行结果为 。
#include
43、 。
#include
44、 int a, b, x;
x = ( a=3, b=a--);
printf("x=%d, a=%d, b=%d\n", x, a, b);
}
2. 以下程序的运行结果为 。
#include
45、 。
#include
46、n(void)
{
int n, i, a=1, b=1, c;
for(i=0; i<10; ++i){
printf("%-6d", a);
c = a+b;
a = b;
b = c;
}
printf("\n");
}
5. 以下程序的运行结果为 。
#include
47、"x=%d\n", x);
}
void f(int x)
{
x = 20;
}
2. 以下程序的运行结果为 。
#include
48、 。
#include 49、h>
int func(int a[][3])
{
int i, j, s=0;
for(i=0; i<3; ++i)
for(j=0; j<3; ++j){
a[i][j] = i+j;
if(i==j) s = s+a[i][j];
}
return s;
}
void main(void)
{
int sum;
int a[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
sum = func(a);
printf("sum=%d\n", sum);
50、 }
5. 以下程序的运行结果为 。
#include






