河南科技学院计算机C语言测试卷

本试卷为河南科技学院计算机C语言测试卷,题目包括:单项选择题,判断题,编程题。

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

计算机C语言测试卷

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

(  D  )
1、合法的c语言赋值语句是________。
A、a=b=58
B、k=int(a+b);
C、a=58,b=58
D、--i;
(  C  )
2、若ch为char型变量,k为int型变量(已知字符a的ascil码是97),则执行下列语句后输出的结果为( )。
ch='b'; k=10;
printf("%x,%0,",ch,ch,k);
printf("k=%%d\n",k);
A、因变量类型与格式描述符的类型不匹配,输出无定值
B、输出项与格式描述符个数不符,输出为0或不定值
C、62,142,k=%d
D、62,142,k=%10
(  D  )
3、下列选项中不会引起二义性的宏定义是________。
A、#define S(x)X*x
B、#define S(x) (x)*(x)
C、#define S(x) (x*x)
D、#define S(x) ((x)*(x))
(  C  )
4、当c的值不为0时,在下列选项中不能正确将c的值赋给变量a、b的是________。
A、c=b=a;
B、(a=c)||(b=c);
C、(a=c)&&(b=c);
D、a=c=b;
(  A  )
5、下列字符串是标识符的是: 。
A、_HJ
B、9_student
C、long
D、LINE 1
(  C  )
6、若有以下定义:int t[3][2]; 能正确表示t数组元素地址的表达式是______。
A、&t[3][2]
B、t[3]
C、t[1]
D、*t[2]
(  A  )
7、若定义static int a[2][2]={1,2,3,4 },则a数组的各数组元素分别为______。
A、a[0][0]=1、a[0][1]=2、at[1][0]=3、a[1][1]=4
B、a[0][0]=1、a[0][1]=3、a[1][0]=2、a[1][1]=4
C、a[0][0]=4、a[0][1]=3、a[1][0]=2、s[1][1]=1
D、a[0][0]=4、a[0][1]=2、a[1][0]=3、a[1][1]=1
(  C  )
8、有以下程序段
typedef struct node
{
int data;
struct node * next;
}
* node;
node p;
以下叙述中正确的是________。
A、p是指向struct node结构变量的指针的指针
B、NODEp;语句出错
C、p是指向struct node结构变量的指针
D、p是struct node结构变量
(  A  )
9、以下for语句中不是死循环的是________。
A、for(int i=0;i<1;i++);
B、for(int i=0;i++);
C、for(int i=1;i>0;++i);
D、for( ;;);
(  B  )
10、以下不正确的定义语句是________。
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 c1[]='1','2','3','4','5';
D、char c2[]='a','b','c';
(  D  )
11、char型常量在内存中存放的是________。
A、二进制代码值
B、十进制代码值
C、十六进制代码值
D、ASCⅡ代码值
(  B  )
12、若有以下定义和语句 union data
{
int i;
char c;
float f;
} x;
int y;
则以下语句正确的是________。
A、x=10.5;
B、x.C=101:
C、Y=x;
D、printf("%d\n",x);
(  A  )
13、有以下程序段int m=0,n=0;
char c='a';
scanf("%d%c%d",&m,&c,&n);
printf("%d,%c,%d\n",m,c,n);
若从键盘上输入:10a10↙,则输出结果是______。
A、10,A,10
B、10,a,10
C、10,a,0
D、10,A,0
(  A  )
14、以下程序结果为:______。
void add( )
{
static int x=3;
x++;
printf("%d",x);
}
main( )
{
int i;
for(i=0;i<3;i++)add( );
}
A、456
B、444
C、555
D、345
(  C  )
15、在c语言中,系统为一个结构体变量分配的内存是________。
A、各成员所需内存量的总和
B、结构体第一个成员所需的内存量
C、成员中占内存量最大者所需的容量的整数倍
D、结构体中最后一个成员所需的内存量
(  B  )
16、调用函数f(27)的输出结果是________。
void f(int n)
{
if(n<5) printf("%d", n);
else
{
printf("%d", n%5);
f(n/5);
}
}
A、102
B、201
C、21
D、20
(  C  )
17、以下叙述中正确的是________。
A、continue 语句使得整个循环终止
B、break 语句不能用于提前结束 for 语句的本层循环
C、使用 break switch 语句可以使流程跳出语句体
D、在 for 语句中, continue 与 break 的效果是一样的,可以互换
(  D  )
18、函数调用:strcat(strcpy(str1,str2),str3)的功能是________。
A、将串str1复制到串str2中后再连接到串str3之后
B、将串str1连接到串str2之后再复制到串str3之后
C、将串str2连接到串str1之后再将串str1复制到串str3中
D、将串str2复制到串str1中后再将串str3连接到串str1之后
(  D  )
19、选择结构中的条件与循环结构中循环成立的条件,在写法上可以是任一表达
式,但其值只能被判断为“真”或“假”。哪个数作为逻辑“假”值()。
A、-1
B、1
C、非零的数
D、0
(  B  )
20、设 p1 和 p2 是指向同一个字符串的指针变量,c 为字符变量,则以下不能正确执行的赋值语句是()。
A、c=*p1+*p2;
B、p2=c;
C、p1=p2;
D、c=*p1*(*p2);

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

(   F  )
1、在c语言中,引用数组元素时,数组下标的数据类型只能是整型常量。 ( ) 
(   T  )
2、对字符数组进行初始化时,如果初值个数小于数组长度,则只将这些字符赋给数组中的前面那些元素,其余元素自动定为空字符('\0')。 
(   T  )
3、while语句的一般形式如下,当表达式的值为"真"时,循环执行,直到表达式的值为"假",循环中止并继续执行while的下一条语句。 
(   F  )
4、a>b?a:b>c?b:c该表达式求出了a,b,c的最大值 
(   T  )
5、main函数是c语言的主函数。 
(   F  )
6、在c程序中,若链接过程没有发现任何错误则表示链接成功,会生成一个".obj"文件。 
(   T  )
7、函数strcpy(str1,str2);
的功能是将字符串str2复制到字符串str1中。 
(   T  )
8、c语言中函数返回值的类型跟形参的数据类型没有直接的联系。 
(   F  )
9、在if语句中,else前一个语句可不加";". 
(   T  )
10、在C语言中,逗号既可以作为运算符,也可以作为分隔符。 

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

1、题⽬描述
有10个学⽣,每个学⽣的数据包括学号、姓名、3门课程的成绩。读⼊这10个学⽣的数据,要求输出3门课程的总平均成绩,以及个⼈平均分最⾼的学⽣的数据(包括学号、姓名、3门课程成绩、平均分数)。
输⼊
共有10⾏,每⾏包含了⼀个学⽣的学号(整数)、名字(长度不超过19的⽆空格字符串)和3门课程的成绩(0⾄100之间的整数),⽤空格隔开。
输出
第⼀⾏包含了3个实数,分别表⽰3门课程的总平均成绩,保留2位⼩数,每个数之后输出⼀个空格。
第⼆⾏输出个⼈平均分最⾼的学⽣的数据,与输⼊数据格式相同。如果有多位个⼈平均分最⾼的学⽣,输出按照输⼊顺序第⼀个最⾼分的学⽣数据。
请注意⾏尾输出换⾏。
样例输⼊
样例输出
85.60 87.90 90.40
105 EEE 92 93 94
2、编程序求1~80所有整数的平方和并输出结果。
3、任意输入两行字符串,把第二行字符串连接到第一行字符串末尾(不用strcat函数)。