
黑龙江科技大学
-
2023年2月13日发(作者:)黑龙江科技大学
C语言程序设计冲刺卷
考试时间:【120分钟】总分:【150分】
得分评卷人
一、单项选择题(共20题,每题2分,共计40分)
()
1、下列4种不同数制表示的数中,数值最小的一个是________。
A、八进制数52
B、十进制数44
C、十六进制数2B
D、二进制数101001
()
2、关于数据类型存储大小从小到大正确的是________。
A、sizeof(char)<sizeof(shortint)<sizeof(int)<sizeof(float)
B、sizeof(char)<sizeof(shortint)<sizeof(int)<sizeof(double)
C、sizeof(char)<sizeof(int)<sizeof(longint)<sizeof(float)
D、sizeof(char)<sizeof(unsignedint)<sizeof(longint)<sizeof(double)
()
3、下列语句中,不正确的一个是______。
A、floate=1.1f;
B、charf=-1.1f;
C、doubleg=1.1f;
D、byteh=1;
()
4、当从键盘上输入字符\"12134211\"下面程序的输出结果是________。
main()
{
chars;
intv1=0,v2=0,v3=0,v4=0,k;
for(k=0;k<=7;k++)
{
scanf(\"%c\",&s);
switch(s)
{
default:v4++;
case\'1\':v1++;
case\'3\':v3++;
第1/12页
case\'2\':v2++;
}
}
printf(\"v1=%d,v2=%d,v3=%d,v4=%dn\",v1,v2,v3,v4);
}
A、v1=4,v2=2,v3=1,v4=1
B、v1=4,v2=9,v3=3,v4=1
C、v1=5,v2=8,v3=6,v4=1
D、v1=8,v2=8,v3=8,v4=8
()
5、有以下程序
#include<stdio.h>
main()
{
intx=1,y=0,a=0,b=0;
switch(x)
{
case1:switch(y)
{
case0:a++;
break;
case1:b++;
break;
}
case2:a++;
b++;
break;
case3:a++;
b++;
}
printf(\"a=%d,b=%dn\",a,b);
}
程序的运行结果是________。
A、a=1,b=0
B、a=2,b=2
C、a=1,b=1
D、a=2,b=1
()
6、以下程序运行后,输出结果是
#definePT5.5
#defineS(x)PT*x*x
#include<stdio.h>
main()
第2/12页
{
inta=1,b=2;
printf(\"%4.1fn\",s(a+b));
}
A、49.5
B、9.5
C、22
D、45.0
()
7、以下能正确定义且赋初值的语句是________。
A、intn1:=n2:=10;
B、charc=32;
C、floatf=f+1.1;
D、doublex=12.3E2.5;
()
8、设有如下定义:charaa[2][20]={\"abcd\",\"abcd\"};则以下说法中错误的是
__________.
A、aa是个二维数组,可以存放2个19个字符以下的字符串
B、aa是个二维数组,每行中分别存放了字符串\"abcd\"和\"ABCD\"
C、aa[0]可以看作是一维数组名
D、aa[0][0]可以看作是一维数组名
()
9、若以下选项中的变量已正确定义,则正确的赋值语句是________。
A、x1=26.8%3;
B、1+2=x2;
C、x3=0x12;
D、x4=1+2=3;
()
10、下列字符串中可以用作c标识符的是________。
A、2009var
B、goto
C、test-2009
D、-123
()
11、若有定义:intc[4][5],(*cp)[5];和语句cp=c;,则能正确引用c数组元素的是________。
A、cp+1
B、*(cp+3)
C、*(cp+1)+3
第3/12页
D、*(*cp+2)
()
12、下面关于函数依赖的叙述中,不正确的是________。
A、若X→Y,Y→Z,则X→YZ
B、若X→Y,Y\'包含Y,则X→Y\'
C、若X→Y,Y→Z,则X→Z
D、若XY→Z,则X→Z,Y→Z
()
13、在c语言中,以下说法不正确的是________。
A、在C程序中,整数和实数都能被准确无误地表示出来
B、在C程序中,任何一个变量名都代表存储器中的一个位置
C、静态变量的生存期与整个程序的运行期相同
D、C语言中,任何变量都必须先声明才能进行引用
()
14、请选择以下语句的输出结果________。printf(\"%dn\",strlen(\"t\"065xffn\"));
A、5
B、14
C、8
D、输出项不合法,无正常输出
()
15、以下程序的输出结果是_______。
main()
{
charh[]=\"america\",*q;
q=h+2;
printf(\"%c\",*q++);
printf(\"%c\",*q++);
}
A、me
B、er
C、ca
D、ri
()
16、设n为整型变量,则循环语句for(n=10;n>0;n--)的循环次数为________。
A、10
B、9
C、11
D、12
()
17、下列程序的输出结果是________。
第4/12页
#include<stdio.h>
structabc
{
inta,b,c,s;
};
main()
{
structabcs[2]={{1,2,3},{4,5,6}};
intt;
t=s[0].a+s[1].b;
printf(\"%dn\",t);
}
A、5
B、6
C、7
D、8
()
18、运行下面程序时,若从键盘输入\"5<cr>\",则程序的输出结果是__________.
#include<stdio.h>
voidmain()
{
inta;
scanf(\"%d\",&a);
if(a++>5)printf(\"%dn\",a);
elseprintf(\"%dn\",a--);
}
A、7
B、6
C、5
D、4
()
19、某一维数组中依次存放了数据元素12,23,30,38,41,52,54,76,85,在用折半(二分)查找方法
(向上取整)查找元素54时,所经历\"比较\"运算的数据元素依次为________。
A、41,52,54
B、41,76,54
C、41,76,52,54
D、41,30,76,54
()
20、若有下面的说明和定义,则sizeof(structaa)的值是______。
structaa
{
第5/12页
intr1;
doubler2;
floatr3;
}
maya;
A、20
B、18
C、14
D、16
得分评卷人
二、判断题(共10题,每题2分,共计20分)
()
1、若函数的返回值与return表达式类型不一致时,以return表达式类型为准。
()
2、一元运算符\"*\"和\"&\"的运算优先级低于自增自减预算。
()
3、c语言本身没有输入输出语句。()
()
4、for语句只能用于循环次数已经确定的情况
()
5、字符串常量是由一对双引号括起来的字符序列。
()
6、局部静态变量在函数内定义,函数调用结束时,它的生存期就结束了。
()
7、在c语言中,引用数组元素时,数组下标的数据类型只能是整型常量。()
()
8、函数fscanf()和fprintf()这两个函数是对磁盘文件进行读写,而不是对标准输入、输出设备
进行读写。
()
9、用数组名作函数参数时,数组中的元素可以发生变化,故违反了函数参数传递的单向性。
()
10、若不希望其他源文件引用本文件中定义的全局变量,可在定义全局变量时加上static。
得分评卷人
三、填空题(共5题,每题4分,共计20分)
1、在c语言数据类型中,一个无符号基本整型变量所代表的数据范围是__________到
4294967295。
2、双精度型数据有效位为______位
3、语句只能用在循环中,该语句的作用是结束本层本次循环,继续一下次循环,前不跳出循环。
4、C语言函数是由函数首部和函数体两部分组成。其中,函数首部包括函数类型、函数名和
______。
第6/12页
5、函数的返回值是通过函数的________语句获得的。
得分评卷人
四、程序分析题(共4题,每题5分,共计20分)
1、下面程序的功能是给一维数组a任意输入6个整数,假设为748915,然后建立一个具有
以下内容的方阵并打印。请分析程序填空。57489488915744
89157748915main()
{
inta[6],i,j,k,m;
for(i=0;i<6;i++)scanf(\"%d\",&a[i]);
for(i=5;i>=0;i--)
{
k=a[5];
for(【1】________;j>=0;j--)a[j+1]=a[j];
【2】________;
for(m=0;m<6;m++)printf(\"%d\",a[m]);
printf(\"n\");
}
}
2、编写even(n)函数判断n是否为偶数,是返回1,否返回0,请填空。
inteven(intn)
{
if________return1;
elsereturn0;
}
3、以下程序的功能是:将值为三位正整数的变量x中的数值按照个位.十位、百位的顺序拆分
并输出。请填空。
#include<stdio.h>
main()
{
intx=256;
printf("%d-%d-%dn",________,x/10%10,x/100);
}
4、下列程序段的运行结果是________。
#defineMIN(x,y)x<y?x:y
main()
{
inta,b,min;
A=10,b=11;
Min=MIN(a,b);
printf(\"min=%dn\",min);
}
第7/12页
得分评卷人
五、编程题(共3题,每题分值不等,共计50分)
1、某班综合考评,根据参加集体活动的次数加分,规则如下:参加1次及以下:加1分;参加2
至3次:加2分;参加4至7次:参加几次加几分;参加8至10次:加8分;参加10次以上:加10
分。程序运行时输入某人参加活动的次数,则输出其应该加的分数;如果输入为负值,则给出
相应提示。(本题12分)
2、编写程序:查找n在数组a中最后一次出现的位置
例如:如果a数组中的元素为:1,5,2,5,6,8,7,4,3,0,当n=5时,程序的输出结果为:5isno.3当
n=10时,程序的输出结果应为:10notfound(本题18分)
3、编写input()和output()函数,输入输出5个学生记录,每个记录包括num、name、
score[3],使用结构体实现。(本题20分)
第8/12页
参考答案
一、单项选择题
1、D
【解析】:解答这类问题,一般都是将这些非十进制数转换成十进制数,才能进行统一地对比。非
十进制转换成十进制的方法是按权展开。
2、B
3、B
【解析】float类型的数据1.1f可以被自动转换为double类型数据;byte类型数据的声明是正确的;
float类型的数据不可以自动转换为char类型数据。
4、C
5、D
6、A
【解析】考查宏替换的使用。[解题要点]宏替换用“#define宏名宏体”的形式来定义。在进行编
译预处理时,将把程序中宏定义之后的所有宏名用宏体替换。宏虽然可以带参数,但宏替换过程中
不像函数那样要进行参数值的计算、传递及结果返回等操作;宏替换只是简单的字符替换,不进行
计算,因而本题中的s(a+b)进行宏替换后为PT*1+2*1+2=5.5*1+2*1+2=9.5。[考点链接]带参数的
宏定义。
7、B
8、D
9、C
10、D
【解析】在C中,变量标识符必须以大小写字母或下画线开始,是由数字或者字母下画线等组成的一
个字符串,其中C++关键字不能作为标识符,不能包含-、+、*、/等运算符号。C++变量区分大小
写。
11、D
12、D
【解析】设R(U)是属性集U上的关系模式,X,Y,Z是U的子集。若对R(U)的任意一个可能的关系r,r
中不可能存在两个元组在X上的属性值相等,而在Y上属性值不等,则称“X函数确定Y”或“Y函数依
赖于X”,记作X→Y,X称为决定因素。根据Armstrong公理系统的三条定律,可以知道:
根据合并律可知选项A正确:
根据增广律可知选项B正确;
根据传递律可知选项C正确。
13、A
【解析】此题考查C语言的基本概念。变量的实质就是在内存中占据一定的存储单元,存储单元里存
放的是该变量的值,变量的值可以根据需要进行修改;整数在允许的范围内可以准确的表示出来,
第9/12页
但不可能表示无限度的实数。
14、A
【解析】本题考查用strlen函数计算字符串长度的方法。该字符串中包含的字符是:\"t\"(跳格
符)、\"\"\"(双引号)、\"065\"(ASCII值为八进制065,也即十进制为53的字符)、\"xff\"(ASCII值为
十六进制ff,也即十进制为255的字符)、\"n\"(换行符)。
15、B
16、A
17、B
【解析】在本题中,s[0].a=1,s[1].b=5,所以输出结果为6。
18、B
19、B
20、D
二、判断题
1、错误
2、错误
3、正确
4、错误
5、正确
6、错误
7、错误
8、正确
9、错误
10、正确
三、填空题
1、0#零
2、15~16#15到16#15#16
3、continue
4、函数参数
5、[\'return(或返回语句)\']
四、程序分析题
1、【1】j=4【2】a[0]=k
第10/12页
2、(n%2==0)
3、[\'x%10\']
4、min=10
五、编程题
1、#include
voidmain()
{
intcs,jf;
printf(\"请输入参加活动次数:\");
scanf(\"%d\",&cs);
if(cs<0)
printf(\"你所输入的活动次数有误!n\");
else
{
if(cs<=1)
jf=1;
else
if(cs<=3)
jf=2;
else
if(cs<=7)
jf=cs;
else
if(cs<=10)
jf=8;
else
jf=10;
printf(\"此人参加活动%d次,按规定应该加%d分!n\",cs,jf);
}
}
2、#include<stdio.h>
main()
{
inta[10]={1,5,2,5,6,8,7,4,3,0};
inti,k,n,f=0;
scanf(\"%d\",&n);
for(i=0;i<10;i++)
if(a[i]==n)
{
f=1;
k=i;
}
第11/12页
if(f)printf(\"%disno.%dn\",n,k);
elseprintf(\"%dnotfound!n\",n);
}
3、#include
structstudent{
intnum;
charname[20];
intscore[3];
}stu[5];
voidinput(structstudent*pstu){
intn,j;
for(n=0;n<5;n++){
printf(\"Inputstudentsnum:\");
scanf(\"%d\",&pstu[n].num);
printf(\"n\");
printf(\"Inputstudentsname:\");
scanf(\"%s\",&pstu[n].name);
printf(\"n\");
printf(\"Inputstudentsscore:\");
for(j=0;j<3;j++){
scanf(\"%d\",&pstu[n].score[j]);
}
printf(\"n\");
}
}
voidoutput(structstudentstu[]){
inti=0,j;
for(i;i<5;i++){
printf(\"%d,%s\",stu[i].num,stu[i].name);
for(j=0;j<3;j++){
printf(\"%3d\",stu[i].score[j]);
}
printf(\"n\");
}
}
intmain(){
voidinput(structstudent*pstu);
voidoutput(structstudentstu[]);
input(stu);
output(stu);
}
第12/12页