大连外国语大学2022年计算机C语言期末测试卷

本试卷为大连外国语大学2022年计算机C语言期末测试卷,题目包括:单项选择题,判断题,编程题。

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

计算机C语言期末测试卷

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

(  A  )
1、下列叙述中正确的是________。
A、只能在循环体内和switch语句体内使用break语句
B、continue语句的作用是结束整个循环的执行
C、在循环体内使用break语句或continue语句的作用相同
D、从多层循环嵌套中退出时,只能使用got0语句
(  C  )
2、下面程序的输出的是
main()
{
int x=10,y=3;
printf("%d\n",y=x/y);
}
A、0
B、1
C、3
D、不确定的值
(  A  )
3、以下程序的输出结果是
main()
{
int a=0,i;
for(i=;i<5;i++)
{
switch(i)
{
case 0: case 3:a+=2;
case 1: case 2:a+=3;
default:a+=5;
}
}
printf("%d\n",a);
}
A、31
B、13
C、10
D、20
(  C  )
4、for(int x=0,y=0;!x&&y<=5;y++)语句执行循环的次数是________。
A、0
B、5
C、6
D、无数次
(  C  )
5、在标准ascⅱ编码表中,数字码、小写英文字母和大写英文字母的前后次序是________。
A、数字、小写英文字母、大写英文亨母
B、小写英文字母、大写英文字母、数字
C、数字、大写英文字母、小写英文字母
D、大写英文字母、小写英文字母、数字
(  B  )
6、有以下程序:
int f(int n)
{
if(n ==1) return 1;
else return f(n-1)+1;
}
main( )
{
int i,j=0;
for(i=1;i<3;i++) j+=f(i);
printf("%d\n",j);
}
程序运行后的输出结果是________。
A、4
B、3
C、2
D、1
(  A  )
7、下列程序的运行结果是________。
#include<stdio.h>
void fun(int*s,int*p) {
static int t=3;
*p=s[t];
t--;
}
main()
{
int a[]= { 2,3,4,5}, k;
int x;
for(k=0;k<4;k++) {
fun(a,&x);
printf("%d,",x);
}
}
A、5,4,3,2
B、2,3,4,5,
C、2,2,2,2,
D、5,5,5,5,
(  A  )
8、以下关于c/c语言指针变量的叙述中,正确的是________。
A、指针变量可以是全局变量也可以是局部变量
B、必须为指针变量与指针所指向的变量分配相同大小的存储空间
C、对指针变量进行算术运算是没有意义的
D、指针变量必须由动态产生的数据对象来赋值
(  D  )
9、下列关于表达式的描述中,错误的是________。
A、常量和变量都是表达式
B、运算符类型对应表达式的类型
C、每一个表达式都有自己的值
D、表达式必须以分号结尾
(  B  )
10、设有以下说明语句:
struct stu
{
int a;
float b;
}
suttype;
则下面叙述不正确的是________。
A、struct是结构体类型的关键字
B、struct stu是用户定义的结构体类型
C、suttype是用户定义的结构体类型名
D、a和b都是结构体成员
(  D  )
11、在c语言中,数字029是一个( )
A、八进制数
B、十进制数
C、十六进制数
D、非法数
(  C  )
12、数组 int a[3][4]; 其中错误的数组引用为________。
A、a[0][0]
B、a[1][3]
C、a[3][3]
D、a[0]
(  B  )
13、数组a[10]的下标从( )开始。
A、1
B、0
C、10
D、不确定
(  B  )
14、下列程序段运行后从键盘输入一个大写字母q,输出结果是 char ch; ch=getchar( ); ch=ch-'a'+'a'; putchar(ch);
A、Q
B、q
C、A
D、a
(  D  )
15、若有如下定义变量:int k=7,x=12; 则能使值为3的表达式是________。
A、x%=(k%=5)
B、x%=(k-k%5)
C、x%=k-k%5
D、(x%=k)-(k%=5)
(  A  )
16、以下叙述中正确的是________。
A、使用 typedef 定义新类型名后,新类型名与原类型名实际上是等价的
B、结构体类型中的各个成分均不能是数组或指针
C、结构体类型的变量,不能在声明结构体类型组成时一起定义
D、元素为结构体类型的数组,只能在声明过结构体类型之后,单独进行定义
(  D  )
17、int i,j,a[2][3]; 按照数组a的元素在内存的排列次序,不能将数 1,2,3,4,5,6存入a数组的是________。
A、for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]=i*3+j+1;
B、for(i=0;i<3;i++)for(j=0;j<2;j++)a[j][i]=j*3+i+1;
C、for(i=0;i<6;i++)a[i/3][i%3]=i+1;
D、for(i=1;i<=6;i++)a[i][i]=i;
(  B  )
18、int a[10]; 给数组a的所有元素分别赋值为1、2、3、……的语句是________。
A、for(i=1;i<11;i++)a[i]=i;
B、for(i=1;i<11;i++)a[i-1]=i;
C、for(i=1;i<11;i++)a[i+1]=i;
D、for(i=1;i<11;i++)a[0]=1;
(  A  )
19、指针变量p进行自加运算(即 执行p++;)后,地址偏移值为4,则其 数据类型为________。
A、int
B、float
C、double
D、char
(  B  )
20、设 p1 和 p2 是指向同一个字符串的指针变量,c 为字符变量,则以下不能正确执行的赋值语句是()。
A、c=*p1+*p2;
B、p2=c;
C、p1=p2;
D、c=*p1*(*p2);

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

(   T  )
1、c程序总是从main( ) 函数的第一条语句开始执行的。 ( ) 
(   T  )
2、用字符串常量给数组赋初值时,如果提供的字符个数大于数组长度,则系统报错。 
(   T  )
3、全局静态变量的作用域限制在定义它的源文件内,只能为该源文件内的函数公用。 
(   F  )
4、在定义一个共用体变量时,系统分配给她的存储空间是该共用体中占有最大存储空间的成员所需的存储空间。 
(   F  )
5、c语言每个函数的返回值都是int型的。 
(   T  )
6、函数的实参传递到形参有两种方式:值传递和地址传递。 
(   T  )
7、宏定义是用宏名来表示一个字符串,在宏代换时以该字符串取代宏名。 
(   F  )
8、c语言中基本数据类型只有整型、实型和字符型。 
(   F  )
9、由于do-while 循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句。 
(   T  )
10、在c语言中,当一个逻辑表达式的值为"假"时,该表达式的值一定是 0 ( ) 

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

1、有以下类信息,使用结构体数组存储这些信息
struct class{
int id;//类编号
char info[20]; //类信息
}a[5]={{1,"aaa"},{2,"bbb"},{6,"ccc"},{7,"ddd"},{4,"eee"}};
从键盘输入一个类编号,如果有该类,删除该类信息,并输出删除
后剩余类信息;如果没有,全部输出。
【输出形式】分行输出数据,每行数据均使用一个空格分隔
【输入样例】1
【输出样例】每行数据均使用一个空格分隔,分行输出
2 bbb
6 ccc
7 ddd
4 eee
2、用数组实现以下功能:输入5个学生成绩,而后求出这些成绩的平均值并显示出来。
3、编写程序,将用户输入的字符串中删除所有的数字,然后输出剩余的字符。