2023年计算机C语言专升本测试卷(一)
一、单项选择题(共20题,每小题2 分,共 40分)1、若已有定义语句:inta,b, c; 且变量已正确赋初值,则以下选项中正确的赋值语句是________。
A、a = (b = c) + 8;
B、(a = b) = c = 9;
C、a = (b == c) = 'A';
D、a + b = c + 1;
2、下列四组选项中,均不是c语言关键字的选项是________。
A、define IF type
B、getc char printf
C、include scanf case
D、while go pow
3、下列叙述中正确的是________。
A、程序执行的效率与数据的存储结构密切相关
B、程序执行的效率只取决于程序的控制结构
C、程序执行的效率只取决于所处理的数据量
D、以上三种说法都不对
4、有以下程序main() { int i, j; for(i=1;i<4;i++) { for(j=i;j<4;j++)printf("%d*%d=%d ",i,j,i*j); printf("\n"); }}程序运行后的输出结果是______。
A、1*1=1 1*2=2 1*3=32*1=2 2*2=4 2*3=63*1=3 3*2=6 3*3=9
B、1*1=1 1*2=2 1*3=3 2*2=4 2*3=6 3*3=9
C、1*1=1
D、1*1=1 1*2=2 2*1=2 2*2=4 3*3=9
5、下面关于编译预处理命令,正确的是________。
A、#define char CHAR
B、#Define E 0.0000034
C、##define FALSE 0
D、#define DIM 26
6、整型变量x=1,y=3,经下列计算后,x的值不等于6的是________。
A、x=(x=1+2,x*2)
B、x=y>2?6:5
C、x=9-(--y)-(y--)
D、x=y*4/2
7、关于数组的定义与初始化,下列哪一项是错误的( )
A、int arr[5] ={1,2,3,4,5};
B、int arr[] ={1,2,3,4,5};
C、int arr[5] = {1,2,3};
D、int arr[5] ={1,2,3,4,5,6};
8、下面正确的字符常量是 。
A、“c”
B、'\\’’
C、'’
D、'K’
9、字符串"xyz"在内存占用的字节数是______。
A、3
B、4
C、6
D、8
10、定义如下变量和数组: int i,x[3][3]={1,2,3,4,5,6,7,8,9};则下面语句for(i=0;i<3;i++)printf("%d",x[i][2-i]);的输出结果是________。
A、1 5 9
B、1 4 7
C、3 5 7
D、3 6 9
11、当全局变量与局部变量重名时,那么在调用时( )
A、局部变量会被屏蔽
B、全局变量会被屏蔽
C、都不会调用,系统会报错
D、会调用两次,先调用局部变量,再调用全局变量
12、c 语言共用体类型变量在程序运行期间。
A、所有成员一直驻留在内存中
B、只有一个成员驻留在内存中
C、部分成员驻留在在内存中
D、没有成员驻留在内存中
13、下列选项中,能够满足"若字符串s1等于字符串s2,则执行st"要求的是________。
A、if(strcmp(s2,s1)==0)ST;
B、if(sl==s2)ST;
C、if(strcpy(s l ,s2)==1)ST;
D、if(sl-s2==0)ST;
14、在16位pc机上使用c语言,若有如下定义 struct data { int i; char ch; double f; } b; 则结构变量b占用内存的字节数是________。
A、1
B、2
C、7
D、11
15、有以下程序:main() { int x=0,y=5,z=3; while(z-->0&&++x<5)y=y-l; printf("%d,%d,%d\n",x,y,z);}程序执行后的输出结果是________。
A、3,2,0
B、3。2. 1
C、4,3,-1
D、5,2.-5
16、已知:int a,b; 下列switch语句中,( )是正确的。
A、switch (a) case a: a++;break; case b: b++;break;
B、switch(a+b) case 1:a+b;break; case 1:a-b
C、switch(a*a) case 1,2:++a; case 3, 4:++b:
D、switch(a/10+b) case 5:a/5:break: default:a+b;
17、static struct { int a1; float a2; char a3;}a[10]={1,3.5,'a'};说明数组a是地址常量,它有10个结构体型的下标变量,采用静态存 储方式,其中被初始化的下标变量是________。
A、a[1]
B、a[-1]
C、a[0]
D、a[10]
18、有以下程序 #include <stdio.h>void fun(int *s,int nl,int n2) { int i,j,t; i=nl; j=n2; while(i<j) { t=s[i]; s[i]=s[j]; s[j]=t; i++; j--; }}main() { int a[10]={1,2,3,4,5,6,7,8,9,0}, k; fun(a,0,3); fun(a,4,9); fun(a,0,9); for(k=0;k<10;k++)printf("%d",a[k]); printf("\n");}程序运行的结果是________。
A、0987654321
B、4321098765
C、5678901234
D、0987651234
19、在下面的字符数组定义中,哪一个有语法错误。
A、char a[20]=“abcdefg”;
B、char a[]=“x+y=55.”;
C、chara[15];
D、char a[10]='5’;
20、下面赋值表达式不正确的是__________________.struct student { long num; char name[20];} st1, st2={101, "tom"}, *p=&st1;
A、st1 = st2
B、p->name = st2.name
C、p->num = st2.num
D、*p=st2
二、填空题(共10题,每小题2 分,共 20分)1、利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用a表示,60-89分之间的用b表示,60分以下的用c表示。
2、已知a=5,则表达式"a+=a-=3"的值是_____________。
3、若i为整型变量,且i%2==0的值为1,则变量i为________数。
4、C语言中的标识符只能由三种字符组成,他们是 字母,数字,下划线___。
5、下列程序段的运行结果是________。main(){ int m=1,t=1; for( ; ; ) { m=m+t ; t++; if(m>9)break ; } printf("%d\n",m);}
6、下面程序段的运行结果是________。for(a=1,i=-1;-1<=i<1;i++){ a++; printf("%d,",a);}printf("%2d",i);
7、c语言本身不提供输入输出语句,输入和输出操作是由________来实现的。
8、C语言中函数返回值的类型是由______决定的。
9、已知"float x=0.5; int y=8;",则算术表达式"(int)(x+y/5)"的值是________。
10、以下程序的运行结果是_____________。main( ) { int k, s ,a[4][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}; s=0; for( k=0;k<4;k ++)s=s+ a[k][k]; printf("%d,",s);}
三、编程题(共3题,共 40分)1、编写程序:查找n在数组a中最后一次出现的位置 例如:如果a数组中的元素为:1,5,2,5,6,8,7,4,3,0,当n=5时,程序的输出结果为:5 is no.3 当n=10时,程序的输出结果应为:10not found (本题10分)
2、输入n的值,计算并输出1*1+2*2+3*3+4*4+5*5+...+n*n的值。要求编写函数f求平方。 (本题14分)
3、题⽬描述有10个学⽣,每个学⽣的数据包括学号、姓名、3门课程的成绩。读⼊这10个学⽣的数据,要求输出3门课程的总平均成绩,以及个⼈平均分最⾼的学⽣的数据(包括学号、姓名、3门课程成绩、平均分数)。输⼊共有10⾏,每⾏包含了⼀个学⽣的学号(整数)、名字(长度不超过19的⽆空格字符串)和3门课程的成绩(0⾄100之间的整数),⽤空格隔开。输出第⼀⾏包含了3个实数,分别表⽰3门课程的总平均成绩,保留2位⼩数,每个数之后输出⼀个空格。第⼆⾏输出个⼈平均分最⾼的学⽣的数据,与输⼊数据格式相同。如果有多位个⼈平均分最⾼的学⽣,输出按照输⼊顺序第⼀个最⾼分的学⽣数据。请注意⾏尾输出换⾏。样例输⼊
样例输出 85.60 87.90 90.40 105 EEE 92 93 94 (本题16分)
参考答案一、单项选择题
1、A
2、A
3、A
【解析】程序执行的实际计算工作量不仅与程序的控制结构有一定的关系,还与处理的数据量有关,与数据的存储结构密切相关。所以,选项A正确,选项B和C错误。所以,本题的正确答案为A。
4、B
【解析】本题考查的是循环嵌套。在一个循环体内又完整地包含了另一个循环,称为循环嵌套。外循环i的值分别为1、2、3,当i=1,内循环j=1时,输出1*1=1;当内循环j=2时,输出1*2=2;当内循环j=3时,输出1*3=3;当i=2,内循环j=2时,输出2*2=4;当内循环j=3时,输出2*3=6;当i=3,内循环j=3时,输出3*3=9。
5、D
【解析】无参宏定义的一般格式:# define 标识符语言符号字符串,其中:“define”为宏定义命令;“标识符为所定义的宏名,通常用大写字母表示,以便于与变量区别;“语言符号字符串”可以是常数、表达式、格式串(格式串是用双引号括起来的字符串)等,选项 A B C 错误,选项 D 正确;本题答案为 D。
6、C
7、D
【解析】选项4初始化值大于数组的大小。
8、D
9、B
【解析】字符串中的每个字符占1个字节,但C程序在存储字符串时,要在最后一个有效字符后面接上1个字符串结束的标记符'\0'。这样,存储字符串常量”XyZ”需要4个字节。所以解答是B。
10、C
11、B
【解析】当局部变量与全局变量重名时,全局变量会被屏蔽。
12、B
13、A
14、D
【解析】结构体变量所占用内存的字节数是其所有成员所占用内存字节数之和。本题中整型变量i所占用的内存是2字节,字符型变量ch所占用的内存是1字节,双精度型变量f所占用的内存是8字节,三者相加即可。
15、B
16、D
17、C
18、C
19、D
【解析】[考点分析] 考查