C语言期末试卷题及答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、选择题(共20分,每小题2分)
1. 在C语言类型说明中,int, char, short等类型数据的长度是( D )。
A. 固定的
B. 由用户自己定义的
C. 任意的
D. 与机器字的长度有关
2. 若已正确说明为int类型,要给abc输入数据,则正确的输入语句是( D )。
A. read(a,b,c);
B. scanf(“%d%d%d”,a,b,c);
C. scanf(“%D%D%D”,&a,&b,&c);
D. scanf(“%d%d%d”,&a,&b,&c);
3. C语言中对嵌套if语句的规定是:else总是与( D )配对。
A. 其之前最近的if
B. 第一个if
C. 缩进位置相同的if
D. 其之前最近且不带else的if
4. 以下语句中,( C )是不可能做到提前退出循环语句的。
A. goto
B. break
C. continue
D. return
5. 假设有两个字符数组a、b,则以下正确的输入语句是( B )。
A. gets(a, b)
B. scan f(“%s %s”,a,b)
C. scanf(“%s%s”,
D. gets(“a”); gets(“b”)
6. 以下正确的描述是( B )。在C语言程序中,
A. 函数的定义可以嵌套,但函数的调用不可以嵌套
B. 函数的定义不可以嵌套,但函数的调用可以嵌套
C. 函数的定义和含糊的调用均可以嵌套
7. 在宏定义#define PI 3.1415926中,用宏名PI代替一个( D )。
A. 单精度数
B. 双精度数
C. 常量
D. 字符串
8. 以下选项中,对指针变量p不正确的操作是( C )。
A. int a[6], *p; p = &a;
B. int a[6], *p; p = a;
C. int a[6]; int *p = a = 1000;
D. int a[6]; int *p1, *p2 = a; *p1 = *p2;
9. 设有以下说明,已知int类型占2个字节,则下列叙述正确的是( D )。
struct st { int a; int b[2]; } a;
A. 结构体变量名a和结构体成员a同名,不合法
B. 程序运行时将为结构体st分配6个字节的内存单元
C. 程序运行时不为结构体st分配内存单元
D. 程序运行时将为结构体变量a分配6个字节的内存单元
10. 当文件顺利关闭时,fclose()的返回值是( C )。
A.-1 B. EOF C. 0 D. 1
二、填空题(共20分,每小题2分)
1. C程序中定义的一个变量,代表内存中的一个存储单元。
2. …\72‟在内存中占一个字节,”\72”在内存中占二个字节。
3. 结构化程序设计的3种基本结构是顺序结构、选择结构、循环结构。
4. 下列for循环执行 4 次。For (x =0 , y = 0; y != 99 && x < 4; x++) ;
5. 若有定义“double x[3][5];”则x数组中行下标的下限为0 , 列下标的上限为 4 。
6. 函数swap(intx, inty)可以完成对x和y值的交换。在运行调用函数中的如下语句后,
a[0]和a[1]的值分别为1, 2 ,原因是参数按值传递,形参值的改变不会影响实参值。
a[0] = 1; a[1] = 2; swap(a[0], a[1]);
7. 设有以下宏定义:
#define WIDTH 80
#define LENGTH (WIDTH + 40)
则执行赋值语句”k = LENGTH * 20;” (k为int型变量)后,k的值是2400 。
8. 声明语句” int (*p)( ); ” 的含义是P是一个指向函数的指针变量,该函数的返回值是整
型。
9. typedef long int BIGGY 的作用是定义了一个新的数据类型标识符。
10. EOF只可用于文本文件,用来作为文件结束标志。
三、阅读程序,并将分析结果写在程序右边空白处(共24分,每小题6分)
1. 运行下列程序,如果输入5432,请写出程序运行结果。
#include
main()
{
int digit, number;
scanf("%d", &number);
while(number){
digit = number % 10;
number /= 10;
printf("%d", digit);
}
}
结果为:2345
评分标准:若结果正确,6分;若结果部分有误,但有正确分析过程,根据比例适当得分;若结果有误且无分析,得0分
2. 运行下列程序,如果输入18 ,请写出程序运行结果(库、头文件省略)。
#include
int main()
{
int x, y, i, a[8], j, u, v;
scanf("%d", &x);
y = x;
i = 0;
do {
u = y / 2;
a[i] = y % 2;
i++;
y = u;
} while(y >= 1);
for(j = i - 1; j >= 0; j--)
printf("%d", a[j]);
printf("\nyes");
}
结果为:(十进制转二进制)
10010
Yes
评分标准:若结果正确,6分;若结果部分有误,但有正确分析过程,根据比例适当得分;
若结果有误且无分析,得0分
3. 请写出以下程序的运行结果
#include
void increment(void);
int main()
{
increment();
increment();
increment();
}
void increment(void)
{
static int x;
x += 1;
printf("%d", x);
}
结果为:123
评分标准:若结果正确,6分;若结果部分有误,但有正确分析过程,根据比例适当得分;
若结果有误且无分析,得0分
4. 请写出以下程序的运行结果
#include
#include