c语言期末测试题(附答案)(20210226144328)

课程代码:A100002 座位号:

《计算机技术基础(C 语言)》试卷A

姓名: _______________ 学号: _________________ 专业: ___________

学院: _______________________ 班级: __________________________

20年 月曰

选择题(共30分)

题(本大题共15小题,每题只有一个正确答案,答 分,共30分)

1

、 以下关于C 语言标识符的描述中,正确的是 【

】。

A)

标识符可以由汉字组成 B )标识符只能以字母开头 C )关键字可以作为用户标识符

D ) Area 与area 是不同的标识符

2、 使下列程序段输出“ 123, 456, 78”,键盘输入数据,正确的输入是【 】

int i,j,k;

scanf( “%d,%3d%'d ,&i,&j,&k); printf(

“%d,%d,%dn ” ,i,j,k);

A ) 12345678

B ) 123,456,78

C ) 123,45678

D ) 123,*45678 3、 判断char 类型的变量c1是否为数字字符的正确表达式为 【

】。

A) (c1>=0)&&(c1<=9) B) (c1>= ' 0' )&&(c1<=' 9') C) ' 0' <=c1<= 9'

D) (c1>=

' 0' )||(c1<= ' 9')

4、 若有语句int a=1,b=2,c=3 ;则以下值为0的表达式是 【

】。

第一部分

一、单项选择 对一题得2

课程代码:A100002 座位号:

A)' a' && b' B ) a<=b C ) ((a>b)||(b

A. *(a[0]+2)

B. a[1][3] C . a[1][0] D. *(*(a+1)+2)

6、在循环语句的循环体中执行 break 语句,其作用是 【 】。 A) 跳出该循环体,提前结束循环

B) 继续执行break 语句之后的循环体各语句 C) 结束本次循环,进行下次循环 D) 终止程序运行

7、 执行语句 for(i=10;i>0;i--) ;后,变量 i 的值为 【

】。

A ) 10 B

) 9 C ) 0 D ) 1

8、 若有 int *p1, *p2, k; 不正确的语句是 【

A. p1=&k

B. p2=p1

C. *p1=k+12

D. k=p1+p2

9、 在函数中未指定存储类别的局部变量,其隐含的存储类别是

【 】

A. 静态( static )

B. 外部( extern )

C.自动(auto )

D .寄存器(register )

10、 如下程序的输出结果是

main( )

{ int x=2,a=0,b=0;

switch(x)

{ case 2: a++; b++;

case 1: ++a; b--; break; case 0: b++;}

printf("a=%d, b=%d\n", a, b);}

A. a=2, b=0

B. a=2, b=1

C. a=1, b=1

D. a=1, b=0 11、表示关系 a

【 】

main()

{int x;

scanf( “%d ” ,&x); if(x<=3) ; else if(x !=10)printf(

“%d\n ” ,x); }

程序运行时,输入的值在哪个范围才会有输出结果。

A. (a

C. (a

#include B. (a

A.不等于10的整数

B. 大于3且不等于10的整数

C. 大于3或不等于10的整数

D. 小于3的整数

13、break 语句的正确用法是

A.无论在任何情况下,都中断程序的执行,退出到系统下一层。

B. 在多重循环中,只能退出最靠近的那一层循环语句。

C. 跳出多重循环。

D. 只能修改控制变量。 14、若a, b, c, d 均为整型变量,执行以下程序段后的 t 的值为 【

#define MAX(A,B) (A)v(B)?(A):(B) a=5; b=3; c=3; d=4; t=MAX(a+b,c+d) *10; A. 70 B. 7 C. 8 D. 80 15、执行以下程序段后,m 的值为 【

int a[6]={1,2,3,4,5,6}, m, *p; p=&a[0];

m=(*p)*(*(p+2))*(*(p+4)); A) 15 B) 14

C) 13

D) 12

第二部分

非选择题(共70分)

(本大题共10小题,每题1分,共10分,答T 表示说 表示

说法不正确,本题只需指出正确与错误,不需要修

16.

【】 17. 函数定义与函数的声明是一回事。 【】 18. 在C 语言中函数能嵌套调用,也能嵌套定义。 【】 19. 在C 语言中switch 语句必须使用break 语句。 【】 20. for 循环中的三个表达式都可以省略。 【】 21. do-while 循环是先进行循环体语句,后判断表达式。 【】 22. 只能在main()函数中定义静态变量。 【】

23. char *s1“I love china ”;定义了一个指针变量 s1,它的初值为字符串“I love china 的首地址。 【】

24. int *p[4]; 与int (*p)[4]; 的作用相同,都是定义了一个指向数组的指针。 【】

25. 预处理命令行最后也是以分号(;)结尾的。 【】

得分

评卷人 、填空题(本大题共6小题,每题3分,共18分。)

二、判断题 法正确.答F

26、在C 语言中*作为单目运算符时表示 _______________ 作为双目运算符时表示 ___________ 而作为一种标记时表示 ________________ 。 27、 ____________________________________________ 表达式(a=3*5,a*4),a+5 中a 的值是 整个表达式的值是 ___________________________________ 28、 设有如下的类型说明:

int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;

若数组所占内存单元的起始地址为 446且整型数据占2个字节,则p+5= __________ , *(p+5)= _____ 。

29、若定义了如下的共用体类型变量 x 和结构类型变量y ,则x 和y 所占用的内存字 节数分别为 __________ 和 __________ 。 union stu1 struct stu2

30、 在TC 中CTRL+F9勺功能是 _______ 、 ___________ 和 _____________ 。 31、 有以下程序 #i nclude

mai n()

{char c1,c2;

scanf( “ %c ,&c1); while(c1<65||c1>96) scanf( “%c ,&c1);

c2=c1+32; printf(

“%c,%c ,c1,c2);

}

程序运行输入65回车后,能否输出结果。(请回答能或不能) __________ 。 四、简答题(本大题共2小题,每题3分,共6 分。) 32、C 语言中变量的存储类别有几种?局部变量的缺省存储类别是 哪种。

33、请解释以下与一个C 程序有关的3种文件(需要说明这些文件是什么文件、如何 形成的):⑴ file.c (2) file.obj (3) file.exe

{ int num; char n ame[5]; char s; }x; {int num; char n ame[5]; char

s; }y;

void mai n() { int a=10,b=18;

fun 1(a,b); }

int fun 1(i nt x,i nt y) { if(x>y)

prin tf("a>b\n");

else if(x

}

问题:(1 )写出程序的运行结果; (2)分别列出形参和实参;(3)解释#include

35、int fun(int a) { int b=0; static int c=3;

b=b+1; c=c+1;

五、阅读程

34 得分 评卷人

序回答问题(本大题共4小题,每题5分,共20 分)

#in elude

return(a+b+c);}

main( )

{ int a=2, i;

for(i=0; i<3; i++)

printf( “%d”, fun(a)); }

问题:(1) 写出该程序的运行结果;(2) 如果将static int c=3; 成int c=3; ,则运行结果如何变化?为什么?

36、main( )

{ int a[2][3]={1,2,3,4,5,6}, b[3][2], i, j; printf( “array a: n”);

for(i=0;i<=1;i++) { for(j=0;j<=2;j++)

{printf( “%5d”, a[i][j ]); b[j][i]=a[i][j];} /* 第七行*/

printf( “ n”);} printf( “array b: n”);

for(i=0;i<=2;i++) {for(j=0;j<=1;j++)

printf( “%5d”, b[i][j]); printf( “ n”);}

}

问题:(1) 写出程序的运行结果;(2) 如果将第七行中的b[j][i]=a[i][j];

b[i][j]=a[i][j]; ,则结果如何变化。

37、#include

void fun(int *p1, int *p2)

{ int t;

t=*p1; *p1=*p2; *p2=t; } void main()

语句改写语句改写成

{ int x,y;

int *p1,*p2;

sea nf("%d %d",&x,& y); p 仁&x; p2=&y;

if(x>y) fun (p1,p2);

prin tf("x=%d,y=%d", x, y); }

问题:(1)该程序的功能是什么;(2)程序中的*和&分别代表什么运算符? (3)若输入5 3 ,则运行结果如何?

序(本大题共1小题,共10分。

正整数m 和n ,求其最大公约数和最小公倍数 再编写程序代码)

(先画

六、编写程 38、输入两个

七、程序填空(本大题共1小题,共6分。

39、invert()函数的功能是将一个字符串str的内容倒序存放。例如:字

符串str原内容为:abcde,函数调用后变为:edcba。void inv ert(char

str[])

{ int i,j,k;

j= ______________

for (i=0;i

{ k=str[i];

str[i]=str[j];

str[j]= ____________

}

}

mai n()

{ char test[]="abcde";

inv ert(test);

prin tf("%s\n",test);

}

课程代码:A100002 座位号:

《计算机技术基础(C语言)》试卷A标准答案学院:___________________________ 班级:___________________________

20年月曰

第一部分选择题(共30分)

一、单项选择题(本大题共15小题,每题只有一个正确答案,答对一题得2 分,共30 分)

1、D 2 、C 3 、B 4、 D 5、B

6、A 7 、C 8 、D 9、 C 10、A

11、A 12 、B 13、B 14、 A 15、A

第二部分非选择题(共70分)

二、判断题(本大题共10小题,每题1分,共10分,答T表示说法正确.答F表示说法不正确,本题只需指出正确与错误,不需要修改)

16、F 17 、F 18 、F 19 、F 20 、T

21、T 22 、F 23 、T 24 、F 25 、F

三、填空题(本大题共6小题,每题3分,共18分。)

26、指向(1份),乘(1分);定义的变量是指针变量(1分)

27、15(2 分),20(1 分)

28、456(2 分),6(1 分)

29、5(2 分)、8(1 分)

30、编译(1 分)、连接(1 分)、运行(1分)

31、不能(3分)

四、简答题(本大题共2小题,每题3分,共6 分。)

32(3分)、32、C语言中变量的存储类别有几种?局部变量的缺省存储类别是哪种。

变量的存储类别分为两大类:静态存储类和动态存储类。具体包含四种:自动的(auto)、静态的(static)、寄存器的(register)、外部的(extern)。局部变量

的缺省存储类别是auto变量。

33(3分)、请简单说明C程序的执行过程。

答:(1) file.c 是源文件,通过编辑得到;⑵file.obj 是目标文件,即计算机能够处理的由二进制指令组成的文件,通过对源文件进行编译得到;(3) file.exe 是可执行文件,通过将目标文件与其他目标文件或库函数连接得到。

五、阅读程序回答问题(本大题共4小题,每题5分,共20分)

34、((1)(2分)程序的运行结果:a

(2)(1分)形参:x, y ;实参:a, b

(3)(2分)#include 是文件包含预处理命令,是将标准输入输出头文件stdio.h包含到该程序中。

35、(1)(2分)运行结果7 8 9 (2)(3分)运行结果变成7 7 7

因为在原来的程序中用static定义的变量c是局部静态变

量,具有全局寿命,而修改后,变量c变成了局部动态变量,在函

36、( 1) ( 3分)运行结果array a: array b:

1 2 3 1 4

4 5 6 2 5

⑵(2分)输出结果为:

array a: array b:

1 2 3 1 2

4 5 6 4 5

随机数随机数

数调用出现时给这个变量分配内存单元

37、(1)该程序的功能是由小到大输出两个数

(2) *表示指向运算符;&表示取地址运算符

(3)x=3, y=5

六、编写程序(本大题共1小题,共10分。)

38、输入两个正整数m和n,求其最大公约数和

最小公倍数。(先画N-S流程图,然后编写程

序)。

mai n()

{ in t p,r,m, n,t;

scanf( “ %d,%d,&n,&m);

if(*m)

{t=n ;n=m ;m=t ;}

p=n*m ;

while(m!=O)

{r=n%m ;n=m ;m=r ;}

printf("zui da gong yue shu :%d\n ”,n); printf("zui xiao gong bei shu :%d\n ”,p/ }

七、程序填空(本大题共1小题,共6分。

39、(1) strlen(str)-1 ( 3 分),(2) k ( 3 分)

输入n,m

t=n;

n=m;

m=t;

p=n*m;

m!=0

r=n%m;n=m ;m=r

;

门最大公约数n,最小公倍数p/n

相关主题
相关文档
最新文档