文档库 最新最全的文档下载
当前位置:文档库 › C语言期末考试试卷及答案2

C语言期末考试试卷及答案2

一、单项选择题 (本大题共20小题,每小题1分,共20分)

1. C语言程序由什么组成? ()

A. 子程序

B. 主程序和子程序

C. 函数

D. 过程

2.以下属于C语言中的简单数据类型的是( )

A. int、float、long

B. int、float、char、boolean

C. char、byte、double

D. int、boolean、long

3.以下那一个不是C语言合法的关键字()

A. switch

B. cher

C. int

D. double

4.设ch是char型变量,其值为’A’,则下面表达式的值是

ch=(ch>=’A’&&ch<=’Z’)?(ch+32):ch

A. A

B. a

C. Z

D. z

5. 若执行printf("%d\n", strlen("a\n\"\x41"))语句其输出结果是( )

A 8

B 7

C 6

D 4

6. 若int a, b, c; 则表达式(a=2, b=5, b++, a+b)的值是( )

A. 7

B. 8

C. 6

D. 2

7. 以下运算符中优先级最高的为( )

A. &&

B. +

C. *

D. =

8.数组名作为实参传递给形参时,数组名被处理为()

A 该数组的长度

B 该数组的元素个数

C 该数组的首地址

D 该数组中各元素的值

9. 表达式0x13^0x17的值是

A. 0x04

B. 0x13

C. 0xE8

D. 0x17

10.执行下列程序

#include “stdio.h”

main()

{ printf(“%d\n”,NULL) ;}

后输出的结果是()

A. –1

B. 0

C. 1

D. 2

11. 若有定义typedef char STRING[255]; STRING s; 则s是( )

A 字符指针数组变量 B字符指针变量

C 字符变量

D 字符数组变量

12. 判断char型变量c1是否小写字母的正确表达式为( )

A 'a'<=c1<='z'

B (c1>='a')&&(c1<='z')

C (c1>=a)&&(c1<=z)

D ('a'<=c1)||('z'>=c1)

13. 设E为表达式,以下与do…while(E);不等价的语句是( )

A do…while(!E==0);

B do…while(E>0||E<0);

C do…while(E==0);

D do…while(E!=0);

14.以下程序计算园的面积,程序编译时出错,出错的原因是()

main()

/* Beginning */

{

int r; float s;

acanf(“%d”,&r);

s=3.14*r*r;

printf(“s=%f\n”,s);

}

A. 注释语句书写位置错误

B. 存放圆半径的变量r不应该定义为整型

C. 输出语句格式描述符非法

D.函数名书写错误

15.设char c[5]={‘a’,’b’,’\0’,’c’,’\0’};则printf(“%s”,c);的输出是()

A. ‘a’‘b’

B. ab

C. abc

D. “ab\0c”

16. 全局变量的存储类型可以定义为

A. auto 或 static

B. extern 或 register

C. auto 或 extern

D. extern 或 static

17. 以下对C语言函数的有关描述中,正确的是()

A 调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参

B C函数既可以嵌套定义又可以递归调用

C 函数必须有返回值,否则不能使用函数

D C程序中有调用关系的所有函数必须放在同一个源程序文件中

18. 用来将两个字符串合并为一个字符串的函数是()

A strcmp()

B strcpy()

C strlen()

D strcat()

19.若fp已正确定义并指向某个文件,当未遇到该文件结束标志时,函数feof(fp)值( )

A 0

B 1

C -1

D 一个非0值

20.标准库函数fputs(p1,p2)的功能是

A. 从p1指向的文件中读一个字符串存入p2指向的内存

B. 从p2指向的文件中读一个字符串存入p1指向的内存

C. 从p1指向的内存中读一个字符串存入p2指向的文件

D. 从p2指向的内存中读一个字符串存入p1指向的文件

二、填空题 (本大题共10小题,每小题2分,共20分)

1.“n是大于整数m的偶数”的C语言表达式____________________________

2.在C语言中,标准输出设备、标准输入设备对应的文件指针分别是_______和_______ 3.当a=3,b=4,c=5时,写出下列各式的值a!=c的值为________________, a+b>c&&b==c的值为______________________。

4.静态型局部变量的作用域是______________________________________

5.下列函数要求计算两个整数x、y之和,并通过形参z传回该和值,请填空:

void add(int x,int y, __________z)

{__________=x+y;return;}

6.在C语言中,求平方根的函数是_____________________,求正弦函数是_______________ 7.假设有如下结构体类型说明:

struct test{

int a;

int b;

};

用一条语句定义上述结构体类型变量x和y的正确形式为___________________

将x的成员a和b分别赋值为3和5的正确形式为_______________;将x的成员a和b之和赋给y的成员a的正确形式为______________________.

8. 定义枚举类型的关键字为_________________________.

9.在c语言中,利用fopen以只读的方式打开当前目录下的 a.txt文件的正确形式为____________________;利用fopen以只写的方式打开d盘根目录下的a.txt文件的正确形式为________________________________。

10.定义计算园面积的宏(r为半径) #define S(r) ___________________________

三、程序分析题 (本大题共5小题,每小题5分,共25分)

1、若运行时输入:16<回车>,则以下程序的运行结果是__________________。

#include

main()

{ int age;

printf(“Input your age : “);

scanf(“%d”, &age);

if (age>=18)

printf(“your $4.5yuan/hour”);

else

printf(“Your $3.0yuan/hour”);

}

2. 写出下列程序的输出结果_________________________

main()

{

int x=100,a=10,b=20,ok1=5,ok2=0;

if(a

else if(ok2) x=10;

else x=-1;

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

}

3. 写出下列程序的运行结果____________________________________________

#define PR(ar) printf(“%d ,” , ar)

main()

{

int j,a[]={2,4,6,8,10,12,14,16},*p=a+5;

for(j=3; j ; j--)

switch(j)

{

case 1:

case 2: PR(*p++);break;

case 3:PR(*(--p));

}

}

4.以下程序的执行结果是________________________________________ #include

main( )

{

char str[]={“1a2b3c”};

int i;

for (i=0; str[i]!=’\0’; i++)

if (str[i]>=’0’ && str[i]<=’9’)

printf(“%c”, str[i]);

printf(“\n”);

}

5.以下程序的执行结果是_______________________________________ struct st {

int x;

int *y;

} *p;

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

struct st a[]={1, &s[0], 2, &s[1], 3, &s[2], 4, &s[3]};

main( )

{

p=a;

printf("%d,", p->x);

printf("%d,",(++p)->x);

printf("%d,", *(++p)->y);

printf("%d\n", ++(*(++p)->y));

}

四、程序填充题 (本大题共5小题,每小题4分。共20分)

1.以下程序从键盘输入一个整数,判断其是否为偶数,请填空。

main()

{ __________________;

scanf(“%d”,&x);

if(______________) printf(“偶数!”);

______________ printf(“奇数!”);

}

2.以下程序从键盘输入10个数,输出总和及平均数,请填空。

main()

{ int k;

_____________________

for(k=1,sum=0;k<=10;k++)

{

scanf(“%f”,&f);

________________

}

printf(“sum=%f, \t average=%f\n”,sum,sum/10);

}

3. 以下函数用选择法对一个整数数组进行排序,请填空:

sort(int x[],int n)

{

int h,j,k,t;

for(h=0;____________;h++)

{

k=h;

for(j=h+1;j

if(x[j]>x[k]) ___________________;

if(k!=h)

{ t=x[h];x[h]=x[k];x[k]=t;}

}

}

4.以下程序用数组求Fibonacci数列的前20项,每5个一行输出,请填空:#include

main()

{int I;

int f[20]={________________}; /*填空*/

for(I=2;I<20;I++) f[I]=f[I-2]+f[I-1];

for(I=0;I<20;I++)

{

if(I%5==0) printf(______________);/*填空*/

printf(“%12d”,f[I]);

}

}

5. 下列程序的功能是将一个结构体数组写入一个文件中保存起来,请填空: #include

struct Test {

char a[20] ;

} ;

main(){

________________________;

struct Test x[3]= { {“test1”},{“test2”},{“test3”}};

int i;

fp = fopen (“d:\\cwz\\abc.bat”, ”wb”) ;

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

________________________;

_________________________;

}

五、程序设计题 (本大题共2小题,第一题7分,第二题8分,共15分)

1. 设计一个显示文本文件内容的程序,文件名随程序执行时输入。

2.编写程序,根据输入的三个边长a、b、c,判断它们是否构成三角形,若能构成三角形,继续判断该三角形是等边、等腰还是一般三角形,并求出此三角形的面积和周长。

参考答案:

一、单项选择题

1.C

2.A

3.B

4.B

5.D

6.B

7.C

8.C

9.A 10.B

11.D 12.B 13.C 14.D 15.B

16.C 17.A 18.D 19.A 20.C

二、填空题

1. (n>m)&&(n%2==0)

2. stdin stdout

3. 1 0

4. 定义它的函数范围内有效

5. int * *z

6. sqrt() sin()

7. struct test x,y x.a=3;x.b=5 y.a=x.a+x.b

8. enum

9. fopen(“a.txt”, “r”) fopen(“a.txt”, “w”)

10. 3.14*(r)*(r)

三、程序分析题

1. Your $3.0yuan/hour

2. -1

3. 10,10,12,

4. 123

5.1,2,3,5

四、程序填充题

1. int x;

x%2==0

else

2.float f,sum;

sum=sum+f;

3.h

k=j

4.0,1

“\n”

5.FILE *fp;

fwrite(&x[i],sizeof(struct test),1,fp);

fclose(fp)

五、程序设计题

1.#include

main()

{FILE *fp;

char name[20];

printf(“input filename”);

scanf(“%s”, name);

if((fp=fopen(name,”r”))==NULL)

{printf(“cannot open file\n”);

exit(0);

}

while (!feof(fp))

putc(fgetc(fp));

fclose(fp);

}

2.#include "stdio.h"

#include "math.h"

main()

{ float a,b,c,cir,area;

scanf("%f%f%f",&a,&b,&c);

if ((a+b>c)&&(b+c>a)&&(a+c>b))

{if (fabs(a-b)<1e-6&&fabs(b-c)<1e-6&&fabs(a-c)<1e-6)

printf("it's a dengbian triangle");

else if (fabs(a-b)<1e-6||fabs(b-c)<1e-6||fabs(a-c)<1e-6)

printf("it's a dengyao triangle");

else printf("it's a normal triangle");

cir=(a+b+c)/2;

area=sqrt(cir*(cir-a)*(cir-b)*(cir-c));

printf("\ncircle=%.2f area=%.2f\n",cir*2,area);

}

else printf(" it's not a triangle");

getch();

}

相关文档