北方工业大学2023年计算机C语言期末样卷(含六卷)_第1页
北方工业大学2023年计算机C语言期末样卷(含六卷)_第2页
北方工业大学2023年计算机C语言期末样卷(含六卷)_第3页
北方工业大学2023年计算机C语言期末样卷(含六卷)_第4页
北方工业大学2023年计算机C语言期末样卷(含六卷)_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2023年计算机C语言期末精选样卷(-)

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

1、与二进制小数0.1等值的十六进制小数为O

A、0.1

B、0.2

C、0.4

D、0.8

【答案】D

【解析】此题属于综合题。首先,把二进制小数0.1转化成十进制小数:

(0.1)2=1X27=(0.5)然后把十进制小数0.5转化成十六进制小数:

0.5X16=8,而整数部分为0,所以(0.1)2=(0.5)10=(0.8)16

2、为表示关系x>y>z,应使用的c语言表达式是o

A、(x>y)&&(x>z)

(x>y)&&(y>z)

C、(x>y)&(y>z)

Ds.(x>y)AND(x>z)

【答案】B

3、在下面的条件语句中(其中si个s2表示c语言语句),只有()在功能上与其

他三个语句不等价。

A、if(a)

SI

else

S2

B、if(a=0)

S2

else

SI

C、if(a!=0)

SI

else

S2

if(a==0)

SI

else

S2

【答案】D

4、设变量a、b、c、d和y都已正确定义并赋值。若有以下if语句:if(a<b)

if(c==d)y=0;elsey=l;该语句所表示的含义是。

A、y=0,a

y=LaNb

B、y=0,a

y=La2b且cNd

C、y=0,a

y-1,且CXD

D、y=0,a

y=l,cWd

【答案】C

5、以下程序的输出结果是o

main()

(

inta=l,b=0,x=l,y=l;

switch(a)

(

case1:switch(b)

(

case0:x++;

break;

case1:y++;

break:

}

case2:x++;

y++;

break;

)

printfCz%d,%d\nz,,x,y);

)

A、2,1

B、2,3

C、3,2

D、32

【答案】C

6、设intx:,则经过______后,语句*px=0;可将x值置为0。

A^int*px;

B、intconst*px=&x;

C^int*constpx=&x:

D、constint*px=&x;

【答案】B

【解析】因为*pl=a:所以a必然为指针类型,p2二*b,粕为指针类型,而b

必然是指向指针的指针,a和b的类型分别是ini*和ini**。

7、下列语句中,正确的是o

A、sLaLiccharsir□-“China”;

B、staticcharstr口;str="China”;

C、staticcharstrl[5],str2[]=/,Chinaz,;strl=str2;

D、staticcharstrl[],str2[];str2=z,Chinaz,;strcpy(strl,str2);

【答案】A

8、以下对二维数组a进行正确初始化的是o

A、inta[2][3]={{l,2},{3,4},{5,6}};

B、inta[][3]={1,2,3,4,5,6};

C、inta[2][]={1,2,3,4,5,6};

D、inta[2][]={{1,2},{3,4});

【答案】B

9、执行语句for(i=l;i++V4;);后变量i的值是。

A、3

B、4

C、5

D、不确定。

【答案】C

10、顺序执行下列程序语句后,则b的值是stringa="hello";string

b=a.substring(0,2);

A>Hello

B、hello

C、He

D、null

【答案】C

【解析】substring。方法是用来提取子字符串的,此题是提取字符串a的第0

个到第2个字符组成新的字符串:He。

11、若使用一维数组名作函数实参,则以下正确的说法是。

A、必须在主调函数中说明此数组的大小

B、实参数组类型与形参数组类型可以不匹配

C、在被调用函数中,不需要考虑形参数组的大小

D、实参数组名与形参数组名必须一致

【答案】A

12、以下叙述中正确的是o

A、在C程序中无论是整数还是实数,只要在允许的范围内都能准确无误地

表示

B、C程序由主函数组成

C、C程序由若干函数组成

D、C程序中只允许包含一个函数

【答案】C

13、以下选项中不正确的整型常量是o

A、12L

B、-10

C、12

D、2,900

【答案】D

14、以下不能对二维数组a进行正确初始化的语句是o

A、inta[2][3]={0};

B、inta[][3]={{l,2},{0});

C、inta[2][3]={{1,2},{3,4},{5,6}};

D、inta[][3]={1,2,3,4,5,6}

【答案】C

15>程序段:intx=12:doubley=3.141593;printf("%d%8.6f〃,x,y);的输出

结果是o

A、123.141593

B、123.141593

C、12,3.141593

D、123.1415930

【答案】A

16、下列叙述中正确的是o

A、只能在循环体内和switch语句体内使用break语句

B、continue语句的作用是结束整个循环的执行

C、在循环体内使月break语句或continue语句的作用相同

D、从多层循环嵌套中退出时,只能使用got。语句

【答案】A

17、设有如下定义:

structsk

(

inta;

floatb;

)

data,*p;

若有p=&data;

则对data中成员a的引用正确的是。

A、(*p).data,a

B、(*p).a

C、p->data.a

D、p.daLa.a

【答案】B

【解析】P是指向结构体的指针,用指针引用结构体成员有两种格式:p->成

员、(*p).成员

18、执行以卜'代码,输出结果是intx=5,y=7,u=9,v=6;

printf(〃%d〃,x>y?x+2:u>v?u-3:v+2);

A、8

B、6

C、7

D、true

【答案】B

19、下列字符数组长度为5的是o

Aschara□二{'h',,a,,,b',,c,,,d,};

charb[]={'h','a','b','c','d',''0');

C^charc[10]={'h',,a,,,b',,c,,,d,};

D、chard「61=「h','a','b','c',''0'}:

【答案】A

20、c语言结构体类型变量在程序执行期间,o

A、所有成员一直驻留在内存中

B、没有成员驻留在内存中

C、部分成员驻留在内存中

D、只有一个成员驻留在内存中

【答案】A

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

()1、for语句的一般形式如下,其中的表达式1只执行一次。

【答案】正确

()2、函数的形参都属于全局变量。

【答案】错误

()3、c语言中switch语句可以用if语句完全代替.()

【答案】正确

()4、若变量已正确定义,执行以下程序段,输入0或者负数时,循环结束。

total=0;

scanf(飞d”,&score);

while(score>0)

{

total=total+score;

scanf&score);

}

【答案】正确

()5、比较两个字符串是否相等不能通过条件运算符

【答案】正确

()6、按照c语言的规定,在参数传递过程中,既可以将实参的值传递给形参,也可以将

形参的值传递给实参,这种参数传递是双向的。

【答案】错误

()7、对字符数组元素进行引用时,可以一次引用整个数组。

【答案】错误

()8、函数的实参和形参都可以是变量、常量和表达式。

【答案】错误

()9、函数fscanf和fDrinlf这两个函数是对标准输入、输出设备进行读写,而不是对

磁盘文件进行读写。

【答案】错误

()10、在c语言中,使用方式可以打开文件

【答案】正确

三、编程题(每小题分,共40分)

1、编写程序:对10个数进行排序。(本题10分)

【答案】#include<stdio.h>

#defineN10

intmain()

(

inti,j,a[N],tenp;

printf(〃请输入10个数字:\n〃);

for(i=0;i<N;i+")

scanf(〃%d〃,&a[i]);

for(i=0;i<N-l;i++)

(

intmin=i;

for(j=i+l;j<N;j++)

if(a[min]>a[j])min=j;

if(min!=i)

(

temp=a[nin];

a[min]=a[i];

a[i]=tenp;

)

}

printf(〃排序结果是:\n〃);

for(i=0;i<N;i+-)

printf("%d",a[i]);

printf(〃\n〃);

return0;

)

【解析】可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个

元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换。

2、用空格或换行分开的字符串称为单词。输入多行字符串,直到遇到了单词

〃stop〃时才停止。最后输出单词的数量。用于分割单词的空格或换行可能多于

1个。单词数量不包括〃stop〃。(本题14分)

【答案】^include<stdio.h>

iiincludp〈string,h〉

intmain()

inti=O;

charstr[80];

while(1){

scanfstr);

if(strcmp(str,"stop")!=0){

i++;

}else{

break;

)

)

printf(〃%cT,i);

}

3、有一包含职工编号、年龄和性别的单向链表,分别使用函数完成以下功能

建立链表。

分别统计男女职工的人数。

在链表尾部插入新职工。

删除指定编号的职工。

删除60岁以上的男职工和55岁以上的女职工被删除的结点保存到另一个链表

中。在主函数中设计简单的菜单去调用上述函数。(本题16分)

【答案】#include<sldlib.h>

#include<stdio.h>

structnode(

longNo;

intage;

charsex;

structnode*next;

};

node*establish()

(

structnodc*h,*p,*q;

longnum;

h=(structnode*;malloc(sizeof(structnode));

p二q=h;

printf(〃请输入职工编号(输入0退出输入):\n〃);

scanfd〃,&nun);

while(num!=O)

(

p=(structnode*)malloc(sizeof(structnode));

p->No=num;

printf(〃请输入职工年龄和性别\n〃);

scanf(z,%d,%c〃,&p->age,&p->sex);

q->next=p;

q-p;

printf("请输入职工编号(输入0退出输入)!\n〃);

scanf&num);

}

p->next=NULL;

returnh;

}

voidcount(nodc*phead)

(

intm=0,f=0;

structnodc*p;

p=phead->next;

while(p!=NULL)

(

if(p->sex==,M,||p->sex==,in))

m++;

elsef++;

p=p->next;

}

printf("男职工的人数为:%d\n女职工的人数为:%d\n〃,m,f);

)

voidaddnew(nodc*phceid)

(

sLrucLnode木p,木q;

printf(〃请输入新职工编号年龄和性别!\n〃);

p=(structnode*Jmalloc(sizeof(structnode));

scanf(〃%ld,%d,%c”,&p->No,&p->age,&p->sex);

q=phead->ncxt;

while(q->next!=NULL)

q=q->next;

q->next=p;

p->next=NULL;

)

voiddel(structnode*phead,longnum)

(

structnode*p,*q;

if(phead->next"NULL)

(

prinlf("Lislisnull.Xn");

return;

}

p=phead->next;

q二phead;

while(p!=NULL&&p->No!=num)

q二P;

p=p->next;

)

if(p==NULL)return;

if(q!=NULL)

(

p=q->next;

q->next=p->next;

free(p):

}

}

node*delToOther(node*phead)

(

structnode*h,*p,*q,*r;

h=(structnode*;malloc(sizeof(structnode));

q=phead;

p-phead->[iexL;

r二h;

while(p!=NULL)

if(((p->sex==,M)||p->sex==,m*)&&p->age>=60;I|((p->sex==,F,||p->sex==,

f)&&p->age>=55))

q->next=p->next;

r->next=p;

r=p;

r->next=NULL;

p=p->next;

}

else

(

q=P;

p=p->next;

)

)

returnh;

}

intmain()

(

charch;

longnum;

structnode*phead,*prest;

printfCl.创建链表.\n2.统计男女职工人数.\n3.添加新员工.\n4.删除指

定编号的职工.\n5.删除60岁以上的男员工和55岁以上的女员工.\nEnter

yourchoice:12345,z):

scanf&ch);

while(ch!=0)

(

switch(ch)

(

case1:phead=establish();break:

case2:count(prest);break;

case3:addnew(phead);break;

case4:pr—请输入要删除的员工的编号;

scanf(绘ld〃,&num);

del(phead,num);break;

case5:prest=delToOther(phead;;break;

default:break;

}

printf("\nl.创建链表.\n2.统计男女职工人数.\n3.添加新员工.二n4.

删除指定编号的职工.55.删除60岁以上的男员工和55岁以上的女员

T.\nEnteryourchoice:12345!z,);

scanf(〃%d〃,&ch);

}

2023年计算机C语言期末精选样卷(二)

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

1、下列符号中,可以作为变量名的是o

A^+c

B、*X

C、_DAY

D、next-day

【答案】C

2、若要对a进行++运算,则a应具有下面说明

A、inta[3][2];

B、char*a[]〃12〃,〃ab〃;

C^char(*a)[3];

D、intb[10],*a=b;

【答案】A

【解析】左移1位,相当于乘以2,题中的x的值是一个八进制,转换为十进制

数是32,再乘以2,x的值为64,以机八进制形式输出,显示为100。

3、下列哪个赋值语句是不正确的

A、floatf=l1.1;

B、doubled=5.3E12;

C、floatd=3.14f;

D、doublef=ll.lElOf;

【答案】A

【解析】浮点型数的赋值,带有小数点的数字缺省是double型的,如果在浮点

数后面加f或者F则是float,后面加d或者D则是double,科学计数法形式

的浮点数也是double型的,而double的精度比float高,将一个高精度的

double赋值给一个低精度的float时需要进行强制类型转换,反之则不需要。

4、当从键盘上输入字符〃12134211〃下面程序的输出结果是o

main()

(

chars;

intvl=0,v2=0,v3=0,v4=0,k;

for(k=0;k<=7;k-+)

(

scanf&s);

switch(s)

default:v4++:

case'I*:vl++;

case'3':v3++;

case'2,:v2++;

}

)

printf(z/vl=%d,v2=%d,v3=%d,v4=%d\n〃,vl,v2,v3,v4);

)

A、vl-4,v2-2,v3-l,v4-l

B、vl=4,v2=9,v3=3,v4=l

C、vl=5,v2=8,v3=6,v4=l

D、vl=8,v2=8,v3=8,v4=8

【答案】C

5、若有循环:

intx=5,y=20;

do{y-=x;x++;}

while(++x<―y);

则循环体将被执行________。

A、0次

B、1次

C、2次

D、3次

【答案】C

6、c语言程序中,若对函数类型未加显式说明,则函数的隐含说明类型为

________O

A、void

B、double

C、int

D、char

【答案】C

7、下列标识符,不合法的是o

A、abc

B、_d

C、123

D、el

【答案】C

【解析】123不是合法的标识符,标识符不能以数字开头。

8、设pl和P2是指向同一个int型一维数组的指针变量,k为int型变量,则不

能正确执行的语句是。

A、k=*pl+*p2

B、p2=k;

C、pl—p2;

D>k=*pl*(*p2);

【答案】B

9、若有以卜定义和语句:doubler=99,*p=&r;*p=r;则以卜正确的叙述

是o

A、以下两处的木p含义相同,都说明给指针变量P赋值

B、在"double厂99,*p二&r;〃中,把r的地址赋值给了p所指的

存储单元

C、语句〃*p=r;〃把变量r的值赋给指针变量p

D、语句〃*p=r;〃取变量r的值放回r中

【答案】D

10、null是指________。

A、0

B、空格

C、未知的值或无任何值

D、空字符串

【答案】C

【解析】此题属于记忆性的题目,NULL是指未知的值或无任何值。

11、以下对一维数组a的正确说明是o

A、chara(10);

B、intaFl:

C、intk=5,a[k];

D、chara[3]={匕','b','c'};

【答案】D

12^有如下函数调用语句func(reel,rec2+rec3,(rec4,rec5));

该函数调用语句中,含有的实参个数是。

A、3

B、4

C、5

D、2

【答案】A

13、一个汉字的内码长度为2字节,其每个字节的最高二进制位的值分别为

A、0,0

B、1,1

C、1,0

D、0,1

【答案】B

【解析】汉字的内码二汉字的国标码+8080H,所以汉字内码的最高位为1。

14、若有定义:inta[4][10];则以下选项中对数组元素a[i][j]引用错误的是

______o(0<=i<4,0<=j<10)

A、*(&a[0][0]+10*i+j)

B、*(a+i)+j

C、*(+(a+i)+j)

D、*(a[i]+

【答案】B

【解析】本题中选项B是错误的引用,*(a+i)+j只代表了的地址。

15、运行下列程序的输出是

#include<stdio.h>

intmain()

(

intk=l;

(

intk=2;

printfk);

}

printf(〃%d",k);

return0;

}

A、12

B、21

C、11

D、22

【答案】B

16、在C语言中,为了结束由while语句构成的循环,while后一对圆括号

中表达式的值应该为()。

A、0

B、1

C、TRUE

D、非0

【答案】A

17、递归算法的执行过程一般来说可先后分成和两个阶段。

A、试探

B、递推

C、枚举

D、分析

【答案】B

【解析】递归是设计和描述算法的一种有力的工具。

能采用递归描述的算法通常有这样的特征:为求解规模为N的问题,设法将

它分解成一些规模较小的问题,然后从这些小问题的解方便地构造出大问题的

解,并且这些规模较小的问题也能采用同样的分解和综合方法,分解成规模更

小的问题,并从这些更小问题的解构造出规模稍大问题的解。特别地,当规模

N=1时,能直接得到解。

递推算法的执行过程分递推和回归两个阶段。在递推阶段,把较复杂的同题

的求解推到比原问题简单一些的问题的求解;在回归阶段,当获得最简单情况

的解后,逐级返回,依次获得稍复杂问题的解。

18、若有以下程序

#include<stdio.h>

#defineS(x)(x)*(x)

#defineT(x)S(x)/S(x)+1

main()

(

intk=3,j=2;

printf(zz%d,%d\n”,S(k+j),T(k+j));

}

则程序的输出结果是o

A、25,26

B、25,2

C、11,12

D、11,2

【答案】A

【解析】S(k+j)展开后,(3+2)*(3+2)值为25,T(k+j)展开后,

(3+2)*(3+2)/(3+2)*(3+2)+1值为26答案选择A。

19、下列描述中不正确的是o

A、字符型数组中可能存放字符串。

B、可以对字符型数组进行整体输入、输出。

C、可以对整型数组进行整体输入、输出。

D、不能在赋值语句中通过赋值运算符“二”对字符型数组进行整体赋值。

【答案】C

20、有以程序

#include<stdio.h>

ftinclude<string.h>

typedefstruct

(

charname[9];

charsex;

floatscore[2];

}stu;

voidf(stua)

(

stub={"zhao〃,'m,,85.0,90.0};

inti;

strcpy(a.name,b.name);

a.sex=b.sex;

for(i=0;i<2;i+-)a.score[i]=b.scorefi];

)

main()

(

stuc={〃qian〃,'pJ,95.0,92.0};

f(c);

printf(〃%s,%c,%2.Of,%2.0f\n,z,c.name,c.sex,c.score[0],c.scorefi]);

}

程序的运行结果是O

A、Qian,f,95,92

B、Qian,m,85,90

C、Zhao,f,95,92

D、Zhao,m,85,90

【答案】A

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

()1、在C程序中对用到的所有数据都必须指定其数据类型

【答案】错误

()2、c语言中〃++〃的运算符优先级高于〃+“

【答案】正确

()3、对于如下的switch语句(使用break)的一般形式,其执行流程是:首先求解表达

式,如果表达式的值与某个常量表达式的值相等,则执行该常量表达式后的相应语句段;

如果表达式的值与任何一个常量表达式的值都不相等,则执行default后的语句段,最后执

行break语句,跳出switch语句。switch(表达式)

case常量表达式1:语句段1;

break;

case常量表达式2:语句段2;

break;

-case常星表达式n:语句段n;

break;

default:语句段n+1;

break;

【答案】正确

()4、break则是结束整个循环过程,不再判断执行循环的条件是否成立。

【答案】正确

()5、字符常量与字符串是两种不同的常量。

【答案】正确

()6、在一个函数内部调用另一个函数的调用方式称为嵌套调用

【答案】正确

()7、二维数组元素在内存中的存放顺序是按列主顺序存放

【答案】错误

()8、函数一次可以返回两个以上的值。

【答案】错误

()9、二维数组在定义时,只能省略第一维的长度。

【答案】正确

()10、全局变量的作用域是整个源程序文件。

【答案】错误

三、编程题(每小题分,共40分)

1、编写程序:实现求1-1000之间的所有奇数的和并输出。(本题10分)

【答案】^include<stdio.h>

voidmain()

{inti,sum=0:

for(i=l;K1000;i=i+2)

sum=sum+i:

printf("thesumofoddis:%d”,sum;;

)

2、任意输一行字符串(包括空格),求其长度(不用strlen函数)。(本题

14分)

【答案】^incliide<stdio.h>

intmain()

(

inti,n=0;

chars[80];

gets(s);

for(i=0;s[i]!='\0';i++){}

printf("%d〃,i);

)

3、说明一个枚举类型enummonth它的枚举元素为Jan、Feb、…、Deco编写能

显示上个月名称的函数last_month。例如,输入Jan时能显示Dec。再编写另

一个函数printmon用于打印枚举变量的值枚举元素。最后编写主函数调用上

述函数生成一张12个月份及其前一个月份的对照表,使用结构体实现(本题

16分)

【答案】Uinclude<stdio.h>

enummonth{Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec};

char*nameL12J={Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,

〃Oct〃,〃Nov〃,〃Dec〃};

voidlast_month(enunmonthml)

enummonthm2=(enummonth)(((int)ml-l+12)%12);

printf("%s〃,name[(int)m2]);

)

voidprintmon(enumnonthm)

printfname[(int)m]);

)

intmain()

(

enummonthin;

for(m=Jan;m<=Dec;m=(enummonth)(m+1))

printmon(m);

printf(〃\n〃);

for(m=Jan;m<=Dec;m=(enummonth)(m+1))

last_month(m);

}

2023年计算机C语言期末精选样卷(三)

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

1、以下不正确的说法是—

A、在不同的函数中可以使用相同名字的变量

B、形式参数是局部变量

C、在函数内定义的变量只在本函数范围内有效

D、在函数内的复合语句中定义的变量在本函数范围内有效

【答案】D

2、执行以下语句后a的值为o

inta,b,c;

a=b=c=l;

++a||++b&&++c;

A、错误

B、0

C、2

D、1

【答案】C

3、在c语言系统中,假设int.类型数据占2个字节,则double,long,unsigned

int、char类型数据所占字节数分别多少()。

A、8,2,4,1

B、2,8,4,1

C、4,2,8,1

D、8,4,2,1

【答案】D

4、能正确表示a和b同时为正或同时为负的逻辑表达式是_______。

A、(a>=0IIb>=0)&&(a<0IIb<0)

B、(a>=0&&b>=0)&&(a<0&&b<0)

C、(a+b>0)&&(a+b<=0)

D、a*b>0

【答案】D

5、下面程序的运行结果是________。

main()

(

intm=7,n=5,i=l;

do

if(设m=0);

if(i%n==O)

(

printf("%d\n",i);

break;

)

i++;

}

whiled!-0);

}

A、7

B、6

C、5

D、4

【答案】C

6、若有函数调用语句:fun(a+b,(x,y),fun(n+k,d,(a,b,)));那么在此函数调

用语句中实参的个数是o

A、3

B、4

C、5

D、6

【答案】A

【解析】调用函数时,在函数名后面跟参数,参数用逗号隔开。调用时,实参

与形参的个数相等,类型一致,H按顺序一一对应传递数据。R实参是实际调

用函数时所给定的有确定值的常量、变量或表达式。本题函数调用语句中的实

参个数为3个。

7、与数学式子3乘以x的n次方/(2xT)对应的c语言表达式是______。

A、3*x'n/(2*xT)

B、3*x**n/(2*xT)

C、3*pow(x,n)*(1/(2*x-1))

D、3*pow(n,x)/(2*x'l)

【答案】C

8、若有如下定义,则是对数组元素的正确的引用inta[10],*p;

P=a;

A、*&a[10]

B、a[ll]

C、*(p+ll)

D、*p

【答案】D

9、以下叙述中正确的是o

A、转义字符要用双引号括起来,以便与普通的字符常量区分开

B、字符常量在内存中占2个字节

C、字符常量需要月单引号括起来

D、字符常量是不能进行关系运算的

【答案】C

【解析】B选项中,字符常量在内存中占1个字节;A选项中,转义字符是以反

斜线〃开头,后跟一个或几个字符;D选项中,字符常量可以进行关系运算,不能参

与数值运算。因此C选项正确。

10、在c语言中,以作为字符串结束标志

A、'\nf

B、,,

C、'0'

D、'W

【答案】D

11、以下定义数组中错误的是o

inta[10];

B、inta[2][20];

C、inta[20][];

D、inta[];

【答案】C

【解析】考查数组的定义方法。[解题要点]二维数面的二维不能省略。[考点

链接1数组的下标是从零开始的。

12、在c语言中,函数的数据类型是指()

A、函数返回值的数据类型

B、函数形参的数据类型

C、调用该函数时的实参的数据类型

D、任意指定的数据类型

【答案】A

13、以下运算符中,优先级最高的运算符是o

A、?:

B、++

C、&&

D、,

【答案】B

14、在printf的格式字符中,e格式字符的作用是。

A、以十六进制无符号形式输出整数

B、以带符号的十进制形式输出整数

C、以指数形式输巴实数

D、以字符形式输巴,且只输出一个字符

【答案】C

【解析】本题考查printf。函数的格式。格式字符“e”或者“E”都表示以指

数形式输出单精度或双精度数。

15、分析以下程序的运行结果()func(inta,intb)

(

inlt-a;

a=b;

b=t;

}

intmain()

(

intx,y;

x=10,y=20;

func(x,y);

printf(飞d,刎\n",x,y);

return0;

)

A、10,20

B、10,10

C、20,10

D、20,20

【答案】A

16、设j和k都是int类型,则for循环语句

for(j=0,k=-l;k=l;j+-,k++)printf(〃****\n");()<>

A、循环结束的条件不合法

B、是无限循环

C、循环体一次也无执行

D、循环体只执行一次

【答案】B

17、在下列程序段中,枚举变量cl,c2的值依次是o

enumcolor

(

rod,

yellow,

blue=4,

green,

white

)

cl,c2;

cl=yellow;

c2二white;

printf(/z%d,%d\n〃,cl,c2);

A、1,6

B、2,5

C、1,4

D、2,6

【答案】A

18、若有以下定义和语句charsi[10]="abed!",*s2="n有3\\";

printf(/z%d%d\n〃,strlen(sl),strlen(s2));

则输出结果是________O

A^55

B、105

C、107

D、58

【答案】A

19、不能把字符串〃he」o!〃赋给数组b的语句是

A^charb[10]='H','e','1','1','o',';

charb[10]=,h','e','1','1','o','!';

C、charbFlOl:strepy(b,"Hello!〃):

D、charb[10]=,,Hello!z,:

【答案】B

【解析】在C语言中,大写字母和小写字母被认为是两个不同的字符,因此,

“hello!”和“Hello:”是两个不同的字符串。

20、下列程序的输出结果是。

structstu

(

charnum[10];

floatscore[3];

)

f

intmain()

(

structstus[3]=

{{"20021〃,90,95,85},{"20022",95,80,75),「20023〃,100,95,90}};

structstu*p=s;

inti;

floatsum=0;

for(i=0;i<3;:++)

(

sum=sum+p->score[i];

}

prinlf(zz%6.21",sum);

return0;

)

A、260.00

B、270.00

C、280.00

D、285.00

【答案】B

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

()1、在同一个作用域中不可定义同名变量,在不同的作用域中可以定义同名变量。

【答案】正确

()2、函数的实参和形参可以是相同的名字

【答案】正确

()3、在switch语句中,case后可不加"{}”。

【答案】正确

()4、do-while循环中,根据情况可以省略while.()

【答案】错误

()5、用strcat(字符串1,字符串2)连接两个字符串函数时,字符串1的存储空间必须

足够大。

【答案】正确

()6、c程序总是从main函数的第一条语句开始执行的。)

【答案】正确

()7、字符串必须以‘0'结束,但字符数组可以不包括‘0'。

【答案】正确

()8、函数的实参传递到形参有两种方式:值传递和地址传递。

【答案】正确

()9、一维数组指的是只有■一个下标的数组,用来表示一组具有相同类型的数据。

【答案】正确

【解析】一维数组指的是只有一个下标的数组,它用来表示一组具有相同类型

的数据。

()10、c语言对文件读、写之前不必先打开文件,在使用文件之后无需关闭该文件,

【答案】错误

三、编程题(每小题分,共40分)

1、编程计算1*2*3+4*5*6+...+97*98*99的值。(本题10分)

【答案】^include

voidmain()

(

inti,n,sum=0;

for(i=l;i<=94;i=i+3)

sum=sum+i*(i+l)*(i+2);

printf(〃%d\n〃,sum);

)

2、编写程序:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印

出来。(本题14分)

【答案】^include<stdio.h>

intmain()

(

inti=5;

voidpalin(intn);

printf(〃请输入5个字符\40:\40〃);

palin(i);

printf(〃\n");

)

voidpalin(n)

intn;

(

charnext;

if(n<=l){

next=getchar();

printf(〃相反顺序输出结果\40:\40〃);

putchar(next);

}else{

next=getchar();

palin(n-l);

putchar(next);

)

)

3、有以下学生信息,使用结构体数组存储这些信息

structstudent(

intnum;〃学号

intcomputer;〃计算机成绩

}s[5]={{101,75},{103,80},{104,85},{106,90));

再输入一条新记录,插入到结构体数组中,让5条记录按计算机成绩升序有

序。

【输入形式】2个数据都使用空格分隔

【输出形式】分五行输出数据,每行数据均使用空格分隔

【输入样例】10288

【输出样例】每行数据均使用一个空格分隔,分五行输出

10175

10380

10485

10288

10690(本题16分)

【答案】Sinclude<stdio.h>

#include<stcllib.h>

structstudent

intnum;〃学号

intcomputer;〃计算机成绩

}s[5]={{101,75},{103,80},{104,85],{106,90}),tamp;

inLmain()

(

inti,j;

scanf("%d%d”,&s[4].num,&s[4].computer);

for(i=1;i<5;i++)

(

for(j=0;j<5-i;j++)

(

if(s[j].computer>s[j+l].computer)

{

tamp=s[j];

s[j]=s[j+l];

s[j-l]=tamp;

)

)

1

for(j=0;j<5;j++)

printf(/z%d%d\n,z,s[j].num,s[j].computer);

}

2023年计算机C语言期末精选样卷(四)

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

1、以下叙述正确的是o

A、可以把define和if定义为用户标识符

B、可以把define定义为用户标识符,但不能把if定义为用户标识符

C、可以把if定义为用户标识符,但不能把define定义为用户标识符

D、define和if都不能定义为用户标识符

【答案】B

【解析】C语言中的保留字,而define不是保留字。用户标识符不允许使用保

留字。

2、设a=5、b=6、c=10、d=8>m=2>n=5,执行(m=a>b)&&(n二c>d)后n的值为

A、1

B、5

C、3

D、4

【答案】B

3、以下选项中不属于c语言类型的是

A、signedshortint

unsignedchar

C、singedlong

D、longshorL

【答案】D

4、有以下程序

#include<stdio.h>

main()

(

inta=5,b=4,c=3,d=2;

if(a>b>c)

printf(〃%d\n”,d);

elseif((c-1>=d)=1)

printf(〃%d\n〃,d+1);

else

printf(〃%d\n〃,d+2);

}

执行后输出的结果是o

A、2

B、3

C、4

D、编译时有错,无结果

【答案】B

【解析】第二个if语句中的表达式"cT>=d”的值为逻辑值1,所以该条件

成立。

5、以下说法中不正确是o

A、使用while循环时,循环变量初始化的操作应在循环语句之前完成

B、while循环是先判断表达式,后执行循环体语句

C、dorvhile和for循环均是先执行循环体语句,后判断表达式

for,while和for-while循环中的循环体均可以由空语句构成

【答案】C

【解析】本题主要考查的知识点为for、while和do-while循环的特点。

[要点透析]for循环是先判断表达式,后执行循环体语句。

6、以下程序中函数scmp的功能是返回形参指针si和s2所指字符串中较小字

符串的首地址

^include<stdio.h>

ttinclude<string.h>

char*scmp(char*sl,char*s2)

(

if(strcmp(sl,s2j<0)return(si);

elsereturn(s2):

}

main()

(

inti;

charstring[20],str[3][20];

for(i=0;i<3;i+-)gets(str[i]);

strcpy(string,scmp(str[0]>str[l]));

/*库函数strcpy对字符串进行复制*/

sLrcpy(string,scmp(sLring,str[2]));

printf(/z%s\n/z,string);

)

若运行时依次输入:abed、abba和abc三个字符串,则输出结果为

A、abed

B、abba

C、abc

D^abca

【答案】B

7、b等于()

A、1000字节

B、1024字节

C、1000X1000字节

D、1024X1024字节

【答案】D

8、下面程序段的运行结果是________。

char*format="%s,a=%d,b=%d\n”;

inta=ll,b=10;

a+二b;

printf(format,〃a十二b”,a,b);

A、for,“a+二b〃,ab

B、format,"a+二b〃

C^a+=b,Q=21,b—10

D、以上结果都不对

【答案】C

【解析】字符串常量是由双引号括起来的一串字符,每一个字符串常量都分别

占用内存中一串连续的存储空间,这些连续的存储空间实际上就是字符型一维

数组。

9、有一个数值152,它与十六进制数6a相等,那么该数值是o

A、二进制数

B、八进制

C、十进制数

D、四进制数

【答案】B

10、下列选项中c语言中不合法的字符串常量的是o

A、〃\121〃

B、V

C、〃\n\n〃

D、z,ABCD\x6d\

【答案】B

【解析】字符串常量是由双引号括起来的一串字符,其中的双引号不可缺少。

由此可知,选项A)、0、D)都是合法的字符串常量,而选B)是一个字符常量。

11、下面的C程序完成的功能是O

ttdefineSIZE5

voidfunc(intdata[SIZE]);

main()

inti,buf[SIZE]:

printf(///zPleaseinput%dnumbersSIZE);

for(i=0;idata[j~l])

(

d=data[j];

data[j]=data[j+l];

dala[j+l]-d:

)

)

A、对一维数组降序排序

B、对一维数组升序排序

C、对一维数组逆向排序

D、对一维数组顺序排序

【答案】B

12、下列关于形参的说法,正确的是o

A、函数的形参是必须的

B、函数的形参可以是表达式

C、函数在定义时,形参是不占用存储空间的,只是在被调用时才会占,调

用完毕也就被释放了

D、形参的名称、类型、数量、顺序必须与实参都相同,否则实参不会把信

息正确地传递给形参

【答案】C

【解析】函数可以没有形参。表达式是一个值,不是变量,不能接受信息。

13、下面叙述中正确的是

A、对于用户自己定义的函数,在使用前必须加以声明

B、声明函数时必须明确其参数类型和返回类型

C、函数可以返回一个值,也可以什么值也不返回

D、空函数在不完成任何操作,所以在程序设计中没有用处

【答案】C

14、下列字符串中可以用作c标识符的是o

A、2009var

B、goto

C、test-2009

D、-123

【答案】D

【解析】在C中,变量标识符必须以大小写字母或下画线开始,是由数字或者

字母下画线等组成的一个字符串,其中C++关键字不能作为标识符,不能包含

-、+、*、/等运算符号。C++变量区分大小写。

15、有以下程序

#includes<stdio.h>

main()

(

inLa-1,b-2;

for(;a<8;a++)

(

b+=a;

a+=2;

)

printf("%d,%d\n",a,b);

}

程序运行后的输出结果是o

A、9,18

B、8,11

C、7,11

D、10,14

【答案】D

16、下面for语句的循环次数为()ofor(x=l,y=0;(y!=19)&&(x<

6);x++):

A、是无限循环

B、循环次数不定

C、最多执行6次

D、最多执行5次

【答案】D

17、以下程序的运行结果是

#include〃stdio.h"

main()

(

structdate(

intyear,month,day;

}today;

printf(〃%d\n”,sizeof(structdate));

}

A、6

B、8

C、10

D、12

【答案】A

【解析】在解答本题时应该考虑两个问题:结构体变量的长度及sizeofO求字

节数的运算符。结构体变量的长度是其内部成员总长度之和,本题中,struct

date中包含year,month,day三个整型变量。一个整型变量所占的字节数为

2。

18、语句"printf("a\bre"hi\'y\\\bou'n")的输出结果是

A、a\bre\'hi\'y'\\\bou

B、a\bre\*hi\\y\bou

C、re'hi'you

Dsabre,hi,y\bou

【答案】C

19、以下对一维数组a的正确说明是______

intn;scanf(〃%d〃,&n);inta[n];

intn=10,a[n];

C、inta(10);

D、SdefineSIZElOinta[SIZE];

【答案】D

20、设有以下说明语句:

typedefstructstu

(

inta;

floatb;

}stutype;

则下面叙述中错误的是。

A、struct是结构类型的关键字

B、structstu是用户定义的结构类型

C、a和b都是结构成员名

D、stutype是用户定义的结构体变量名

【答案】C

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

()1、宏定义在行末不加分号。

【答案】正确

()2、注释语句参加程序的编译和运行,会影响执行速度。

【答案】错误

()3、if语句中的表达式不限于逻辑表达式,可以是任意的数值类型

【答案】正确

()4、continue语句可用于循环体内,它将退出当前循环。

【答案】正确

()5、字符串"this"大于字符串"that"

【答案】正确

()6、在标准c语言中,main函数必

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论