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

C语言期末试卷

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

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



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


本卷共有3道大题:


一、单项选择题(40道小题,共45分)
1、下面正确的字符串常量是()(1分)
A、'a' B、'376'
C、"\\n" D、376

2、能正确表示“当x的取值范围在[1,10]和[100,110]范围内为真,否则为假”的表达式是( )。(1分)
A、(x>=1)&&(x<=10)&&(x>=100)&&(x<=110) B、(x>=1)||(x<=10)||(x>=100)||(x<=110)
C、(x>=1)&&(x<=10)||(x>=100)&&(x<=110) D、(x>=1)||(x<=10)&&(x>=100)||(x<=110)

3、设a、b和c都是int型变量,且a=3,b=4,c=5;则以下的表达式中,值为0的表达式是()。(1分)
A、a&&b B、a<=b
C、a||b+c&&b-c D、!(a
4、设int类型的数据长度为2个字节,则unsigned int类型数据的取值范围是( )。(1分)
A、0~255 B、0~65535
C、-32768~32767 D、-256~255

5、下面说法正确的是( )。(1分)
A、一个C程序可以有多个函数 B、一个C语言的函数中只允许有一对花括号
C、C语言一个语句可以写在一行内,也可以写在多行内 D、在对C程序进行编译时,可以发现注释行中的拼写错误

6、下列定义变量的语句中错误的是( )。(1分)
A、int _int; B、double int_;
C、char for; D、float us$;

7、按照C语言规定的用户标示符命名规则,不能出现在标示符中的是( )。(1分)
A、大写字母 B、连字符
C、数字字符 D、下划线

8、若变量已正确定义,要求通过scanf("%c%d%c%d",&c1,&a,&c2,&b)语句给变量a和b赋数值32和45,给变量c1和c2赋字符A和B;以下选项中数据从第1列开始输入,正确的输入形式是( )。(1分)
A、A32<回车>B45<回车> B、A45<回车>B32<回车>
C、A32B45<回车> D、A 32 B 45<回车>

9、已定义变量a为整型,则不能正确表示9A、!(9C、a>9&&a<14 D、!(a<=9)&&!(a>=14)

10、若有以下定义和语句: int u=011,v=0x11,w=11; printf("%o,%x,%d\n",u,v,w); 则输出结果是( )。(1分)
A、9,17,11 B、9,11,11
C、11,11,11 D、11,17,11

11、设变量已正确定义并赋值,以下正确的表达式是( )。(1分)
A、x=y*5=x+z B、int(15.8%3)
C、x=y+z+3,++y D、x=25%5.0

12、设有定义:int k=1;float f=7;则下列选项中错误的表达式是( )。(1分)
A、k=k>=k B、-k++
C、k%int(f) D、k>=f>=m

13、表达式3.6-5/2+1.2+5%2的值是( )。(1分)
A、4.3 B、4.8
C、3.3 D、3.8

14、下列关于逻辑运算符两侧运算对象的叙述中正确的是()。(1分)
A、只能是整数0或1 B、只能是整数0或

非0
C、可以是结构体类型的数据 D、可以是任意合法的表达式

15、设变量x和y均已正确定义并赋值。下列if语句中,在编译时将产生错误信息的是()。(1分)
A、if(x++) ; B、if(x>y&&y!=0)
C、if (x>0) x-- else y++ D、if (y<0){;} else x++;

16、若变量已正确定义,以下表达式错误的是()。(1分)
A、a/b+c B、a%(5.0)
C、a=1/3*(x=y=10,x*2) D、a=b=c

17、while和 do while循环的主要区别是()。(1分)
A、do while循环的循环体不能是复合语句 B、do while循环允许从循环体外转到循环体内
C、while循环的循环体至少被执行一次 D、do while循环的循环体至少被执行一次

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

19、若要求定义具有10个int型元素的一维数组a,则下列定义语句中错误的是( )。(1分)
A、#define N 10 int a[N] B、#define n 5 int a[2*n]
C、int a[5+5] D、int n=10,a[n]

20、若有说明:int a[3][4]={0};则下面正确的叙述是(1分)
A、只有数组元素a[0][0]可得到初值0 B、此说明语句不正确
C、数组a中各元素都可得到初值,但其值不一定为0 D、数组a中每个元素均可得到初值0

21、以下对一维整型数组 a 的正确说明是( )。(1分)
A、int a(10) ; B、int n=10,a[n];
C、int n; D、#define SIZE 10 int a[SIZE];

22、有两个字符数组a、b,则以下正确的输入语句是(1分)
A、gets(a,b); B、scanf("%s%s",a,b);
C、scanf("%s%s",&a,&b); D、gets("a"); gets("b");

23、有下列程序: #include 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数组中都没有字符串结束符,故长度都不能确定

24、下述函数定义形式正确的是()(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)

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

26、以下叙述中,错误的是()。(1分)
A、在同一个C程序文件中,不同函数中可以使用名字相同的变量 B、在main()函数体内定义的变量是全局变量
C、形参是局部变量,函数调用完成即失去意义 D、若同一文件中全局和局部变量同名,则全局变量在局部变量作用范围内不起作用

27、在一个C源程序文件

中所定义的全局变量,其作用域为()。(1分)
A、所在文件的全部范围 B、所在程序的全部范围
C、所在函数的全部范围 D、由具体定义位置和extern说明来决定范围

28、若已有定义int x;下列说明指针变量p指向x的正确语句是( )。(1分)
A、int p=&x; B、int *p=&x;
C、int p=x; D、int *p=x;

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

30、已知p,p1为指针变量,a为数组名,i为整型变量,下列赋值语句中不正确的是( )。(1分)
A、p=&i B、p=p1
C、p=&a[i] D、p=10

31、下列叙述中正确的是()。(1分)
A、预处理命令行必须位于C源程序的起始位置 B、在C语言中,预处理命令行都以#开头
C、每个C程序必须在开头包含预处理命令行:#include D、C语言的预处理不能实现宏定义和条件编译的功能

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

33、如果要打开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"

34、设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp)的返回值为()。(1分)
A、EOF B、非0值
C、0 D、NULL

35、fgetc函数的作用是从指定文件读入一个字符,该文件的打开方式必须是( )。(1分)
A、只写 B、追加
C、读或读写 D、答案B和C都正确

36、若变量已正确定义,有以下程序段: int a=3,b=5,c=7; if(a>b) a=b;c=a; if(c!=a) c=b; printf("%d,%d,%d\n",a,b,c); 其输出结果是()。(2分)
A、程序段有语法错误 B、3,5,3
C、3,5,5 D、3,5,7

37、有下列程序: main() {int i,j,m=55; for(i=1;i<=3;i++) for(j=3;j<=i;j++) m=m%j; printf("%d\n",m); 程序的运行结果是()。(2分)
A、0 B、1
C、2 D、3

38、#include “stdio.h” void main() { int sum=0,a=1; while(a<=10) {sum=sum+a; a++; } printf(“sum=%d\n”,sum); } 以上程序段的运行结果是( )。(2分)
A、sum=0 B、sum=55
C、sum=10 D、sum=11

39、以下程序段给数组所有元素输入数据,应在下划线处填入的是() main() { int a[10],i=0; while(i<10) scanf("%d",_______); : : }(2分)
A、a+(i++) B、&a(i+1)
C、a+i D、&a[++i]

40、定义以下结构体数组: struct st { char name[15]; int age; }a[10]={"ZHAO",14,"WANG",15,"LIU",16,"ZHANG",17}; 执行语句printf("%d,%c"a[2].age,*(a[3].name+2)))的输出结果为()。(2分)
A、15,A B

、16,H
C、16,A D、17,H



二、填空题(11道小题,共20分)
1、设有定义:float x=123.4567;,则执行下列语句后的输出结果是
printf("%f\n",(int)(x*100+0.5)/100.0);


(1分)


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

2、运算符%两侧运算量的数据类型必须都是.


(1分)


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

3、当a=1,b=2,c=3时,以下if语句执行后,a、b、c中的值分别为。
if(a>c)
b=a;a=c;c=b;


(1分)


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

4、下列程序的输出结果是。
main()
{int x,a=1,b=2,c=3,d=4;
x=(ax)?x:d;
printf("%d\n",x);
}


(1分)


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

5、C 语言中数组的下标总是从开始,不可以为负数。


(1分)


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

6、若有定义:int b[2][3], 则b数组中列下标的上限为。


(1分)


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

7、为了保证被调用函数不返回任何值,其函数定义的类型应为


(1分)


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

8、设int a[10],*p = a; 则对a[3]的引用可以是p[3]和*(p)

(1分)


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

9、下面程序将二维数组a的行和列互换后存放到一个二维数组b中,请填空。
main()
{int a[2][3]={{1,2,3},{4,5}},b[3][2],i,j;
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)

}
}


(4分)


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

10、下列程序的输出结果是
main()
{int a=-5,b=1,c=1;
int x=0,y=2,z=0;
if(c>0) x=x+y;
if (a<=0)
{ if(b>0)
if(c<=0) y=x-y;
}
else if (c>0) y=x-y;
else z=y;
printf("%d,&d,&d\n",x,y,z);
}


(4分)


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

11、下面程序段是从键盘输入的字符中统计数字字符的个数,用换行符'\n'结束循环,请填空.
int n=0,c;
c=getchar();
while()
{ if() n++;
c=getchar();
}


(4分)


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



三、编程题(3道小题,共35分)
1、编程求圆柱体积,圆柱表面积。要求圆半径,圆柱高由键盘输入,输出时要求有文字说明,取小数点后两位数字。

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




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

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

2、有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13......,求出这个数列前20项之和。

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




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

3、有一个3乘4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。

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




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






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



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

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



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