期末试卷(含答案)

发布时间:2020-04-26 00:19:27

课程名称 计算机基础及C语言(Ⅱ) 开课学院 计算机学院

使用班级 考试日期 .

注意事项:

1. 闭卷考试。考试时间为120分钟。

2.答案均请用铅笔涂在答题卡上。将答题卡上的试卷类型涂A(补考则涂B)。

3.请将答题卡、试卷都写上班级、学号、姓名、任课教师。考试结束分别交予监考老师。

一、 选择题(30分,每小题1分,请涂写在答题卡上)

1. 以下常量中正确的是 D

A'abc' B. '\x123' C.3.145E-1.2 D. "a"

2. 以下选项中,不能用作变量名的是 D

A. _1234_ B._1_2 C.int_2_ D.2_int_

3. 设有“int a;”,以下不能正确表达10的表达式是 A

A. 10 B. A==11||a==12||a==13||a==14

C. a>10&&a<15 D.!(a<=10)&&!(a>=15)

4. 已知数据类型定义和变量声明如下:

struct sk

{int a; float b;}data[2], * p

若有p=data,则以下对data[0]中成员a的引用中错误的是 A

A. data[0]->a B. data->a C. p->a D. (* p).a

5. 下列程序的程序输出结果为 A

#define X(a) a*a

main()

{ printf(“%d\n”,X(4+5));}

A.29 B.18 C.20 D.25

6. 若有定义“enum seq{mouse, cat, dog, rabbit=0, sheep, cow=6, tiger}; 则执行语句“printf(%d,cat+sheep+cow);”后输出的结果是_____C______

A. 6 B.7 C.8 D. 9

7. 以下能将字符串“good!”正确地存放在字符数组s中,或使指针s能指向这个字符串的是______D______

A. char s[4]={‘g’, ‘o’, ‘o’, ‘d’, ‘!’}; B. char s[5];s=“good!”;

C. int s[5]= “good!”; D. char *s;s=“good!”;

2

8. 设有说明:

union data

{ int i ;float f;

struct{ int x;char y;}s;

double d; }a;

则变量a 在内存中所占字节数为_ A __

A.8 B.17 C.9 D.15

9. 设已有非空文本数据文件filel.dat,要求能读出文件中原有的全部数据,并在文件原有数据之后添加新数据,则用FILE *fp=fopen("file1.dat" D )打开该文件

A. "w" B. " w+" C. "r+" D. "a+"

10. 以下关于if语句的错误描述是 B

A. 条件表达式可以是任意表达式

B. 条件表达式只能是关系表达式或逻辑表达式

C. 条件表达式的括号不可以省略

D. else配对的if语句是其之前最近的未配对的if语句

11. 以下不致造成死循环的语句是: A

A. for(y=0,x=1; x>++y; x=i ++) i =x;

B. for(; ;x+=i );

C. while(x=8) x--;

D. for(i =10,sum=0; sum<=i ;) sum= --i ;

12. 设有定义:“float y=3.45678;int x;”,则以下表达式中能实现将y中数值保留小数点后2 位,第3位四舍五入的表达式是: B

A. y=(y*100+0.5)/100.0 B. x=y*100+0.5,y=x/100.0

C. y=y*100+0.5/100.0 D.y=(y/100+0.5)*100.0

13. 以下程序段输出结果是: C

int a=10,b=11,c=12,s;

s=a++<=10&&b--<=2&&c++;

printf(“%d,%d,%d,%d”,s,a,b,c);

A. 0,11,10,13 B. 1,11,10,13 C. 0,11,10,12 D.1,11,10,12

14. 设有“char s[ ]=Program,*p=s;,则以下叙述中正确的是: C

A. 数组s的内容与指针变量p中内容相同

B. 数组s的长度与strlen(p)的值相等

C. p[5]的值等于s[5]的值

D. sizeof(s)等于sizeof(*p)

15. 下列程序段执行后变量j的值是: B

int j; char *s="x\045\""; for(j=0;*s++;j++);

3

A. 7 B. 3 C. 4 D. 5

16. 若有定义语句“static char str[4][20]={ "thank", "you","very","much! "};”则str数组中存储'\0' 的数组元素有: D 个。

A. 0 B. 17 C. 21 D. 63

17. 下列正确的声明说明语句是 D

A. float m=15,n=4,q=m%n;

B. int n=10, y[n];

C. char p[2][ ]={ "DOS","WINDOWS"};

D. char *p[ ]={ "DOS","WINDOWS","UNIX"};

18. 设有函数f的定义如下:

void f(int x, int *y)

{ *y=x*x*x;}

main( )

{ int j,c[4]={1,2,3,4},s[4]={0};

for(j=0;j<4;j++)

{ /* 调用f函数*

printf(“%d”,s[j]); }

}

若在main函数中欲调用函数f,则正确的调用语句是______C______

A. f(c,s); B. f(c[i ],s[i]);

C. f(*(c+i),&s[i]); D. f(c+i ,s+i );

19. 执行以下程序段后,x,w的值为_____C_______

int x=0,y=1,z=2,w;

if(x++) w=x;

else if(x++&&y>=1) w=y;

else if(x++&&z>1) w=z;

A. 0,1 B. 1,1 C. 2,1 D.3,2

20. 已知有声明语句“int a[5]={1,2,3,4,5},*p,i;”,以下语句中不能正确输出a数组全部元素值的是_____C______

A for(p=a,i=0;i<5;i++) printf("%d",*(p+i));

B for(p=a;p

C for(p=a,i=0;p

D for(p=a;p

4

21. 该程序运行后,输出x的值是__________y的值是_____D_____

int x=1;

main()

{ int y,k; y=f(3); printf("%d\n%d",x,y);}

int f(int x)

{ if(x==3) { int x=2; return x; }

else return x;

}

A. 0,1 B. 1,1 C. 2,1 D.1,2

22. 当程序读写数据文件时,需要有声明语句“FILE *fp;”,在该声明语句之前必须包含头文件 ______B______

A. string.h B. stdio.h C. math.h D.ctype.h

23. 在文件中,以符号常量EOF作为文本文件的结束标记,EOF代表的值是_____B____

A. -2 B. -1 C. 0 D.1

24. 若有声明“double a[2][3]={1,2,3,4,5,6};,则下列表达式中不能正确引用a[1][1]值的是__C___

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

25. 有以下程序段

typedef struct NODE

{ int num; struct NODE *next;} OLD;

则以下叙述中正确的是_____D____

A. 以上的说明形式非法 B. NODE是一个结构体类型

C. OLD是一个结构体类型 D. OLD是一个结构体变量

26. 当把以下四个表达式用作if语句的控制表达式时,有一个选项与其它三个选项含义不同,这个选项是_____D_____

A. k%2 B. k%2==1 C. (k%2)!=0 D. !k%2==1

27. 若有定义:int x=0, *p=&x;,则语句printf("%d\n",*p);的输出结果是

A. 随机值 B. 0 C. x的地址 D. p的地址

28. 以下能正确定义且赋初值的语句是___B______

A. int n1=n2=10; B. char c=32; C. float f=f+1.1; D. double x=12.3E2.5;

29. 设有定义:int k=1,m=2; float f=7;,则以下选项中错误的表达式是 C

A. k=k>=k B. -k++ C. k%int(f) D. k>=f>=m

30. 以下程序运行后的输出结果是:___B_____

A. 2 2 B. 7 2 C. 7 5 D. 6 2

main()

{ char a[7]= "a0\0a0\0"; int i, j;

i=sizeof(a); j=strlen(a);

printf("%d %d",i,j);}



5

二、 填空题(40分)(每空2分,请涂写在答题卡上)

1. 设有说明“int j=5,m=2,k=7,n;,则执行语句“n+=m*=n=j*k;”后,nm的值分别为

___B___ ____C____

31. A. 75 B. 105 C. 120 D. 130

32. A. 30 B. 50 C. 70 D. 90

2. 以下程序运行时输出结果是____A___

#include < stdio.h >

main( )

{ char a = 256;

int d = a;

printf("%d",d+1);

}

33. A. 1 B. 257 C. 0 D. -1

3. 下列程序的程序输出的第一行是__A ,第二行__B ,第三行__B

#include

main()

{ int a=1,b=2,x1,x2,x3;

x1=add(a,b);x2=add(add(a,b),b);

x3=add(a,b);printf(“%d\n%d\n%d\n”,x1,x2,x3);

}

int add(int x,int y)

{ static int z=1;

z=x+y+z;return(z);}

34. A.4 B.5 C.6 D.7

35. A.14 B.16 C.18 D.20

36. A.17 B.19 C.21 D.23

4. 以下程序运行时输出结果的第一行是 C ,第二行是 D ,第三行是 C

int c=0;

void fl (int x, int *sum)

{ int y=0;

x++; y++; c=c+y;

*sum=(x+y)/c;

}

main( )

{ int ab= 100;

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

{ fl(a,&b); printf("%d %d %d \n",a,b,c);}

}

37. A.0 1 2 B.0 2 3 C.0 2 1 D.1 2 1

38. A.0 1 2 B.0 2 3 C.2 2 4 D.1 1 2

39. A. 1 2 3 B.2 4 3 C. 2 1 3 D.1 4 3

6

5. 以下程序运行时输出的两个数分别是 B C

main()

{ int x=1,y,k;

for(k=0;k<5;k++)

{ int x=1;

x++;

if(k==4) y=x;

}

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

}

40. A. 0 B. 1 C. 2 D. 3

41. A. 0 B. 1 C. 2 D. 3

6. 以下程序运行时输出第一个数是 B ,第二个数是 _C__ ,第三个数是 _D__

#include

main()

{ static int a[3][3]={0},i,j;

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

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

{ switch(abs(i-j))

{ case 0:if(i==0||i==2) a[i][j]+=3;

else a[i][j]++;break;

case 1:a[i][j]+=2;break;

case 2:a[i][j]+=3;

}

}

printf("%d,%d,%d",a[1][1],a[1][2],a[2][0]);

}

42. A. 0 B. 1 C. 2 D. 3

43. A. 0 B. 1 C. 2 D. 3

44. A. 0 B. 1 C. 2 D. 3

7. 下列程序输出的两个数分别是 D___ _B__

main()

{ static int x[3][3]={{1,2},{5,6},{7,8,9}},(*p)[3];

p=x;

printf(“%d\n”,(*(p+1))[1],p[0][0]);

}

45. A. 0 B. 2 C. 5 D. 6

46. A. 0 B. 1 C. 2 D. 3

7

8. 下列程序的程序输出结果为 C B D

void swap(int a,int b)

{ int t=0;

if(a>b)t=a;a=b;b=t;

}

main()

{ int x=15,y=12,z=20;

if(x>y)swap(x,y);

if(x>z)swap(x,z);

if(y>z)swap(y,z);

printf(“%d\t%d\t%d\n”,x,y,z);

}

47. A. 0 B. 12 C. 15 D. 20

48. A. 0 B. 12 C. 15 D. 20

49. A. 0 B. 12 C. 15 D. 20

9. 若有函数定义:

int f( )

{ int x =4, y=3, z=2;

return x, y, z;

}

则调用函数f后的返回值是 D

50. A. 432 B. 4 C. 3 D. 2

三、 完善程序题(30分,每空2分,请涂写在答题卡上)

1、 用递推法计算某一级数的近似值,直到n取一值使得:| x(2n+1)/n! |<1e-6为止。级数如下:x-x3/(3*1!)+x5/(5*2!)-x7/(7*3!)+….+x(2n+1)/((2n+1)*n!)+…..

#include

#include

float g(float x)

{ float t=x,sum=t,s=1;int n=0;

while( A >1e-6)

{ n++;

s=-s;

t=t* C ;

sum=sum+s*t/ B ;

}

return sum;

}

main( )

{ float x;

scanf(“%f”,&x);printf(“s=%f”,g(x));

}

51. A. fabs(t) B. fabs(n) C. sum D. n

8

52. A. x*x B. x*x/(n+1) C. x*x/n D. x*x/(2*n+1)

53. A. n*(2*n+1) B. (2*n+1) C. n*(2*n-1) D. n*2*(n+1)

2、输入一个不包含空格的字符串,判断输入的字符串是否为回文,是回文则输出“Right!,不是则输出“Wrong!”。回文是相对于中心左右对称的字符串。如:字符串“abcba”和“abddba”是回文,而字符串“abcAa”不是回文。

#include

int f(char *p)

{ char *p1,*p2;

p1=p2=p;

while(*p2++); B ;

while( C )

{ if( B ) return 0;

p1++; p2--;

}

return 1;

}

main()

{ char s[200];

printf(please input the string)scanf(%s,s);

if( __ D__ ) printf(Right!);

else printf(Wrong!);

}

54. A. p2=p2-2 B. p2=p2-1 C. p2=p2+1 D. p2=p2+2

55. A. p1>=p2 B. p1>p2 C. p1<=p2 D. p1

56. A. p1==p2 B. p1!=p2 C. p1>p2 D. p1

57. A. s[i]!=\0 B. s[i]==\0 C. f(s)==0 D. f(s)

3. 以下程序实现将a数组中后8个元素用递归的方法进行从大到小排序的功能。

void sort(int *x,int n);

main()

{ int a[12]={5,3,7,4,2,9,8,32,54,21,6,43},k;

sort( ___C___ ,8);

for(k=0;k<12;k++)printf("%d",a[k]);

}

void sort(int *x,int n)

{ int j,t;

if(n==1)return;

for(j= __A___ ;j

if( ___ A___ )

{ t=x[0];x[0]=x[j];x[j]=t;}

sort(x+1, A___ );

}

58. A. a B. a+1 C. a+4 D. a+8

59. A. 0 B. 1 C. 3 D. 7

9

60. A. x[0]>x[j] B. x[0]x[n] D. x[0]

61. A. n-1 B. n C. n+1 D. n+8

4.设链表上结点的数据结构定义如下:

struct node

{ int x;

struct node *next;};

假设已经建立了一个链表,h为链首指针。函数deladd的功能是:若链表上能找到结点的x值为value,则从链表上删除该结点(假定链表上的各个结点的值是不同的);否则构造一个新结点,其x值为value,并将新结点插入链尾。该函数要求返回新链表的首指针。

struct node *deladd(struct node *h,int value)

{ struct node *p1, *p2;

int flag=0;

p1=p2=h;

while(p1&&flag==0)

{ if(p1->x==value)

{ flag=1;

if(p1==h)

{ h= A ; free(p1);}

else

{ p2->next= A ; free(p1);}

else

{ p2=p1;p1= A ;}

}

if(flag==0)

{ p1=(struct node *)malloc(sizeof(struct node));

p1->x=value;p1->next=0;

if(h= =0)

h=p1;

else B ;

}

return h;

}

62. A. p1->next B. p2->next C. p1 D. p2

63. A. p1->next B. p2->next C. h D. p2

64. A. p1->next B. p2->next C. p2 D. NULL

65. A. p1->next=p1 B. p2->next=p1 C. p1->next= NULL D. p2->next= NULL

期末试卷(含答案)

相关推荐