海南医学院C语言程序设计期末样卷(八套)含答案_第1页
海南医学院C语言程序设计期末样卷(八套)含答案_第2页
海南医学院C语言程序设计期末样卷(八套)含答案_第3页
海南医学院C语言程序设计期末样卷(八套)含答案_第4页
海南医学院C语言程序设计期末样卷(八套)含答案_第5页
已阅读5页,还剩81页未读 继续免费阅读

下载本文档

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

文档简介

海南医学院

C语言程序设计期末精选样卷(一)

总分:【100分】考试时间:【90分钟】

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

()1、若变量已正确定义并赋值,表达式-k++等价于—

A、-(k++)

B、-(k+1)

C、-(++k)

D、(-k)++

()2、下列赋值语句错误的是o

A、A

B、i==0;

C、i=i+l:

D^i+=l:

()3、有以下程序:

main()

(

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

if(a>b)if(b>c)printf("%d”,d+++1);

elseprintf("%d”,++d+l);

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

)

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

A、2

B、3

C、43

D、44

()4、以下不正确的是______o

A、语句for(i=0:;i++)表示无限循环

B、for(;;)表示无限循环

C、for0也表示无限循环

第1/86页

D、while。)表示无限循环

)5、c语言中数组名作为参数传递给函数,作为实在参数的数组名被处理为一

A、该数组的长度

B、该数组的元素个数

C、该数组中各元素的值

D、该数组的首地址

)6、若变量x、y已正确定义并赋值,以下符合c语言语法的表达式是o

A、++x,y=x一

B、x+l=y

C、x=x+10=x+y

D、double(x)/10

)7、下列选项中,能够正确定义数组的语句是0

A、intnum[0..2008];

B、intnum[];

C、intN=2008;

D、^defineN2008

intnum[N];intnum[N]

)8、以下叙述中错误的是0

A、可以通过typedef增加新的类型

B、可以用typedef将已存在的类型用一个新的名字来代表

C、用typedef定义新的类型名后,原有类型名仍有效

D、用typedef可以为各种类型起别名,但不能为变量起别名

)9、\、/、mod、*等4个算术运算符中,优先级最低的是。

A、\

B、/

C、Mod

D、*

)10、与实际参数为实型数组名相对应的形式参数不可以定义为o

A、floata口;

B、float*a;

C、floata;

D、float(*a)[3];

第2/86页

)H、若有定义语句:chars口0」="1234567沿\0";则strlen(s)的值是—

A、7

B、8

C、9

D、10

)12、运算符的优先级最高。

A、[]

B、+=

C、?:

D、++

)13、以下程序的输出结果是_____-

main()

(

inti,x[3][3]={9,8,7,6,5,4,3,2,1},*P=&x[l][1];

for(i=0;i<4;i+=2)printfp[i]);

)

A、52

B、51

C、53

D、97

)14、定义结构体的关键字是o

A、union

B>enum

C、struct

D>typedef

)15、有以下程序#include<stdio.h>

mainO(

inta=l,b=2;

while(a<6){

b十二a;

a+=2;

b%=10;

}

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

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

A、5,11

第3/86页

B、7,1

C、7,11

D、6,1

)16、下列程序段的输出结果为ointy=l;while(y—);printf(/zy=%d\nz/,y);

A、y=-l

B、y=0

C、死循环

D、y=9

)17、设有下面的定义:

structst

(

inta;

floatb;

}d;

int*p;

要使P指向结构变量d中的a成员,正确的赋值语句是o

A、*p=d.a;

B、p=&a;

C、p=d.a;

D、p=&d・a;

)18、”现有程序:main。

(

int*ptr,*p[5],i;

if((ptr=malloc(100*sizeof(int)))!=null)

{

p[0]=ptr;

for(i=l;i<5;i++)p[i]=p[i-l]+7;

for(i=0;i<100;i++)*ptr++=i;

for(i=0;i<5;i++)printf*p[i]);

)

)

其输出结果是J

A、17142728

B.07142228

C、07132228

D、07142128

)19、若有以下的说明和语句,则在执行for语句后,*(*(pt+l)+2)表示的数组元素是

第4/86页

intt[3][3],

*pt[3],k;

for(k=0;k<3;k++)pt[k]=&t[k][0];

A、t[2][0]

B、t[2][2]

C、t[l][2]

D、t[2][l]

()20、下面定义结构变量的语句中错误的是o

A、structstudent(

intnum;charname[20];

}s;

B、struct{

intnum;charname[20];

}s;

C、structstudent{

intnum;charname[20];

);

structstudents;

D、structstudent{

intnum;charname[20];

);

students;

二、填空题(共10题,每题2分,共计20分)

1、在C语言中,每个变量都具有存储类别属性。存储类别是指数据在内存中存储的方法。并且存

储方法分为类。

2、开发一个c程序要经过编辑、编译、()和运行4个步骤、

3、设inta=12,则表达式a/=a+a运算后,a的值是______。

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

main()

(

intx;

printf("%d\n”,(x=2*4,x+5));

)

5、执行下列程序段后,输出的a的值是-

main()

第5/86页

inta=2;

switch(a)

(

case0:a一;

break;

case1:a++;

break;

case2:a=a+5;

break

)

printf(〃%d〃,a);

)

6、以下程序运行后的输出结果是o

main()

(

inti,m=0,n=0,k=0;

for(i=9;i<=ll;i++)switch(i/10)

(

case0:m++;

n++;

break;

case10:n++;

break;

default:k++;

n++;

)

printf(,z%d%dm,n,k);

)

7、c语言中对文件读写之前必须先打开文件,文件的打开是通过调用函数来实现。

8、设有如下宏定义

#defineMYSWAP(z,x,y)

x=y;

y=z;

)

以下程序段通过宏调用实现变量a、b内容交换,请填空。floata=5,b=16,c;

MYSWAP(,a,b);

9、intx=6,y=7;

printfC%d/,x++);

printf(//%d\n,/,++y);

程序的输出结果是O

10、以下程序的输出结果是一一_。

第6/86页

main()

(

floatx;

printfC%.4f\n〃,(x=2*4,x+0.5));

三、编程题(共3题,每题分值不等,共计40分)

1、编写程序:删除一个字符串中的指定字母,如:字符串"aca”,删除其中的a字母。(本

题10分)

2、编写程序:判断一个素数能被几个9整,比如:

请输入一个素数:

13

素数13能整除6个9组成的数999999(本题14分)

3、输入某班30位学生的姓名及数学、英语成绩,计算每位学生的平均分然后输出平均分最高的

学生的姓名及其数学和英语成绩,使用结构体实现.(本题16分)

第7/86页

【C语言程序设计期末精选样卷(一)参考答案】

一、单项选择题

1、A

2、B

3、A

【解析】本题考查嵌套if语句中else的配对。本题中else和第二个if即if(b>c)配对。由于a>b不

成立,因此整个程序只输出printf("%d\n",d),即输出2。

4、C

5、D

【解析】数组作为函数参数时,传入的是该数组的首地址。

6、A

【解析】选项A)为C语言中的逗号表达式。赋值表达式的左侧不能是表达式。在进行强制类型转换

时,数据类型两边的圆括号不能省略。

7、D

8、A

9、C

【解析】[知识点]模块/VBA编程基础

在一个表达式中进行若干操作时,每一部分都会按预先确定的顺序进行计算求解,称这个顺序为运

算符的优先顺序。而算术表达式的优先顺序从高到低分别为:指数运算(八)、负数(-)、乘法和除法

(*、/)、整数除法(\)、求模运算(Mod)、加法和减法(+、-)、小字符串连接(&)。

10、C

11、B

【解析】C语言中strlenO函数的功能是返回字符串的长度,其中‘\0'是一个转义字符,它占存储空

间,但不计入串的长度。所以选项B正确。

12、A

13、C

14、C

15、B

16、A

【解析】当y—返回0时,while语句停止循环,此时y=T。

17、D

【解析】本题主要考查按结构数组元素方式引用结构成员。结构体变量的成员引用方法有3种:①结

第8/86页

构体变量名,成员名;②指针变量名成员名;③(*指针变量名).成员名。因为P是指针变量,所

以应该将地址值赋给P。

18、D

19、C

20、D

二、填空题

1、2#两

2、连接

3、0

4、13

5、7

6、['132']

7、fopen#fopen()#fopen()

8、c

9、6,8

10、8.5000

三、编程题

1、#include<stdio.h>

#include<stdlib.h>

#include<string.h>

//删除字符串中指定字母函数

char*deleteCharacters(char*str,char*charSet)

(

inthash[256];

if(NULL二二charSet)

returnstr;

for(inti=0;i<256;i++)

hash[i]=0;

for(inti=0;i<strlen(charSet);i++)

hash[charSetEi]]=1;

intcurrentindex=0;

for(inti=0;i<strlen(str);i++)

(

if(!hash[str[i]])

str[currentIndex++]=strEi];

第9/86页

str[currentIndex]='\0';

returnstr;

intmain()

(

chars[2]=〃/;//要删除的字母

chars2[5]=〃aca〃;//目标字符串

printf(〃%s\n〃,deleteCharacters(s2,s));

return0;

)

2、#include<stdio.h>

#include<stdlib.h>

intmain()

(

intp,i;

longintsum=9;

printf(〃请输入一个素数:\n〃);

scanf(〃96d〃,&p);

for(i=l;;i++)

if(sum%p==0)break;

elsesum=sum*10+9;

printf(〃素数%d能整除刎个9组成的数961d\n〃,p,i,sum);

return0;

)

3、#include<stdio.h>

SdefineSIZE50

structstudent

(

charname[10];

intmath,eng;

floataver;

);

intmain()

(

structstudentstu[SIZE];

inti,maxstd=0;

for(i=0;i<SIZE;i++)

(

scanf(z,%s%d%d,z,stu[i].name,&stu[i].math,&stu[i].eng);

stu[i].aver=(stu[i].eng+stu[i].math)/2.0;}

for(i=l;i<SIZE;i++)

if(stu[i].aver>stu[maxstd].aver)maxstd=i;

第10/86页

printf(,z%10s%3d%3d\nz,,stu[maxstd].name,stu[maxstd].math,stu[maxstd].eng);

第11/86页

海南医学院

C语言程序设计期末精选样卷(二)

总分:【100分】考试时间:【90分钟】

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

()1、关于二进制的说法中,正确的是。

A、所有的信息只能用二进制代码来表示

B、计算机一般都使用二进制代码,用它的某种信息编码方式来表示信息

C、ASCH是计算机用来表示文字符号的唯一一种二进制代码

D、汉字在计算机内使用汉字国标码来表示,不使用二进制编码

()2、表达式,0xl3&0xl7的值是o

A、0x17

B、0x13

C、0xf8

D、Oxec

()3、下列说法中不正确的是0

A、switch语句功能可以由if-else语句实现

B、若用于比较的数据类型为double,则不能用switch语句来实现

C、if-else语句的执行效率总是比switch语句高

D、case子句可以有多个语句,并且不需要用大括号””括起来

()4、c语言中下列叙述正确的是______»

A、不能使用do...while语句构成的循环

B、do...while语句构成的循环,必须用break语句才能退出

C、do...while语句构成的循环,当while语句中的表达式值为非零时结束循环

D、do...while语句构成的循环,当while语句中的表达式值为零时结束循环

()5、有以下程序

voidfun(char**D)

(

++P;

printf("%s",*p);

}

mainO

第12/86页

char*a[]={"Mornin9","Afternoonw,"Evening","Night”};

fun(a):

)

程序的运行结果是。

A、Afternoon

B、fternoon

C、Morning

D>orning

)6、下面单位换算中,正确的是o

A、1KB=1024X1024B

B、1KB=1O24MB

C、1MB=1O24X1O24B

D、1GB=1024B

)7、执行下面的程序段后,变量k的值为ointk=3,s[2];s[0]=k;k=s[l]*10;

A、不定值

B、33

C、30

D、10

)8、调试程序是指对程序进行

A、编辑

B、编译

C、查错和排错

D、连接

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

A、2009var

B、goto

C、test-2009

D、-123

)10、下列描述中,正确的一条是o

A、关系表达式的值是一个逻辑值,即“真”或“假”,可以赋给一个逻辑变量

B、在C语言中,判断一个量是否为:真”时,以0代表“假”,以1代表“真”.

C、设a=3、b=4、c=5,则表达式!(x=&&(y=&&0的值为0

第13/86页

D、一个数组的各个数组元素可属于不同的数据类型

)11、以下程序有语法错误,有关错误原因的正确说法是

main()

(

intg=5,k;

voidprt_char();

k=prt_char(g);

)

A、语句voidprt_char();有错,它是函数调用语句,不能用void说明

B、变量名不能使用大写字母

C、函数说明和函数调用语句之间有矛盾

D、函数名不能使用下划线

)12、下列关于表达式的描述中,错误的是o

A、常量和变量都是表达式

B、运算符类型对应表达式的类型

C、每一个表达式都有自己的值

D、表达式必须以分号结尾

)13、是构成c语言程序的基本单位。

A、函数

B、过程

C、子程序

D、子例程

)14、设有如下定义:

structsk

(

inta;

floatb;

)

data,*p;

若有p=&data;

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

A、(*p).data.a

B、(*p).a

C、p->data.a

第14/86页

D、p.data,a

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

main()

(

chara[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5;

printf*一p);

}

A、非法

B、a[4]的地址

C、5

D、3

)16、以下叙述中正确的是o

A、while循环的循环体至少执行1次

B、while循环的循环控制条件比do-while循环的循环控制条件复杂

C、do-while循环体不能是复合语句

D、do-whil循环的循环体至少执行1次

)17、有以下程序

ttinclude<stdio.h>

structtt

(

intx;

structtt*y;

)

*p;

structtta[4]={20,a+1,15,a+2,30,a+3,17,a};

main()

(

inti;

p=a;

for(i=l;i<=2,i++)

(

printf(,z%d,",p->x);

p=p->y;

)

)

程序的运行结果是o

A、20,30,

B、30,17

第15/86页

C、15,30,

D、20,15

)18、有以下程序:

voidfun2(chara,charb)

(

printf("%c%c”,a,b);

}

chara-a,b=,b,;

voidfunl()

(

,,

a=c;

b=,d';

)

mainO

(

funl();

printf(〃%c%c〃,a,b);

fun2Ce','f');

)

程序的运行结果是。

A、CDEF

B、ABEF

C、ABCD

D、CDAB

)19、在下面的字符数组定义中,哪一个有语法错误。

A、chara[20]="abcdefg”;

B、chara[]="x+y=55.”;

C、chara[15];

D、chara[10]=5;

)20、设有结构体的定义如下:

structdata

(

charcl;

charc2;

)

»

则sizeof(structdata)的值是。

A、2

B、3

第16/86页

C、4

D、5

二、填空题(共10题,每题2分,共计20分)

1、若有inta[3]={l,2,3};则*(a+D+l=________。

2、在C语言的表达式中,x=x+5用复合运算符可以写成。

3、表达式2.8+3/4=。

4、共用体类型变量的定义关键字是。

5、下列程序段的运行结果是o

main()

(

intn,s=0;

for(n=l;n<=6;n++)

(

if(n%3-0)continue;

s=s+n;

)

printf("%d\n',s);

)

6、写出下列程序的运行结果。

main()

(

intn;

for(n=3;n<=10;n++)

(

if(n%6==0)break;

printfn);

)

)

7、一个c语言源程序由若干函数组成,其中至少应含有一个()

8、在c语言中,一个函数一般由两个部分组成,它们是[1】和【2】。

9、下面程序的运行结果是o

main()

(

inti,f[10];

f[O]=f⑴=1;

for(i=2;i<10;i++)f[i]=f[i-2]+f[i-l];

for(i=0;i<10;i++)

第17/86页

if(i%4=0)printf("\n");

printf("%3d",f[i]);

10、下列程序段的运行结果是—

main()

(

intm=l,t=l;

for(;;)

(

m=m+t;

t++;

if(m>9)break;

)

printf("%d\n”,m);

三、编程题(共3题,每题分值不等,共计40分)

1、编写程序,使用循环结构输出下列图形:(本题10分)

2、将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。(本题14分)

3、计算n名学成绩的平均分并通过函数返回。要求:

结构体代码如下:

structStudentScore{

doublescore;

);(本题16分)

第18/86页

【C语言程序设计期末精选样卷(二)参考答案】

一、单项选择题

1、B

【解析】计算机不只是能用二进制,还有八进制、十进制、十六进制。

2、B

3、C

【解析】并不是所有的if-else语句的执行效率都高于switch语句,在一些特定的情况下,switch

语句可以比较简炼,同时容易阅读,因此,选项C的描述是错误的。

4、D

【解析】选项A是错误的,C语言支持do…while语句;选项B是错误的,do…while构成的循环,当

while语句中的表达式值为零时结束循环,而不是非零;选项C也是错误的。

5、A

6、C

【解析】存储器容量常用的单位有KB、MB、GB、TB,换算关系如下:1TB=1O24GB

=1024X1024MB=1024X1024X1024KB=1024X1024X1024X1024B

7、A

【解析】解本题考核数组元素的初值及其引用。若数组为auto型,且没有进行初始化,其元素的值

为不确定。本程序中,虽然给s[0]赋了一个初值,但s[l]的值依旧是不确定的,所以执行语

句"k=s[l]*10”后,k的值也不确定的。

8、C

9、D

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

个字符串,其中C++关键字不能作为标识符,不能包含-、+、*、/等运算符号。C++变量区分大小

写。

10、D

11>C

【解析】在C语言中,对于返回值是其他类型的函数,若把函数定义放在调用之后,应该在调用之前

对函数进行说明,或称为函数原型说明。函数说明句中的类型必须与函数返回类型一致,函数说明

可以是一条独立的语句,也可以与普通变量一起出现在同一个语句中。对于函数值为整型的函数的

说明,prt_char中定义时是void类型,那天返回值与k=prt_char();矛盾。所以本题的错误之处在

于“函数说明和函数调用语句之间有矛盾。”

12、D

【解析】语句必须以分号结尾,表达式不是必须以分号结尾,表达可以嵌套。

13、A

第19/86页

14、B

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

15、C

16、D

【解析】do-whilewhile-w-和的主要区别在于do-不进行条件判断,先进入循环体执行一遍再判断

是否可以继续循环,而while则是先进行条件判断再决定是否进入循环体执行。dowhile循环的循

环体至少执行1次。本题答案为D选项。

17、D

18、A

19、D

【解析】[考点分析]考查声明数组的语法格式。

选项D的定义右语法错误。赋值号右边的字符应该是用双引号括起来。

20、A

二、填空题

1、3

2、x+=5

3、『2.8']

4、union

5、12

6、345

7、主函数(或main函数)。

8、[1]函数声明【2】函数体

9、参考答案:11235813213455

10、11

三、编程题

1、****

****

****

****

****

#include

voidmain()

inti,j,k;

第20/86页

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

(

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

printf(z,〃);

for(k=0;k<4;k++)

printf(〃*〃);

printf(〃\n〃);

)

printf(〃\n〃);

)

2、程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:

⑴如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。

(2)如果n〈>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第

一步。

⑶如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

程序源代码:

main()

(

intn,i;

printf(,z\npleaseinputanumber:\nz,);

scanf(〃%d〃,&n);

printf(〃/d=〃,n);

for(i=2;i<=n;i++)

(

while(n!=i)

(

if(n%i=0)

{printf(〃%d*〃,i);

n二n/i;

)

else

break;

}

)

printf(〃%d〃,n);

)

3^doubleFun(structStudentScore*a,intn){

inti;

doublesum=0.0;

for(i=0;i<n;i++)

(

sum+=a[i].score;

returnsum/n;

第21/86页

)

intmain()

structStudentScorea[100];

intn;〃学数量

inti;

printf("请输学数量:”);

scanf&n);

for(i=0;i<n;i++)

{

printf("请输第%d个学的成绩:",i+1);scanf&a[i].score);

)

printf(级If”,Fun(a,n));

return0;

)

请输学数量:3

请输第1个学的成绩:90

请输第2个学的成绩:100.0

请输第3个学的成绩:80

90,000000

第22/86页

海南医学院

C语言程序设计期末精选样卷(三)

总分:【100分】考试时间:【90分钟】

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

()1、指针变量p进行自加运算(即执行P++;)后,地址偏移值为4,则其数据类型为o

A、int

B、float

C>double

D、char

()2、以下说法中正确的是o

A、^define和printf都是C语句

B、#define是C语句,而printf不是。

C、printf是C语句,但#define不是0

D、ttdefine和printf都不是C语句

()3、设变量x和y均已正确定义并赋值。以下if语句中,在编译时将产生错误信息的是一

A、if(x++);

B、if(x>y&&y!=0);

C、if(x>0)x-elsey++;

D、if(y<0){;}elsex++;

()4、语句for(k=0;k<5;++k)

(

if(k=3)continue;

printf(,z%d,z,k);

)

的输出结果为

A、012

B、0124

C、01234

D、没有输出结果

()5、以下叙述中错误的是_____o

A的将的余然1/古布葡1、1伴同处•由的才余

第23/86页

n3|外人7勿UYLS.LLSMJ匕人I?曰R八:JATLUY六少

B、函数调用可以作为一个独立的语句存在

C、若函数有返回值,必须通过return语句返回

D、C程序必须由一个或一个以上的函数组成

)6、设向量i+2j+3k与2i+mj+6k垂且,则m=()

A、4

B、-4

C、10

D、-10

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

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

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

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

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

)8、如果逻辑与(and)运算的结果为〃真〃,与它所连接的两个条件必须是—

A、前一个为“真”,后一个为“假”

B、前一个为“假”,后一个也为“假”

C、前一个为真,后一个也为真

D、前一个为假,后一个为真

)9、设char*s="\ta\017bc”;

则指针变量s指向的字符串所占的字节数是。

A、9

B、5

C、6

D、7

)10>有语句charstrl[10],str2[10]={"china"};

则能将字符串china赋给数组strl的正确语句是。

A、strl={"china"};

B、strcpy(strl,str2);

C、strl=str2;

D、strcpy(str2,strl);

)11、以下叙述中正确的是o

A、C语言的源程序不必通过编译就可以直接运行

第24/86页

B、C语言中的每条可执行语句最终都将被转换成二进制的机器指令

C、C源程序经编译形成的二进制代码可以直接运行

D、C语言中的函数不可以单独进行编译

)12、以下选项中,当x为大于1的奇数时,值为0的表达式是。

A、x%2==l

B、x/2

C、x%2!=0

D、x%2==0

)13、在c语言中,调用函数除函数名外,还必须有o

A、函数预说明

B、实际参数

C、()

D、函数返回值

)14、以下对c语言中共用体类型数据的叙述正确的是o

A、可以对共用体变量名直接赋值

B、一个共用体变量中可以同时存放其所有成员

C、一个共用体变量中不可以同时存放其所有成员

D、共用体类型定义中不能出现结构体类型的成员

)15、有以下程序

main(){

inti,j,m=55;

for(i=l;i<3;i++)for(j=3;j<=++)m=m%j;

printf("%d\n',m);

)

程序的运行结果是O

A、0

B、1

C、2

D、3

)16、有以下程序:

main()

ints=0.n;

for(n=0;n<3;n++)

第25/86页

switch(s)

case0;

easel:s+=l;

case2:s+=2;

break;

case3:s+=3;

default:s+=4;

}

printf("%d,"s);

)

)

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

A、1,2,4,

B、1,3,6,

C、3,10,14,

D、3,6,10,

)17、以下关于c语言数据类型使用的叙述中错误的是o

A、若要准确无误差地表示自然数,应使用整数类型

B、若要保存带权多位小数的数据,应使用双精度类型

C、若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型

D、若只处理“真”和“假”两种逻辑值,应使用逻辑类型

)18、下列程序段运行后从键盘输入一个大写字母q,输出结果是charch;ch=getchar();

ch=ch-'a+'a;putchar(ch);

A、Q

B、q

C、A

D、a

)19、要定义整型数组x,使之包括初值为0的三个元素,下列语句中错误的是o

A、intx[3]=0,0,0;

B、intx[]=0;

C、staticintx[3]=0;

D、intx[]=

)20、有以下定义和语句:

structstudents{

intnum;

charname[20];

第26/86页

charc;

struct{

intgrade1;

intgrade2;

}s;

);

structstudentsw,*pw;

*pw=w;

下列赋值语句不正确的是O

A^num=1002;

B、w.grade1=85;

C、pw->num=1002;

D>w.s.grade2=85;

二、填空题(共10题,每题2分,共计20分)

1、C语言标识符的第一个字符必须为下划线或者O

2、双精度型数据有效位为位

3、设y为int型变量,请写出描述“y是奇数”的表达式______。

4、已知charstr[]="happy!”,则strlen(str)的值为。

5、if语句与语句一起可以构成循环结构。

6、有以下程序

#include<string.h>

main()

(

chara[]={)a,,,b,,,c,,,d,,,e,,,F,,\0,};

intj;

j=strlen(a);

printf("%d\rT,j);

}

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

7、编译预处理包括宏定义、文件包含、()等。

8、在传值调用中,实际是把实参的。

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

Sinclude<stdio.h>

main()

intk=l,s=0;

第27/86页

do

if((k%2)!=0)continue;

s+=k;

k++;

)

while(k>10);

printf(z/s=%d\n,z,s);

)

10>#include<stdio.h>

voidmain()

(

inta[3][3]={{l,2},{3,4},{5,6}},i,j,s=0;

for(i=l;i<3;i++)for(j=0;j<i;j++)s+=a[i][j];

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

三、编程题(共3题,每题分值不等,共计40分)

1、编写程序:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分

之间的用B表示,60分以下的用C表示。(本题10分)

2、编写程序:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加

密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第

二位和第三位交换。(本题14分)

3、编写程序:利用结构体类型,编程计算一名同学5门课的平均分。(本题16分)

第28/86页

【C语言程序设计期末精选样卷(三)参考答案】

一、单项选择题

1、A

2、D

3、C

【解析】C语言规定,在“if(表达式)语句l;else语句2;”这种形式的if语句中,在每一个else前

面有一个分号,整个语句结束处有一分号。在本题的C)选项中,else前面少了一个分号,这样程序

在编译时,会出现语法错误。

4、B

5、A

【解析】函数参数传递是个不可逆的过程,形参不会把值传回实参,所以A选项错误。

6、D

【解析】两向量a与b垂直的充要条件是a-b=O

由题意知(i+2j+3k)•(2i+mj+6k)=2+2m+18=0.\ni=-10

7、C

8、C

9、C

10、B

11、B

12、D

【解析】因为x的值为大于1的奇数,所以x除以2的余数等于1,因此,选项A)、C)中表达式的结果

为真,不为0;对于选项B)来说,x除以2的商不会等于0;选项D)中表达式的结果为假,即等于0。

13、C

14、C

15、B

16、C

17、D

18、B

19、D

【解析】选项D中整型数组x的第一个元素是NULL不是0,故选D。

20、B

【解析】本题主要考查的是结构体变量的嵌套定义,也就是说一个结构体变量也可以是一个结构

第29/86页

体。在本题中student这个结构体中包含了结构体s。所以对结构体变量w中gradel成员的引用是

w.s.gradel^w->s->grade1»

二、填空题

1、字母

2、15〜16#15到16#15#16

3、y%2!=0;

4、6

5、goto

6、6

7、条件编译

8、地址传给形参

9、['s=0']

10、14

【解析】该程序即计算+a[2][0]+a[2][1]的值,对应数组中的数为:3+5+6=

14。

三、编程题

1、#include<stdio.h>

intmainO

(

intscore;

chargrade;

printf("请输入分数:”);

scanf(“畀d”,&score);

grade=(score>=90)?'A":((score>=60)?'B':"C');

printf("%c\n",grade);

return0;

)

2、mainO

(

inta,i,aa[4],t;

scanf&a);

aa[0]=a%10;

aa[l]=a%100/10;

aa[2]=a%1000/100;

aa[3]=a/1000;

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

aa[i]+=5;

第30/86页

aa[i]%=10;

)

for(i=0;iV=3/2;i++)

(

t=aa[i];

aa[i]=aa[3-i];

aa[3-i]=t;

)

for(i=3;i>=0;i一)printf("%d〃,aa[i]);

)

3、structstudent(

charname[30];

floatscore[5];

);

intmain(intargc,constchar*argv[])

{

structstudenta={〃zhangsan〃,20,30,40,50,60);

floatsum=0;〃定义一个5科分数之和变量

floatAverageScore=0;〃定义一个平均分变量

for(inti=0;i<5;i++){

sum=sum+a.scorefi];

AverageScore=sum/5;

)

printfC姓名%s\n5科成绩平均分是:%.If分〃,a.name,AverageScore);

return0;

第31/86页

海南医学院

C语言程序设计期末精选样卷(四)

总分:【100分】考试时间:【90分钟】

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

()1、在微机汉字系统中,一个汉字的机内码占的字节数是o

A、1

B、2

C、4

D、8

()2、b等于()

A、1000字节

B、1024字节

C、1000X1000字节

D、1024X1024字节

()3、下列描述正确的是o

A、表示m>n为true或mVn为true的表达式为m>n&&m<n

B、switch语句结构中必须有default语句

C、if语句结构中必须有else语句

D、如果至少有一个操作数为true,则包含||运算符的表达式为true

()4、分析下列程序,其最终执行结果是o

main()

(

intn[3],i,j,k;

for(i=0;i<3;i++)n[i]=o;

k=2;

for(i=0;i<k;i++)for(j=0;j<k;j++)n[j]=n[i]-l;

printf("%d\n",n[0]);

)

A、-2

B、-1

C、0

温馨提示

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

评论

0/150

提交评论