河北科技大学往年C语言期末题库

本试卷为河北科技大学往年C语言期末题库,题目包括:单项选择题,判断题,编程题。

覆盖的内容包括:理论题,基础知识,控制结构,循环结构,指针,数组/指针数组,字符串/字符串指针,函数/函数指针,程序题,结构体,文件。

C语言期末题库

一、单项选择题 (共20题,每题2分,共计40分)

(  C  )
1、有以下程序:
main()
{
int x=102,y=012;
printf("%2d,%2d\n",x,y);
}
执行后输出结果是________。
A、10,01
B、02,12
C、102,10
D、02,10
(  C  )
2、下面标识符中正确的是________。
A、d&ef
B、6a
C、z4x5c
D、a3/b4
(  A  )
3、下列字符串是标识符的是________。
A、aa
B、a-class
C、int
D、LINE 1
(  D  )
4、若有如下定义语句: int a[10]= { 1,2,3,4,5,6,7,8,9,10 } ; 则对数组正确的引用是________。
A、a[10]
B、a[a[3]5]
C、a[a[9]]
D、a[a[4]+4]
(  B  )
5、将十进制数0.625转换成二进制数是________。
A、0.111
B、0.101
C、0.5
D、0.A
(  B  )
6、若输入字符串:abcde<回车>,则以下while循环体将执行多少次。 while((ch=getchar())!='e') printf("*");
A、5
B、4
C、6
D、1
(  C  )
7、下列叙述中,正确的是________。
A、while语句构成的循环不能用其他语句构成的循环来代替
B、do-while语句构成的循环只能用break语句退出
C、用while语句构成的循环,只有在while后的表达式为非0时才执行循环
D、do-while语句构成的循环,只有在while后的表达式为0时才结束循环
(  B  )
8、在一个应用程序中有如下定义:int a[]= {1,2,3,4,5,6,7,8,9,10 },为了打印输出数组a的最后一个元素,下面正确的代码是________。
A、printf("%d",a[10];)
B、printf("%d",a[9]);
C、printf("%d",a[a.length]);
D、printf("%d",a[8]);
(  A  )
9、设int a=4,b; 则执行b=a<<1; 语句后,b的结果是________。
A、8
B、2
C、16
D、10
(  C  )
10、在下列选项中,没有构成死循环的程序是________。
A、int i=100;
while(i) {
i=i%100+1;
if(i>100) break;
}
B、for(;;);
C、int k=1000;
do
++k ;
while(k>=1000);
D、int s=36;
while(s);
--s;
(  B  )
11、下列赋值语句错误的是________。
A、A
B、i==0;
C、i=i+1:
D、i+=1:
(  A  )
12、假设px和py分别表示x和y商品的价格,当边际替代率mrsxy>px/py,消费者为达到最大效用,他将会________。
A、增加X商品的购买,减少Y商品的购买
B、减少X商品的购买,增加Y商品的购买
C、同时增加或者减少X和Y商品的购买
D、对X和Y商品的购买数量不发生改变
(  B  )
13、有以下程序
#include<stdio.h>
int fun(int a,int b) {
if(b=0)return a;
else return(fun(--a,--b));
}
main() {
printf("%d\n",fun(4,2));
}
程序的运行结果是________。
A、1
B、2
C、3
D、4
(  A  )
14、有以下程序
struct s
{
int n;
int a[20];
};
void f(int *a,int n)
{
int i;
for(i=0;i<n-1;i++)a[i]+=i;
}
main()
{
int i;
struct s s={10,{ 2,3,1,6,8,7,5,4,10,9}};
f(s.a,s.n);
for(i=0; i<s.n; i++)printf("%d,",s.a[i]);
}
程序运行后的输出结果是________。
A、2,4,3,9,12,12,11,11,18,9,
B、3,4,2,7,9,8,6,5,11,10,
C、2,3,1,6,8,7,5,4,10,9,
D、1,2,3,6,8,7,5,4,10,9,
(  A  )
15、下列合法的字符型常量是________。
A、'\x13'
B、'\081'
C、'65'
D、"\n\
(  D  )
16、有如下定义: struct student
{
char name[10];
int age;
char gender;
}
std[3], *p=std;
则以下各输入语句中错误的是________。
A、scanf("%d",&(*p).age);
B、scanf("%c",&std[0].gender);
C、scanf("%c",&(p->gender));
D、scanf("%s",&std.name);
(  C  )
17、设有数据定义语句"int a[200]; ",下列数组元素引用中下标不越界的是________。
A、a[-1]
B、a[201]
C、a[0]
D、a[200]
(  B  )
18、运行下面程序时,若从键盘输入5后回车,则程序的输出结果是________。
A、7
B、6
C、5
D、4
(  B  )
19、能正确表示a≥10或a≤0的关系表达式是________。
A、a>=10 or a<=0
B、a>=10 || a<=0
C、a>=10 | a<=0
D、a>=10 && a<=0
(  D  )
20、设已定义整型变量k,则下面的程序输出为________。k=017 ;
s=111;
printf ( ''%d'', ++k);
printf ( ''%x\n'' ,s++);
A、15 6f
B、16 70
C、15 71
D、16 6f

二、判断题 (共10题,每题2分,共计20分)

(   F  )
1、c语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是地址传递。( ) 
(   F  )
2、当#include后面的文件名用双引号""括起,仅搜索当前目录。 
(   T  )
3、一个函数中可以有多个return语句,当执行到某个return语句时,程序的控制流程返回到调用该函数的地方,并将return语句中表达式的值作为函数值带回。 
(   T  )
4、在 c 程序中,9ab是非法的用户标识符。 
(   T  )
5、while语句和do - while语句的一般形式分别如下,其主要区别是:while 语句先判断循环条件,只有条件满足才进入循环,如果一开始条件就不满足,则循环一次都不执行。而do - while语句先执行循环体,后判断循环条件,所以无论循环条件的值如何,至少会执行一次循环体。 
(   F  )
6、字符常量用于表示一个字符,一个字符常量要用一对英文半角格式的双引号("")引起来。() 
(   F  )
7、switch语句的各个case和default的出现次序不影响执行结果 
(   T  )
8、用指针变量可以指向一维数组,也可以指向多维数组。 
(   T  )
9、用字符串常量给数组赋初值时,如果提供的字符个数小于数组的长度,则在最后一个字符后加'\0'作为字符串结束标志。 
(   T  )
10、函数strcmp从头至尾顺序地将其对应字符比较,遇到两个字符不等时,两个字符相减得到一个int型值,两个字符串完全相同时,则返回0。 

三、编程题 (共3题,每题0分,共计40分)

1、编写一个函数,从传人的m个字符中找出最长的一个字符串,并通过形参指针max传回该串地址(用****作为结束输入的标志)。 注意:部分源程序给出如下。 请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填人所编写的若干语句。 试题程序:
char*proc(char(*a)[81],int num)
{
}
void main()
{
char ss[l0][81],*max;
int n,i=0;
printf("输入若干个字符串:");
gets(ss[i]);
puts(ss[i]);
while(!strcmp(ss[i],"****")==0)
{
i++;
gets(ssei]);
puts(ss[i]);
}
n=i;
max=proe(ss,n);
printf("\nmax=%s\n",max);
}
2、编写input()和output()函数,输入输出5个学生记录,每个记录包括num、name、score[3],使用结构体实现。
3、从键盘输入一个十进制整型数据,计算并输出其各位上数字之和(忽略正负号)。例如,输入1234,输出10;输入-1234,输出10。