河南中医药大学计算机C语言期末复习题(含六卷)含答案_第1页
河南中医药大学计算机C语言期末复习题(含六卷)含答案_第2页
河南中医药大学计算机C语言期末复习题(含六卷)含答案_第3页
河南中医药大学计算机C语言期末复习题(含六卷)含答案_第4页
河南中医药大学计算机C语言期末复习题(含六卷)含答案_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

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

文档简介

河南中医药大学计算机C语言期末复习题(一)

考试方式:【闭卷】考试时间:【90分钟】总分:【100分】

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

1、以下标识符中,不合法的是O

A、4d

B、_8_d

C、int

D、key

【答案】A

2、下列不属于整型变量的类型是。

A、byte

B、short

C、float

D、long

【答案】c

3、if语句的基本形式为:if(表达式)语句,其中"表达式"=

A、可以是任意合法的表达式

B、必须是逻辑表达式

C、必须是逻辑表达式或关系表达式

D、必须是关系表达式

【答案】A

【解析】本题考查if表达式。if(表达式)中的表达式可以为任何合法的表达

式,一般情况下为逻辑、条件表达式,需要注意的是,当等号(==)误写为赋值

号(二)时不会报错的,但是其值恒为1。

4、下面程序的输出结果是.

main()

inti,k=0,a=0,b=0;

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

k++;

if(k%2==0)

a=a+k;

continue;

b=b+k;

a二a+k;

printf(nk=%da=%db=%d\nn,k,a,b);

)

A、k=5a=10b=4

B、k=3a=6b=4

C、k=4a=10b=3

D、k=4a=10b=4

【答案】D

5、下列不正确的定义是o

A、int*p=&i,i;

B、int*p,i;

C、inti,*p=&i;

D、inti,*p;

【答案】A

6、设a、b和c都是int型变量。且a=3,b=4,c=5,则以下的表达式中值为0的

表达式是O

A、a&&,b

B、a<=b

C、a||b+c&&b~c

D、!(<a<B)&&!C|11)

【答案】D

7、下面程序的运行结果是

#include<stdio.h>

main()

{

inta=28,b;

chars[10],*p;

p二s;

do

{

b=a%16;

if(b<10)*p=b+48;

else*p=b+55;

p++;

a二a/5;

while(a>0);

*p='\0';

puts(s);

A、10

B、C2

C、C51

D、\0

【答案】C

【解析】考查用字符指针处理字符串的方法。[解题要点]语句“p=s;”是使

指针P指向字符数组s。*p则引用了p所指位置的数组元素。[考点链接]通

过指针来引用一维数组元素。

8、以下标识符中,不能作为合法的c用户定义标识符的是0

A、a3_b3

B、void

C、_123

D、IF

【答案】B

9、下列选项中,值为1的表达式是o

A、1-'0'

B、1-'\0'

C、T-0

D、’'0','0'

【答案】B

【解析】在C程序中,字符量可参与任何整数运算。字符参与运算时,首先要

将字符转换为对应的ASCH码值再参与整数运算。字符对应的ASCII码值是

49,字符'0'对应的ASCII码值是48,字符''0'是字符串结束标识符NULL,其

对应的ASCII码值是0。

10、已有定义:chara[]="xyz",b[]={'x','y','z'};以下叙述中正确的是

A、数组a和b的长度相同

B、a数组长度小于b数组长度

C、a数组长度大于b数组长度

D、上述说法都不对

【答案】C

11、c语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是

A、void

B、int

C、float

D、double

【答案】B

12、根据数制的基本概念,下列各进制的整数中,值最大的一个是o

A、十六进制数10

B、十进制数10

C、八进制数10

D、二进制数10

【答案】A

【解析】分别将四个数转换为十进制为16,10,8,2。

13、在执行intarr[][3]={1,2,3,4,5,6},语句后,arr[l][0]的值为

A、4

B、1

C、2

D、5

【答案】D

【解析】该二维数组表示的是2行3列的一个二维数组,arr[l][0]表示的是第

2行第1列上的元素,即4。

14、有以下定义和语句

structworkers

(

intnum;

charname[20];

charc;

srruct

(

intday;

intmonth;

intyear;

)

s;

);

structworkersw,*pw;

pw=&w能给w中year成员赋1980的语句是。

A、*pw.year=1980;

B、w.year=1980;

C、pw->year=1980;

D、w.s.year=1980;

【答案】D

15、若运行时给变量x输入12,则以下程序的运行结果是。

main()

{

intx,y;

scanf(n%dn,&x);

y=x>12?x+10:x-12;

printf(n%d\nn,y);

)

A、3

B、22

C、1

D、0

【答案】D

16、判断关键字*_________不是关键字。

A、int

B、extern

C、break

D、main

【答案】c

17、下列选项中不属于c语言的数据类型是o

A、复数型

B、逻辑型

C、双精度型

D、集合型

【答案】A

【解析】在C语言中,数据类型可分为基本数据类型、构造数据类型、指针类

型、空类型4大类,其中基本类型;字符型、整型、实型(单精度型和双精度

型)、枚举类型。构造类型:数组、结构体、公用体。选项B中的逻辑型和C中

双精度类型都属于基本数据类型,选项D集合类型属于构造类型;而选项A复

数型不是C语言的数据类型。

18、以下语句段执行后的输出结果是

#include<stdio.h>

main()

intk=3;

if(k)printf("###")elseprintf("&&&&");

A、###

B、&&&&

C、###&&&&

D、有语法错误,不能执行

【答案】D

【解析】在C语言中语句结束时应该以分号结尾,程序中的第1个

printf("期愣')输出语句后面少了一个分号(;),因此执行程序时会出错。

19、定义如下变量和数组:inti;intx[3][3]={1,2,3,4,5,6,7,8,9}则下

面语句的输出结果是ofor(i=0;i<3;i++)printf("%d",x[i][2-

1]);

A、258

B、147

C、357

D、369

【答案】A

20、以下对枚举类型名的定义中正确的是。

A、enuma={sum,mon,tue);

B、enuma{sum=9,mon=-l,tue);

enuma={sum,mon,tuej;

D、enumatrnsumH,mon!i,nt.uen1);

【答案】B

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

1、数学表达式100<a或者a<-20改写为c语言表达式是注:表达

式要在英文半角状态下按原表达式顺序书写,且表达式中不要留空格。

【答案】100<alla<-20#a<-2011100<a#a>10011a<-20#a<-2011a>

100#100<all-20>a#-20>ain00<a#a>10011-20>a#-20>alla>100

2、在c语言中,将字符串中大写字母转换成小写字母的函数是。

【答案】strlwr#strlwr()#strlwr(字符串)

3、设有"intx=2,y"说明,则逗号表达式"y=x+5,x+y"的值是

【答案】9

4、在c语言中,正确的标识符是由组成的,且由开头的。

【答案】['字母、数字、下划线','以字母、下划线']

5、结构化程序三种结构为o

【答案】选择,顺序,循环

6、以下程序的输出结果为o

main()

{

charm,n;

m=getchar();

/*(输入d)*/n=m-34;

printf("%c",n);

)

【答案】b

7、C语言中,一个函数一般由两个部分组成,它们是——和函数体。

【答案】函数首部

8、设inta[10],*p=a;

则对a[2]的正确引用是p[2]和*(p[1])o

【答案】+2

9、有以下程序

ftinclude<stdio.h>

main()

{

inta[3][3]={{1,2,3},{4,5,6},{7,8,9)};

intb[3]={0},i;

for(i=0;i<3;i++)b[i]=a[i][2]+a[2][i];

for(i=0;i<3;i++)printf("%d";

printf("\n");

}

程序运行后的结果是。

【答案】[,101418']

10、以下程序功能是:借助指针变量找出数组元素中的最大值及其元素的下标

值。请填空。

ttinclude<stdio.h>

main()

(

inta[10],*p,*s;

for(p=a;p-a<10;p++)scanf(n%dn,p);

for(p=a,s=a;p-a<10;p++)if(*p〉*s)s=;

printf("index=%d\n”,s"a);

【答案】P

三、编程题(共3题,共40分)

1、编程序求「80所有整数的平方和并输出结果。(本题10分)

【答案】main()

(__

inti,x;

longsum=0;

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

{

x=i*i;

sum=sum+x;

printf("%ld",sum);

}

2、编写程序,读一个在字母C和X之间的字符,打印出该字母在中间的相邻五

个字母。如输入F,则输出DEFGH。(本题14分)

【答案】Winclude<stdio.h>

main()

I—

charch,cha;

printf("请输入一个字母(C到X之间):");

scanf("%c”,&ch);

if((ch<'C)||(ch>'X'))

printf("输入错误!\n");

else

for(cha=ch-2;cha<=ch+2;cha++)

printf("%c”,cha);

printf("\n");

3、建立一个链表每个结点包括学号、姓名、性别、年龄、地址。输入一个学号

打印该学号的学生的所有信息。如无此学号,则输出“没有找到",使用结构体

实现(本题16分)

【答案】#include<stdlib.h>

#include<stdio.h>

structnode{

longNo;

charName[10];

charsex;

intage;

structnode*next;

);

node*createlink()

structnode*h,*p,*q;

longnum;

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

p=q:=h;

printf("请输入学生学号(输入0退出输入)!\n”);

scanf(n%ldn,&num);

while(num!=0)

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

p->No=num;

printf("请输入学生姓名,\n");

scanf(n%s;p->Name);

printf("请输入学生年龄和性别,\n“);

scanf(n%d,%cn,&p->age,&p->sex);

q->next=p;

q=P;

printf(〃请输入学生学号(输入0退出输入)!\n“);

scanf(n%ldn,&num);

p->next=NULL;

returnh;

voidfind(structnode*phead,longnum)

structnode*p;

■if(phead->next==NULL).

printf("没有找到.\n");

■return;

p=phead->next;

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

p=p->next;

if(p==NULL)

printf("没有找到.\n");

return;

else

printf("学生的姓名,%s,年龄,%d,性

别,%cK,p->Name,p->age,p->sex);

|

|i_ntmain()

longnum;

structnode*phead;

phead=createlink();

printf("请输入要查找的学生的学号:\n”);

scanf(n%ldn,&num);

find(phead,num);

河南中医药大学计算机C语言期末复习题(二)

考试方式:【闭卷】考试时间:【90分钟】总分:【100分】

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

1、以下选项中不合法的标识是O

A、&a

B、FOR

C、print

D、_00

【答案】A

2、若定义inta=10,则表达式a+=a=aa*=a的值是。

A、0

B、-180

C、-100

D、-90

【答案】B

【解析】算术运算符的运算规则是:从右到左的原则。所以表达式中先计算

a=a-a*a的值是-90,再计算a=a+a的值是T80。

3、结构化程序设计所规定的三种基本控制结构是()。

A、输入、处理、输出

B、树形、网形、环形

C、顺序、选择、循环

D、主程序、子程序、函数

【答案】C

4、下面说法正确的是o

A、结构化程序的基本结构有三种,分别是循环结构、选择结构和顺序结构

B、计算机只能执行顺序结构的C语言源程序

C、循环结构无法使用N-S流程图描述

D、一般称含有20条以内语句的算法为简单算法,超过20条则不可能是

简单算法

【答案】A

【解析】结构化程序的基本结构为循环结构、选择结构和顺序结构,选项A正

确;计算机可以执行循环结构、选择结构和顺序结构的C语言程序,选项B错

误;循环结构可以使用-S流程图描述,选项C错误;算法复杂度是指算法在编写

成可执行程序后,运行时所需要的时间资源和内存资源,并不是指算法语句的多

少,选项D错误;本题答案为Ao

5、若调用一个函数,且此函数中没有return语句,则正确的说法是该函数

A、没有返回值

B、返回若干个系统默认值

C、有返回值,但返回一个不确定的值

D、能返回一个用户所希望的函数值

【答案】C

【解析】本题考查return语句的意义和用法。在C语言函数调用中,如果被调

用函数中没有retnrn语句,并不带回一个确定的、用户所希望得到的函数值,

而是带回的是一个不确定的值。

6、若有定义:inta=l,b=2,c=3,d=4,m=2,n=2;则执行(m=a>b)&&(n=c>d)后n

的值是o

A、4

B、3

C、2

D、1

【答案】C

【解析】对于表达式:(m=a>b)&&(n=c>d),首先执行m=a>b,由于ab的值

分别为:1,2,所以a>b的值为0,m的值为0,又由于逻辑与运算符&&有短路原

则,第一个表达式的值为假,所以整个表达式的值已经确定为假,第二个表达式不

会被执行,n的值依然是2,本题答案:C

7.inti,j,a[2][3];按照数组a的元素在内存的排列次序,不能将数

1,2,3,4,5,6存入a数组的是。

A、for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]=i*3+j+l;

B、for(i=0;i<3;i++)for(j=0;j<2;j++)a[j][i]=j*3+i+l;

C、for(i=0;i<6;i++)a[i/3][i%3]=i+l;

D、for(i=l;i<=6;i++)a[i][i]=i;

【答案】D

8、以下是正确c语言标识符的是o

A、_3

B、#3

C、&3

D、-3

【答案】A

9、有以下程序:

main()

charstr[]=nxyzn,*ps=str;

while(*ps)ps++;

for(ps—;ps-str>=o;ps一)puts(ps);

)

执行后的输出结果是o

A、yz

xyz

B、z

yz

C、z

yz

xyz

D、x

xy

xyz

【答案】C

【解析】执行while循环,使指针变量ps指向字符串“xyz”的字符串结束标

志,然后执行for循环,先执行ps--,使ps指向字符'z',故puts(ps)输出

结果为z;再次执行ps一,使ps指向字符'y',故puts(ps)输出结果为yz;

再次执行ps一,使ps指向字符'x',故puts(ps)输出结果为xyz,退出循

环。所以,C选项为所选。

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

A、inta[2][3]={{1,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

n、算法一般都可以用哪几种控制结构组合而成()

A、循环、分支、递归

B、顺序、循环、嵌套

C、循环、递归、选择

D、顺序、选择、循环

【答案】D

【解析】算法一般由顺序、选择、循环控制结构组合而成。

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

A、C程序中的注释只能出现在程序的开始位珞和语句的后面

B、C程序书写格式严格,要求一行内只能写一个语句

C、C程序书写格式自由,一个语句可以写在多行上

D、用C语言编写的程序只能放在一个程序文件中

【答案】C

13、以下关于数组的描述正确的是。

A、数组的大小是固定的,但可以有不同的类型的数组元素。

B、数组的大小是可变的,但所有数组元素的类型必须相同。

C、数组的大小是固定的,但所有数组元素的类型必须相同。

D、数组的大小是可变的,但可以有不同的类型的数组元素。

【答案】C

14、设有如下说明

typedefstructst

(

longa;

intb;

charc[2];

)

new;

则下面叙述中正确的是0

A、以上的说明形式非法

B、ST是一个结构体类型

C、NEW是一个结构体类型

D、NEW是一个结构体变量

【答案】C

【解析】typedef关键字用于声明一个新的类型名代替已有的类型名。本题中

如果没有用typedef进行定义的话,则structST为结构体类型,现在用

typedef定义后,相当于用NEW代表了structST这一结构体类型,故NEW

为结构体类型。

15、有以下程序

main()

(

chara,b,c,*d;

a='\';

b='\xbc';

c='\0xab';

d="\0127";

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

)

编译时出现错误,以下叙述中正确的是O

A、程序中只有a='\';语句不正确

B、b='\xbc';语句不正确

C、d="\0127";语句不正确

D、a='\';和c='\Oxab';语句都不正确

【答案】D

【解析】C语言规定,转义字符常量是转义字符(反斜线字符)后跟一个特定的

字符,来代表某一个特定的sen码字符。反斜线后的十六进制数只可由小写字

母x开头,不允许用大写字母X,也不能用Ox。

16、有如下程序

SdefineN4

SdefineMN+2

^defineNUM2*M+1

main()

{

inti;

for(i=l;i<=NUM;i++)printf(n%d\nn,i);

该程序中的for循环执行的次数是。

A、14

B、n

C、10

D、13

【答案】B

17、若有下列说明和语句,则对结构体变量st中成员i的引用方式不正确的是

structstu

{

inti;

intname;

}st,*p;

p=&st;

A、si

B、*i

C、(*.i

D、p->i

【答案】B

【解析】本题主要考查结构指针:p=&st,访问结构体的成员,可以通过结构变

量访问,即st.i,也可以用等价的指针形式即(*p).i和p->i。

18、以下程序的输出结果是。

#include<stdio.h>

main()

intcount,i=0;

for(count=l;count<=4;count++)

i+=2;

printf("%d",i);

A、20

B、246

C、2468

D、2222

【答案】C

19、如有定义语句inta[]={1,8,2,8,3,8,4,8,5,8);则数组a的大小是

A、10

B、11

C、8

D、不定

【答案】A

20、下列描述说明正确的是。

A、定义结构体时,它的每个成员的数据类型可以不同

B、不同结构体的成员名不能相同

C、结构体定义时,其成员的数据类型不能是结构体本身

D、结构体定义时各成员项之间可用分号也可用逗号隔开

【答案】A

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

1、C语言约定用作为字符串的结束标志。

【答案】'\0'#\0

2、以下程序对输入两个整数,按从大到小的顺序输出。请在—内填入正确的

内容。

voidmain()

intx,y,z;

scanf("%d,%d",&x,&y);

if()

{

z=x;

printf("%d,%d",x,y);

)

【答案】x<y|

x=y;

y=z;

【解析】其中这里用到了交换变量的方法,如果交换2个变量,则增加一个临

时变量,然后让三个变量在赋值语句中的位置形成一个环,如a=b;b=c;

c=a。如果是n个变量交换,同样是让他们位置形成一个环。如al=a2;

a2二a3;3,3—*an—1=an;an=al0

3、表达式a=3*5,a*4的值是。

【答案】['60']

4、C语言源程序经过编译后,生成文件的后缀名是—o

【答案】.c

5、仅由顺序、选择(分支)和重复(循环)结构构成的程序是程序。

【答案】[‘结构化']

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

inta[5]={l,2,3,4,5},*p;

p=a;

printf("%d",*(p=p+2));

【答案】3

7、在c语言中,在调用一个函数的过程中又出现——或间接地调用该函

数本身,这一现象称为函数的递归调用。

【答案】直接

8、指针是存放的变量。

【答案】地址

9、若运行以下程序时,从键盘输入adescriptor/,则下面程序的运行结果是

ttinclude<stdio.h>

voidmain()

{

charc;

intv0=0,vl=0,v2=0;

do

{

switch(c=getchar())

(

case'a':

case'a':

case'e':

case'e':

case‘i二’:

,二'

casei:

case'o':

case'o':

case'u':

case'u':vl+=l;

default:

vO+=l;

v2+=l;

while(c!='n\');

printf(nvO=%d,vl=%d,v2=%d\nn,vO,vl,v2);

)

【答案】v0=12|vl=4|v2=12

【解析】getchar函数取字符直到回车为此,且将回车算在内,

“while(c!=''n');”在switch(c二getchar。)之后才判断回车,所以回车也

算在v0v2内;case后面没跟break,如果一个case匹配后,后面的case不

再判断,直接执行,直到遇到break;它这里的case遇到AEIOU的不管大小写

都递增vl,vl就是元音字母的个数,ADescriptor中一共有4个case中的字

符;因为之前没有break,所有字符都会执行到default的语句,vO和v2就

是所有字符的个数。

10、以下程序运行后的输出结果是。

该程序的功能是O

main()

{

intx=10,y=20,t=0;

if(x!=y)t=x;

x=y;

y=t;

printf(n%d,%d\nn,x,y);

)

【答案】「20,10','变量的交换']

三、编程题(共3题,共40分)

1、编写程序:求1T00之间的奇数和及偶数的和。(本题10分)

【答案】#include<stdio.h>

main()

(

intsuml=0,sum2=0,a,b;

for(a=l;a<=100;a++)if(a%2==0)suml+=a;

elsesum2+=a;

printf("%d,%d",suml,sum2);

}

2、编写程序,从输入的一行字符串中抽取一部分(从第n个字符开始,抽取m

个字符)构成一个新的字符串,并输出。其中n〉0且n<=字符串的长度,否则

打印“起始位置n越界”

要求:n和m都由用户输入。

如果抽取的字符串长度不够,则按照实际长度抽取,例如,字符串为

“abcde”,若n=2,m=3,则抽取结果为"bed";若n=3,m=5,则抽取结果为

“cde";若n=0,m=4则输出:起始位置0越界;若n=6,m=2则输出:起

始位置6越界(本题14分)

【答案】Winclude<stdio.h>

ttinclude<string.h>

intmain()

intn,m,i;

unsignedlong1;

chars[80];

gets(s);

scanf("%d%d",&n,&m);

l=strlen(s);

if(n+m-l>l){

m=l+l-n;

IZ

if(n>0&&n<=l){

for(i=n-l;i<n+m-l;i++){

printf("%c",s[i]);

}else{

printf("起始位置%d越界",n);

|

return0;

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

structstudent{

intnum;〃学号

intcomputer;〃计算机成绩

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

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

序。

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

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

【输入样例】10288

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

10175

10380

10485

10288

10690(本题16分)

【答案】Winclude<stdio.h>

Sinclude<stdlib.h>

structstudent

intnum;〃学号

intcomputer;〃计算机成绩

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

intmain()

|「

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+1].computer)

(

tamp=s[j];

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

s[j+l]=tamp;

}

}

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

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

河南中医药大学计算机C语言期末复习题(三)

考试方式:【闭卷】考试时间:【90分钟】总分:【100分】

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

1、表示存储器的容量时,lmb的准确含义是。

A、1米

B、1024字节

C、1024K字

D、1.000字节

【答案】C

2、若a=l,b=2则a|b的值是()。

A、0

B、1

C、2

D、3

【答案】D

3、在c语言中,if语句后的一对原括号中,用以决定分支的流程的表达式

A、只能用逻辑表达式

B、只能用关系表达式

C、只能用逻辑表达式或关系表达式

D、可用任意表达式

【答案】D

4、在下列选项中,没有构成死循环的程序段是—

A、inti=100;

for(;;){

i=i%10+l;

if(i>10)

break;

B、while(1);

C、intk=0;

do

++k;

while(k<=10);

D、ints=12;

while(s);

——s;

【答案】c

【解析】本题考查死循环的知识。选项A)中,for循环没有任何控制语句就会

一直执行下去,所以不可能通过控制表达式的值结束循环。循环体内,

i=i%10+l这个表达式的值永远小于10,所以永远不会跳出循环,是死循环;选

项B)中,while中表达式永远是非0,不会结束循环;选项C)中,当k>10

时,结束循环;选项D)中,while(s);后面没有任何表达式而是直接加了一个

分号,会一直执行,形成死循环。

5、设有语句:x=inputbox("输入数值","0","示例")程序运行后,如果从键盘

上输入数值10并按回车键,则下列叙述中正确的是。

A、变量x的值是数值10

B、在InputBox对话框标题栏中显示的是"示例"

C、0是默认值

D、变量x的值是字符串“10”

【答案】D

【解析】InputBox函数返回的字符串值必须赋予一个变量才能被保留,它一次

只能输入一个值。变量x的值为“10”。

6、设有charstr[10],下列语句正确的是。

A、scanf("%s",&str);

B、printf("%c",str);

C、printf("%s",str[0]);

D、printf("%s",str);

【答案】D

7、若有数组名作为函数调用的实参,传递给形参的是o

A、数组的首地址

B、数组第一个元素的值

C、数组中全部元素的值

D、数组元素的个数

【答案】A

8、下面程序段的功能是

#include<stdio.h>

main()

{

charsi;

sl=putc(getc(stdin),stdout);

A、从键盘输入一个字符给字符变量si

B、从键盘输入一个字符,然后再输出到屏幕

C、从键盘输入一个字符,然后在输出到屏幕的同时赋给变量si

D、在屏幕上输出stdout的值

【答案】C

9、设有两个字符串p和q,其中q是p的子串,把q在p中首次出现的位置作为

子串q在p中位置的算法称为()。

A、求子串

B、匹配

C、连接

D、求串长

【答案】B

【解析】本题考查对字符串进行处理的算法。

求子串是在一个主字符串中按一定的规则取出任意个连续的字符得到一个新

串。

匹配是指求一个字符串是另一个字符串的子串,并返回子串首次出现的位

置。

连接是指把一个字符串的内容连接到另一个足够大的字符串的末尾。

求串长就是统计字符串中有效字符的个数。

10、二维数组的元素是4个字符(每个字符占一个存储单元)组成的串,

行下标i范围从0到4,列下标,i的范围从0到5。m按行存储时元素m[3,5]的

起始地址与m按列存储时元素()的起始地址相同。

A、M[2,4)

B、M[3,4)

C、M[3,5]

D、M[4,4)

【答案】B

【解析】M按行存储时元素M[3,5]位于第4行第6歹ij(下标从0开始),也就是

处在第3X6+6=24个存储位置,设与它存储的起始位置相同的,按列存储时的

元素行下标为x,列下标为y,则有yX5+x+l=24,解得x=3,y=4,即选项B是

正确答案。

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

A、void

B、double

C、int

D、char

【答案】C

12、下列选项中不是字符常量的是。

A,'W

B、'\x2a'

C>'a'

D、"\0"

【答案】D

【解析】C语言规定,一个字符常量代表ASCH码字符集里的一个字符,在程

序中用单引号括起来,以便区分。“\v”'表示的是竖向跳格;"'\x2a'”表

示的是两位+六进制数;“'a'”表示的是字符a对应的ASCII码值。

13、下列字符数组初始化语句中,不正确的是o

A、charc[]='goodmorning';

B、chare[20]="goodmorning":

C、charc[]=('a','b','c','d');

D、charc[]={"ffgoodmorning^^);

【答案】A

14、设有下面的定义:

structst

(

inta;

floatb;

}d;

int*p;

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

A、*p=d.a;

B、p=&a;

C、p=d.a;

D、p=&d.a;

【答案】D

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

引用方法有3种:①结构体变量名,成员名;②指针变量名->成员名;③(*指

针变量名).成员名。因为P是指针变量,所以应该将地址值赋给p。

15、有以下程序段intm=0,n=0;

charc=,a*;

scanf("%d%c%d",&m,&c,&n);

printf("%d,%c,%d\nn,m,c,n);

若从键盘上输入:20b20/,则输出结果是o

A、20,B,20

B、20,b,20

C、20,b,0

D、20,B,0

【答案】A

16、从循环体内某一层跳出,继续执行循环外的语句是:o

A、break语句

B、return语句

C、continue语句

D、空语句。

【答案】A

17、若有下面的说明和定义:

structtest

(

intml;

charm2;

floatm3;

unionuu

{

charul[5];

intu2[2];

)

ua;

)

myaa;

则sizeof(structtest)的值是o

A、20

B、16

C、14

D、9

【答案】A

【解析】共用体uu占8个字节;因为结构体在内存中占位符的存在,所以结构

体test中成员m2占4个字节;结构体test占用内存的大小是sizeof(int)+

sizeof(char)+3+sizeof(float)+sizeof(ua)=20o

18、执行下列语句后,a和b的值分别为()。

inta,b;

a=l+,a,;

b=2+7%-4-,A,;

A、-63,-64

B、98,-60

C、1,-60

D、79,78

【答案】B

19、若有定义语句:doublex[5]={1.0,2.0,3.0,4.0,5.0},*p=x;

则错误引用X数组元素的是o

A、*p

B、x[5]

C、*(p+1)

D、*x

【答案】B

20、若有以下定义的语句

structstudent

{

intage;

intnum;

};

structstudentstu[3]={{1001,20},{1002,19},{1003,21)};

main()

(

structstudent*p;

p=stu;

}则以下不正确的引用是o

A、(p++)->num

B、p++

C、(*p).num

D、p=&stu.age

【答案】D

【解析】考查对结构体成员的引用方法。[解题要点]结构体成员的引用可以

用“结构体变量名,成员名”或者“结构体变量指针->成员名”两种方式来引

用。[考点链接]结构体类型的变量、数组和指针变量的定义。

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

1、已知a=5,则表达式"a+=a-=3"的值是

【答案】4

2、关系表达式x+y〉5的相反表达式为

【答案】x+y!>5

3、定义一个指针数组p,它有4个元素,每个指针指向一个整型数据,定义语

句为。

【答案】int*p[4];

4、在C语言中的实型变量分为两种类型,它们是—和浮点型。

【答案】整形

5、结构化程序设计的3种基本结构是:顺序结构、选择结构、结构,这三

种基本结构构成了复杂的c语言程序。

【答案】循环#重复

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

main()

{

inta[2][3]={{l,2,3},{4,5,6}},intb⑶⑵,i,j;

printf("arraya:\n");

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

(

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

{

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

b[j][i]=a[i][j];

}

printf("\n");

}

printf("arrayb:\n");

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

(

for(j=0;j<=l;j++)printf("%5d",b[i][j]);

printf("\n");

【答案】arraya:123456arrayb:142536

7、对于文件末尾检测函数feof(),如果文件指针未到文件末尾,则函数返回值

是_______。

【答案】0#零

8、以下函数值的类型是【1】。

fun(floatx)

(

floaty;

y=3*x-4;

returny;

)

【答案】int

9、以下程序的运行结果是。

main()

{

intk,s,a[3][3]={1,2,3,4,5,6,7,8,9};

s=0;

for(k=0;k<3;k++)s=s+a[k][k];

printf(n%d,n,s);

)

【答案】15#15,#15,

10、下面程序的运行结果是O

#include<stdio.h>

main()

{

inti,t,sum=0;

for(t=i=l;i<=10;)

(

sum+=t;

++i;

if(i%3==0)t=-i;

elset二i;

printf("sum=%cT,sum);

【答案】sum=19

三、编程题(共3题,共40分)

1、输入3个学生4门课的成绩{(60,70,65,75),

(75,80,75,90),(95,75,90,65)},计算每个学生的总分和平均成绩并输出,结果

保留一位小数。(本题10分)

【答案】ttinclude

voidmain()

(

inta[3][4]={{60,70,65,75},{75,80,75,90},{95,75,90,65}};

inti,j;

floataverage,sum=0.0;

printf("三个学生的总分和平均成绩依次为:\n");

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

{

sum=0.0;

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

sum=sum+a[i][j];

average=sum/4;

printf("%.2f,2f\n",sum,average);

2、编写一个函数,从传人的m个字符中找出最长的一个字符串,并通过形参指针

max传回该串地址(用****作为结束输入的标志)。注意:部分源程序给出如

下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号

中填人所编写的若干语句。试题程序:

char*proc(char(*a)[81],intnum)

{

)

voidmain()

{

charss[10][81],*max;

intn,i=0;

printf("输入若干个字符串:");

gets(ss[i]);

puts(ss[i]);

while(!strcmp(ss[i],"****")==0)

i++;

gets(ssei]);

puts(ss[i]);

)

n二i;

max=proe(ss,n);

printf(n\nmax=%s\nn,max);

)(本题14分)

【答案】char*proc(char(*a)[81],intm)

(

char*max;

inti=0:max=a[0]:for(i=0;i<m;i++)if(strlen(max)<

strlen(a[i]))〃找出最长的字符串max=a[i];

returnmax;

〃返回最长字符串的地址

)

3、统计结构体数组中性别(sex)为M的变量的个数。

要求:

①数组元素依次赋初值为:{1,"Andy",'M'}、{2,"Mike",'F'

{3,"Rose",'M'}。

②结构体定义如下:structStudent{intnum;charname[30];charsex;

(本题16分)

【答案】#include<stdio.h>

structStudent{

intnum;

charname[30];

charsex;

);

intFun(structStudent*s,intn)

L

intnum=0;

inti;

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

if(s[i].sex=='M')

num++;

intmain()

I

structStudents[3]={

1,"Andy",'M',2,"Mike",'F',3,"Rose",'M'

);

printf(n%dn,Fun(s,3));

return0;

河南中医药大学计算机C语言期末复习题(四)

考试方式:【闭卷】考试时间:【90分钟】总分:【100分】

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

1、C源程序中不能表示的数制是O

A、二进制

B、八进制

C、十进制

D、十六进制

【答案】A

2、若已定义x和y为double类型,则表达式x=l;y=(x+3)/2的值是

A、1

B、2

C、2.00000

D、2.50000

【答案】C

【解析】()的优先级较高,先计算x+3,结果为4.0,再4.0/2结果为2.0。

3、switch语句不能用于下列哪种数据类型()

A、double

B、byte

C、short

D、char

【答案】A

【解析】swish语句中表达式expression只能返回这几种类型的值:int、

byte>short和char。如果比较的数据类型是double型,则不能使用switch

结构。

4、下列关于宏操作的叙述错误的是o

A、do-while的循环体至少无条件执行一次

B、while的循环控制条件比do-while的循环控制条件更严格

C、do-while允许从外部转到循环体内

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

【答案】A

【解析】VisualFoxPro中,支持两种类型的菜单,分别是条形菜单和弹出式

菜单。菜单系统一般是一个下拉式菜单,它是由一个条形菜单和一个弹出式菜

单所组成的。

5、若有charsi[]="abc",s2[20],*t=s2;gets(t);则下列语句中能够实现当字

符串si大于字符串s2时,输出s2的语句是()。

A、if(strcmp(si,si)>0)puts(s2);

B、if(strcmp(s2,si)>0)puts(s2);

C、if(strcmp(s2,t)>0)puts(s2);

D、if(strcmp(si,t)>0)puts(s2);

【答案】D

6、在c语言中,下面合法的长整型数是°

A、0L

B、4962710

C、0.054838743

D、2.1869el0

【答案】A

7、在c语言中,设有数组定义:chararray[]="china";则数组array所占用的

空间为o

A、5个字节

B、6个字节

C、10个字节

D、12个字节

【答案】B

【解析】字符数组是每个元素存放一个字符型数据的数组。C语言中约定用\0

作为字符串的结束标志,它占内存空间,但不计入字符串的长度。对数组

array赋初值chararray□="China”,此时系统自动在末尾加入一个'\

0',此时数组array的长度为6,所占用的空间为6个字节,即char

array[]="China”等价于char

array[]={,'h','i','n','a',''0'}。若定义char

array[]={'C','h','i','n','a',},此时数组array的长度为5个

字节。

8、c语言的注释定界符是o

A、{}

B、[]

C、\**\

D、/**/

【答案】D

9、char*s="\t\\name\\address\n";指针s所指字符串的长度为:。

A、说明不合法

B、19

C、18

D、15

【答案】D

10、若有说明:inta[3][4]={0};则下面正确的叙述是()。

A、只有元素a[0][0]可得到初值0

B、此说明语句不正确

C

温馨提示

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

评论

0/150

提交评论