✅ 操作成功!

黑龙江科技大学

发布时间:2023-06-04 作者:admin 来源:文学

黑龙江科技大学

黑龙江科技大学

-

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页

👁️ 阅读量:0