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

C语言期末试卷

【HNCE网上考试系统 v9.6】 本套软件使用权属于:河南工业大学

考试课程:C程序设计 考试时间:100分钟 考场:未定义 考试日期:2004.08.05


--------------------------------------------------------------------------------


本卷共有3道大题:


一、单项选择题(40道小题,共45分)
1、下列关于函数的叙述正确的是( )。(1分)
A、每个函数都可以被其他的函数调用(包含main函数)。 B、每个函数都可以被单独编译。
C、每个函数都可以单独运行。 D、在一个函数内部可以定义另一个函数。

2、以下说法正确的是( )。(1分)
A、C程序是以函数为基本单位的,整个程序由函数组成 B、C语言程序的一条语句可以写在不同的行上
C、C程序的注释行对程序运行不起作用,所以注释应该尽可能少写 D、C程序的每个语句都以分号结束

3、已知m=48,ch='a',n=0;则表达式(m>=n&&ch<'b'&&!n)的值是()(1分)
A、0 B、1
C、真 D、非0

4、设有如下程序 # include<stdio.h> main() { char ch1='A',ch2='a'; printf("%c\n",(ch1,ch2)); } 则下列叙述正确的为( )。(1分)
A、程序的输出结果为大写字母A B、程序的输出结果为小写字母a
C、运行时产生错误信息 D、格式说明符的个数少于输出项的个数,编译出错

5、阅读下列各条叙述,其中正确的叙述是()(1分)
A、机器语言、汇编语言、高级语言程序都是计算机语言,但只有机器语言程序才是计算机可以直接执行的语言。 B、用汇编程序处理C语言的源程序,可以生成机器语言程序。
C、若 main 函数无返回值,定义main是可以缺省标识符void。 D、一条C语言程序如果太长,可以从任何一处插入回车符,将其分别写在若干行上。

6、C语言源程序名的后缀是( )。(1分)
A、.exe B、.c
C、.obj D、.cp

7、设有说明语句:char w;int x;float y;double z;w*x+z-y值的数据类型为( )。(1分)
A、float B、char
C、int D、double

8、执行printf("%x",100);后的输出结果是()(1分)
A、100 B、0x100
C、0X64 D、64

9、能正确表示逻辑关系“a>=5或a<=0”的C语言表达式是( )。(1分)
A、a>=5 or a<=0 B、a>=0 || a<=5
C、a>=5 && a<=0 D、a>=5 || a<=0

10、以下不正确的语句为( )。(1分)
A、if(x>y); B、if(x>y){x++;y++;}
C、if(x=y)&&(x!=0)x+=y; D、if(x!=y) scanf("%d",&x); else scanf("%d",&y);

11、要求当A的值为奇数时,表达式的值为“假”,A的值为偶数时,表达式的值为“真”。则以下能满足要求的是( )。(1分)
A、A%2

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

12、若变量已正确定义,以下程序段的输出结果是() x=5.16894 printf("%f\n",(int)(x*1000+0.5)/(float)1000);(1分)
A、输出格
式说明与输出项不匹配,输出无定值。 B、5.17000
C、5.168000 D、5.169000

13、当用户要求输入的字符串中含有空格时,应使用的输入函数是()。(1分)
A、scanf() B、getchar()
C、gets() D、getc()

14、C语言中,下列哪种说法正确( )。(1分)
A、不能使用do-while语句构成的循环 B、do-while语句构成的循环必须用break语句才能退出
C、do-while语句构成的循环,当while语句中的表达式值为非零时结束循环 D、do-while语句构成的循环,当while语句中的表达式值为零时结束循环

15、下面的for语句 。 for(x=0,y=0; (y !=123)&&(x<4); x++) ;(1分)
A、是无限循环 B、循环次数不定
C、循环执行4次 D、循环执行3次

16、定义int i=1; 执行语句"while (i++<5);"后,i的值为(1分)
A、3 B、4
C、5 D、6

17、main( ) {int n=4; while(n)printf("%d ",--n); } 以上程序的输出结果是( )。(1分)
A、2 0 B、3 1
C、3 2 1 0 D、2 1 0

18、在下列给出的表达式中,与while(E)中的(E)不等价的表达式是()。(1分)
A、(!E==0) B、(E>0||E<0)
C、(E==0) D、(E!=0)

19、有下列程序: #include <string.h> main() { char p[]={'a','b','c'},q[10]={'a','b','c'}; printf("%d%d\n",strlen(p),strlen(q)); } 下列叙述中正确的是()。(1分)
A、在给p和q数组赋初值时,系统会自动添加字符串结束符,故输出的长度都为3 B、由于p数组中没有字符串结束符,长度不能确定,但q数组中字符串长度为3
C、由于q数组中没有字符串结束符,长度不能确定,但p数组中字符串长度为3 D、由于p和q数组中都没有字符串结束符,故长度都不能确定

20、当有定义语句:char s[10];,若要从终端给s输入5个字符,错误的输入语句是()。(1分)
A、gets(&s[0]); B、scanf("%s",s+1);
C、gets(s); D、scanf("%s",s[1]);

21、以下错误的定义语句是( )。(1分)
A、int x[][3]={{0},{1},{1,2,3}}; B、int x[4][3]={{1,2,3},{1,2,3},{1,2,3}};
C、int x[4][]={{1,2,3},{1,2,3},{1,2,3}}; D、int x[][3]={1,2,3,4};

22、以下不正确的定义语句是( )。(1分)
A、double x[5]={1.0,2.0,3.0,4.0,5.0}; B、int y[5]={0,1,2,3,4,5}};
C、char c[]={'1','2','3','4','5'}; D、char c2[]={'a','b','c'};

23、数组名作为实参传递给形参时,数组名被处理为( )。(1分)
A、该数组的长度 B、该数组的元素个数
C

、该数组的首地址 D、该数组中各元素的值

24、凡在函数中未指定存储类别的变量,其隐含的存储类别为(1分)
A、自动(auto) B、静态(static)
C、外部(extern) D、寄存器(register)

25、以下叙述正确的是(1分)
A、在C程序中,main函数必须位于程序的最前面。 B、C程序的每一行只能定一条语句。
C、C语言本身没有输入输
出语句。 D、在对一个C程序进行编译的过程中,可发现注释中的拼写错误。

26、关于return语句,下列说法正确的是( )。(1分)
A、在主函数和其他函数中均可出现 B、必须在每个函数中出现
C、可以在同一个函数中出现多次 D、只能在除主函数之外的函数中再出现一次

27、下述函数定义形式正确的是()(1分)
A、int f(int x;int y) B、int f(int x, y)
C、int f(int x,int y) D、int f(x,y:y)

28、若有以下定义,则正确引用数组元素的是( )。 int a[5],*p=a;(1分)
A、*&a[5] B、*a+2
C、*(p+5) D、*(a+2)

29、以下有关宏的不正确的是( )。(1分)
A、宏名无类型 B、宏定义不做语法检查
C、宏名必须用大写字母表示 D、双引号中出现的宏名不进行替换

30、变量的指针,其含义是指该变量的( )。(1分)
A、地址 B、值
C、名字 D、标识

31、以下叙述中不正确的是()。(1分)
A、预处理命令行都必须以“#”号开始,结尾不加分号 B、在程序中凡是以“#”开始的语句行都是预处理命令行
C、C程序在执行过程中对预处理命令进行处理 D、预处理命令可以放在程序的任何位置

32、以下叙述错误的是()。(1分)
A、在程序中凡是以“#”开始的语句行都是预处理命令行 B、预处理命令行的最后不能以分号表示结束
C、#define MAX是合法的宏定义命令行 D、C程序对预处理命令行的处理是在程序执行的过程中进行的

33、当以下叙述中错误的是()。(1分)
A、gets函数用于从终端读入字符串 B、getchar函数用于从磁盘文件读入字符
C、fputs函数用于把字符串输出到文件 D、fwrite函数用于以二进制形式输出数据到文件

34、下列哪个是字符串读函数( )。(1分)
A、fgetc B、fputc
C、fgets D、fwrite

35、如果要打开C盘file文件夹下的abc.dat文件,fopen函数中第一个参数应为()(1分)
A、c:file\abc.dat B、c:\file\abc.dat
C、"c:\file\abc.dat" D、"c:\\file\\abc.dat"

36、程序 #include <stdio.h> #define M 5 #define N M+M main() { int k; k=N*N*5; printf("%d\n",k); } 的输出结果是()。(2分)
A、100 B、50
C、55 D、45

37、下列程序的运行结果是()。 main() {int a=1,b; for(b=1;b<=10;b++) {if(a>=8) br

eak; if(a%2==1) {a+=5;continue;} a=3; } printf("%d\n",b);}(2分)
A、3 B、4
C、5 D、6

38、有以下程序: int fl(double a) {return a*a;} int f2(int x,int y) { double a,b; a=f1(x); b=f1(y); return a+b; } main() { double w; w=f2(2.1,4.0); ... } 变量w的值是()。(2分)
A、20.21 B、20
C、20.0 D、0.0

39、下列程序运行后的输出结果是()。 main() {int a=4,b=3,c=2,d=1; printf("%d",a<b?a:d<c?d:b); }(2分)
A、1 B、3
C、2 D、4

40、当a=1,b=2,c=3,d
=4时,执行下面程序段后,x的值是()。 if(a<b) if(c<d) x=1; else* if(a<c) if(b<d) x=2; else x=3; else x=6; else x=7;(2分)
A、1 B、2
C、3 D、6



二、填空题(11道小题,共20分)
1、C语言源程序连接后生成文件的后缀是。

(1分)


--------------------------------------------------------------------------------

2、一个int型数据在内存中所占的字节数为.

(1分)


--------------------------------------------------------------------------------

3、复合语句在语法上被认为是。


(1分)


--------------------------------------------------------------------------------

4、在C语言中,表示逻辑"真"值使用整型值

(1分)


--------------------------------------------------------------------------------

5、若有定义:int a[3][4]={{1,2},{0},{4,6,8,10}}; 则初始化后,a[1][2]的值为。


(1分)


--------------------------------------------------------------------------------

6、若有定义:double a[5], 则a数组的长度为。


(1分)


--------------------------------------------------------------------------------

7、假定在同一个编译单位中,函数a()调用了函数b(),则对函数b()不需要说明的情况有下列两种:b()函数的定义地点在a()函数定义地点之前和。

(1分)


--------------------------------------------------------------------------------

8、下面程序段的运行结果是。
char str[]="ABCD",*p=str;


(1分)


--------------------------------------------------------------------------------

9、下面pi函数的功能是,根据以下公式返回满足精度ε要求的∏的值。请填空。∏/2=1+1/3+(1/3)*(2/5)+(1/3)*(2/5)*(3/7)+(1/3)*(2/5)*(3/7)*(4/9)+...
double pi(double eps)
{double s=0.0,t=1.0;
int n;
for(;t>eps;n++)
{
s+=t;
t=n*t/(2*n+1);
}
return (2.0*);
}


(4分)


--------------------------------------------------------------------------------

10、下列程序用于判断a、b、c能否构成三角形,若能输出YES,否则输出NO。请填空。
main()
{float a,b,c;
scanf("&f&f&f",&a,&b,&c);
if() printf("YES\n");
else printf(&

quot;NO\n");
}


(4分)


--------------------------------------------------------------------------------

11、从键盘输入一个字符,并将其输出,完成填空。
main()
{char c;
c=;
putchar;
}


(4分)


--------------------------------------------------------------------------------



三、编程题(3道小题,共35分)
1、有三个整数a,b,c,由键盘输入,输出其中最小者。

(10分)
(本题不要求填写运行结果)
请将你解答本题所写的源程序粘贴到下面或者上载源程序
#include<stdio.h>
int main()
{int a,b,c;
scanf("%d,%d,%d",&a
,&b,&c);
if(a>b)
if(c>b)
printf("min=%d\n",b);
else printf("min=%d\n",c);
else if (a>c)
if(b>c)printf("min=%d\n",c);
else printf("min=%d\n",b);



--------------------------------------------------------------------------------

2、输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。

(10分)
(本题不要求填写运行结果)
请将你解答本题所写的源程序粘贴到下面或者上载源程序




--------------------------------------------------------------------------------

3、编写程序,将两个字符串连接起来,不要使用strcat函数。

(15分)
(本题不要求填写运行结果)
请将你解答本题所写的源程序粘贴到下面或者上载源程序




--------------------------------------------------------------------------------








--------------------------------------------------------------------------------

强烈建议您使用IE5.0以上,屏幕分辨率800X600以上,真彩,小字体浏览




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