C语言期末试卷题及答案

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档