文档库 最新最全的文档下载
当前位置:文档库 › c语言期末测试题(附答案)

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

.

课程代码:A100002座位号:

《计算机技术基础(C语言)》试卷A 姓名: 学号: 专业:

学院: 班级:

20 年月日

第一部分

选择题(共30 分)

一、单项选择题(本大题共15 小题,每题只有一个正确答案,答对一题得 2 分,共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,%d\n”,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的表达式是【】。

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

5、已知:int a[2][3]; 则对数组元素的非法引用是【】

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

A. (a

B. (a

C. (a

D. (a

12、有以下程序

#include

main()

{int x;

scanf(“%d”,&x);

if(x<=3) ; else

if(x !=10)printf(“%d\n”,x); }

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

计算机技术基础试题第2页(共15页)

.

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)<(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表示说法正确.答F表示说法不正确,本题只需指出正确与错误,不需要修改)

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 分。)

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所占用的内存字

计算机技术基础试题第4页(共15页)

.

节数分别为_________和__________。

union stu1 struct stu2

{ int num; {int num;

char name[5]; char name[5];

char s; }x; char s; }y;

30、在TC中CTRL+F9的功能是__________、__________和_____________。

31、有以下程序

#include

main()

{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种文件(需要说明这些文件是什么文件、如何形成的):(1) file.c (2) file.obj (3) file.exe

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

34、#include

void main()

{ int a=10,b=18;

fun1(a,b);

}

int fun1(int x,int y)

{ if(x>y)

printf("a>b\n");

else if(x

else printf("a==b\n");

计算机技术基础试题第6页(共15页)

.

}

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

35、int fun(int a)

{ int b=0;

static int c=3;

b=b+1;

c=c+1;

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];语句改写成

计算机技术基础试题第8页(共15页)

.

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;

scanf("%d %d",&x,&y);

p1=&x; p2=&y;

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

printf("x=%d,y=%d", x, y); }

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

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

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

(先画N-S图,然后再编写程序代码)

计算机技术基础试题第10页(共15页)

.

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

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

例如:字符串str原内容为:abcde,函数调用后变为:edcba。void invert(char str[])

{ int i,j,k;

j= ______________;

for (i=0;i

{ k=str[i];

str[i]=str[j];

str[j]=_____________;

}

}

main()

{ char test[]="abcde";

invert(test);

printf("%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分)

计算机技术基础试题第12页(共15页)

.

31、不能(3分)

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

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

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

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

答:(1) file.c是源文件,通过编辑得到;(2) 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

3 6

(2)(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流程图,

然后编写程序)。

main( )

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

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

if(n

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

p=n*m ;

while(m!=0)

{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/n);

}

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

计算机技术基础试题第14页(共15页)

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

相关文档
相关文档 最新文档