C语言期末复习题答案_第1页
C语言期末复习题答案_第2页
C语言期末复习题答案_第3页
C语言期末复习题答案_第4页
C语言期末复习题答案_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

基本数据类型

一、选择题

1.下列数据中,不正确的数值或字符常量是()。

A.0.825e2B.5L

C.OxabcdD.oI3

2.以下字符中,不正确的C语言转义字符是()。

A.\\'B.'\018'//pl9〃8进制里没有8以上的数字

C.'\xaarD.

3.已知大写字母A的ASCH码值是65,小写字母a的ASCII码是97,则用八进制

表示的字符常量201'是()。

A.字符AB.字符aC.字符eD.非法的常量

4.以下选项中可作为C语言合法整数的是(

A.10110BB.0386C.OXffaD.x2a2

5.以下符合C语言语法的实型常最是()。

A.I.2E0.5B.3.14.159EC..5E~3D.E15//p18

6.已定义ch为字符型变量,以下赋值中错误的是()。

A.chK';B.ch=62+3;C.ch=NULL;D.ch=*\xaa';

7.已定义c为字符型变量,则下列赋值中正确的是()。

A.c=,97,;B.c="97";C.c=97;D.c=°a";

8.C语言中最基本的数据类型包括()。

A.整型、实型、逻辑型B.整型、实型、字符型//P14图2.1

C.整型、字符型、爱辑型D.整型、实型、逻辑型、字符型

9.在C语言中,合法的字符常量是()。

A..'\084'B.'\x43'C.'ab'D."\0"

10.已知在ASCH代码中,字母A的序号为65,以下程序的输出结果是()。

#includc<stdio.h>

main()

{charcl="Ac2='Yprintf(,,%d,%d\n",cl,c2);}

A.输出格式非法,输出错误信息B.65,90C.A,YD.65,89

二、填空题

1.C语言中,常量包括整型常量、.实型常量一、字符型常量和—字符串常量。

2.C语言中,数据类型包括基本类型、构造类型、指针类型、空类型。

3.字符串ab在C语言中表示为“a示。

4.C语言中的变量实际代表内存中的一个存储单元-。//P16

5.在C语言中,整数可用及进制数、&进制数与坨进制数3种来表示,以Ox打头的

是16进制数,以0打头的是8进制数。//P17

6.若有说明语句:charc=,\035,;则变量c包含」个字符。

三、简答题

1.C语言的基本数据类型有几种〃3,分别是什么,并指出各种数据类型的关键字?

int\float\char//

2.常量和变量的区别是什么?〃不变/变

3.在程序中如何使用变量?〃先定义,后使用

4.字符和字符串表示形式有什么区别?才和“a"有什么不同?9和9有何不同?空字符

'\0'和空格字符’‘有何区别?〃""\''字符:一个字节。字符串:最少两个(双引号里面

字符个数+1)

运算符与表达式

一、选择题

1.在下列运算符中,优先级最高的运算符是()。〃P28

A.<=B.%C.=D.&&

2.若有代数式ae/be,则错误的C语言表达式是()。//P24

A.a/b/c*eB.a*e/b*cC.a*e/b/cD.a*e/c/b

3.已知有以下变量定义:

inti=8,k,a,b;

unsignedlongw=5;

doublex=1.42,y=5.2;

则不符合C语言语法的表达式是()。

A.k=i++B.(int)x+0.4C.w+=-2D.a=2*a=3〃赋值号左边只能是变量,

不能是表达式//P25

4.运行以下程序段后,x的值为()。//P25//++使变量的值

intm=3,n=4,x;

x=-m++;

x=x+8/++n;

A.3B.5C.-1D.-2

5.设有以下定义

inta=0;

doubleb=1.25;

charc='A

#defined2〃d为符号常量,++必须是变量

则下面语句中错误的是()o

A.a++;B.b++;C.C++;D.d++;

6.设有如下程序段:

intx=2002,y=2003:

printf("%d\n",(x,y));〃(x,y)逗号表达式值2003

则以下叙述中正确的是(

A.输出语句中格式说明符的个数少于输出项的个数,不能正确输出

B.运行时产生出错信息

C.输出值为2002

D.输出值为2003

7.以下非法的赋值语句是()。

A.n=(i=2,++i);B.j++;C.++(i+l);D.x=j>0;//++只能为变量,i+1是表达式

8.设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是()。

A.6.500000B.6C.5.50000()D.6.000000//P22P23

9.若有以下程序:〃26

main()

{

intk=2,i=2.m;

m=(k+=i*=k);

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

}

执行后的输出结果是()o

A.8,6B.8,3C.6,4D.7,4

10.若有定义:

inta=8,b=5,c;执行语句c=a/b+0.4;后,c的值为()。

A.1.4B.1C.2.0D.2

li.下列选项中哪个是合法的标识符()。//P14

A.charB.5abcC.t_aD._*m2

二、填空题

1.C语言中的表达式包括算术表达式、关系表达式、逻辑表达式、逗号表达式、条件

表达式和赋值表达式。//P24

2.C语言中的结合方向有自左向右和—自右向左。

3.若有定义;inta=0;则执行赋值语句a+=a*=a%=a-=15;后变量a中的值是0。

//P26

4.printf(H%d\n”,(inl)(2.5+3.0)/3);的输出结果是」//5/3=1

5.设intx=9;执行x+=3+x%(-3);后x的值为12。

6.假设变量a为整型,则执行a=3+5,a*4;printf("%d\n”,a)后的输出结果是」。

7.条件:“0<xv8或xV4'的C语言表达式是(x>0&&x〈8)||(xv=-4)。

8.设x和y均为int型变量,且x=l,y=2,则表达式1.0+X/Y的值为1.0。//x/y=0

9.在C语言中,要求运算数必须是整型的运算符是Z/24

5.」知字母A的ASCH码为十进制的65,下面程序的输出结果是()。

#include<stdio.h>

main()

{

charchi,ch2;

chl='A'+5-3;

ch2='A'+6-3;

printf("%d,%c\n",chi,ch2);

)

A.67,DB.B,CC.C,DD.不确定的值

6.设有如下定义:

intx=IO,y=3,z;

则语句:printf("%d\n",z=(x%y,x/y));的输出结果是()。

A.1B.0C.4D.3

7.若有以下定义和语句:

charcl='b',c2='e';

printf("%d,%c\n",c2-cl,c2-'a'+'A');

则输出结果是()o

A.2.MB.3,EC.2,ED.输出结果不确定

8.以下叙述中正确的是()。

A.输入项可以是一个实型常量,例如:

scanfC'%f,3.5);

B.只有格式控制,没有输入项,也能正确输入数据到内存,例如:

scanf("a=%d,b=%d")

C.输入一个实型数据时,格式控制部分可以规定小数点后的位数,例如:

scanf("%4.2『,&d);

D.当输入数据时,必须指明变量地址,例如:

scanfC'%「',&f);

二、填空题

1.结构化程疗设计所规定的二种基本控制结构足顺序结构、选择结构、循环结构结

构。

2.输出字段宽为4的十进制数应使用%4d,字段宽度为6的十六进制数应使

用%6x,八进制整数应使用%6。,字段宽度为4的字符应使用%4c,字段宽度为

8,保留3位小数的实数应使用%8.3f,字段宽度为5的字符串应使用%5s0

//p37

3.若有定义:intx=0;,则执行赋值语句:x=(x=3+5,x*5);后,变量x中的值是

40。

4.下面程序的输出结果是17,果,110

#include<stdio.h>

main()

{intk=17;

printfC'%d,%o,%x\n",k,k,k);

}

5.若有定义:ima=0,b=0,c=0;用下面语句输入时

scanf('*%d",&a);

scanf("%d",&b);

scanf("%d",&c);

从键盘输入:

10<tab>4<tab>5<|Hl$>

则执行输入语句后,变量a的值是一以,变量b的值是_4_,变量c的值是

//p40

三、编程题〃p36

1.编写程序,输入两个整数,求出它们的商数和余数并进行输出。

2.从键盘输入一个字符,输出这字符的Asen码的值。

3.用x,y,z表示长方体三边边长,编写程序求其表面积a和体积v,然后进行输

出。其中x,y,z通过键盘输入。

4.编写程序,从键盘上输入两个电阻的值,求它们并联和串联的电阻值,输出结果保

留两位小数。

【提示】并联和串联的电阻值计算公式如下:

并联电阻错误!未找到引用源。串联电阻RS=R1+R2

选择结构程序设计

一、选择题

1.对于条件表达式(m)?(a++):(a--)来说,其中的表达式m等价于()。

A.m==0B.m==1C.m!=0D.m!=l

2.下述程序()o

main()

(

intx=0,y=0,z=0;

if(x=y+z)//x=y+z//x==y+z

printfC'####");

else

printfC***5**");

A.有语法错误,不能通过编译B.输出****

C.可以编译,但不能通过连接,因而不能运行D.输出棚##

3.下列条件语句中,功能与其他语句不同的是()。

A.if(a)printf("%d\n'\x);elseprintf("%d\n",y);

B.if(a==O)printfC'%d\n",y);elseprinlff'%d\n",x);

C.if(a!=O)printf("%d\n'*,x);elseprintfC'%d\n",y):

D.if(a==O)printfC'%d\n",x);elseprintf("%d\n",y);

4.有以下程序:

main()

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

if(a>b>c)

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

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

printfC'%d\n",d+1);

else

printfC'%d\n",d+2);

)

执行后输出结果是()o

A.2B.3C.4D.编译时有错,无结具

5.有以下程序:

main()

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

if(a>b)

if(b>c)

printfC'%d”,d+++l);

else

printfC'%d”,++d+l);

printfC1%d\n",d);

)

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

A.2B.3C.43D.44

6.以下程疗

inti,a=3,b=2;

i=(—a==b++)?—a:++b;//b++执行,++b不执行

printfCi=%da=%db=%d",i,a,b);

输出结果是()o

A.i=la=lb=3B.i=3a=2b=3C.i=4a=Ib=4D.i=4a=2b=4

7.以下能够正确判断char型变量c是否为大写字母的表达式是()。

A.('A'<=c)AND(Z>=c)B.('A'<=c)&('Z'>=c)

C.('A,<=c)&&('Z'>=c)D.以上答案都不对〃(c>=”)&&(cv=,z,)

8.有如下程序

main()

{intx=l,a=O,b=O;

switch(x)

{case0:b++;

case1:a+-;//a=l//break

ease2:a+-;b++;//a=2b=l

)

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

)

该程序的输出结果是()o

A.a=2,b=lB.a=1,b=1C.a=1,b=0D.a=2,b=2

8h

二、填空题

1.条件:“20<xv30或x<-100w的C语言表达式是(x>20)&&(xv30)||(x〈C00).

2.当a=3,b=2,c=I时,执行if(a>c);b=a;a=c;c=b:语句后a=l,b=3,c=3。〃if的语句为;

3.设wa=1,b=2,c=3,d=4;n则表示式ua>b?a:c>d?c:dw的值是4。

4.以下程序运行的输出结果是0o

main()

(

intp=30;

printf("%d\n",(p/32>0?p/10:p%3));

)

5.写出运行结果。

#includc<stdio.h>

main()

{

intx=O,y=O,z=O;

if(x=y+z)

printf("!!!!");

else

printf("####");

)

结果:####o

6.卜列程序的功能是把从键盘上输入的整数取绝在值后输出。

main()

intx;

scanf("%d",_&x_);

if(x<0)

x=-x:

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

}

7.写出运行结果。

#include<sldio.h>

main()

(

inix=O,a=O,b=l;

switch(x)

(

case0:a++,b++;break;

case1:a++;

case2:b++;

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

结果:a=1.b=2

三、编程题

1.编程实现,输入一个整数,判断该数的奇偶性(输出相应的标志:even一—偶数,

odd-----奇数)。

2.编程实现,输入一个平面上的点,判断它是否落在单位圆上,并显示相应的信息。

3.编程实现,给定一个整数,判断它是否能同时被3、5、7整除。

4.编写程序,从键盘输入3个整数,按由小到大次序输出这3个数。

5.编写程序,输入一个x值,计算分段函数的值。

-xx<0

y=3x+20Sxv5

x2-3x>5

循环结构程序设计

一、选择题

1.在C语言中,为了结束由while语句构成的循环,while后一对圆括号中表达式的

值应该为()o

A.0B.1C.trueD.非0

2.如下程序段执行后输出()。

main()

(

intnum=0;

while(num<=2)

{

num++;

printf("%d".num);

)

)

A.I234B.12C.1D.123

3.下面程序段执行时()。

x=-l;

do

(

x=x*x;

}while(!x);

A.循环体将执行一次B.循环体将执行两次

C.循环体将执行无限次D.提示有语法错误

4.以下的for循环()。

for(x=0,y=0;(y!=123)&&(x〈4);x++);

A.执行3次B.执行4次

C.循环次数不定D.是无限循环

5.执行语句:for(i=l;i++v4;)后,变量i的值是()。

A.3B.4C.5D.不定

6.下面的程序段执行后sum的值是()。

main()

inti,sum;//sum没有赋初值

for(i=l;i<6;i++)sum+=i;

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

)

A.14B.不确定C.15D.0

7.以下叙述中正确的是(),

A.do-whilc语句构成的循环不能用其他语句构成的循环来代替

B.do-whilc语句构成的循环只能用break语句退出

C.用do-while语句构成的循环,在while后的表达式为非零时结束循环

D.用do-while语句构成的循环,在while后的表达式为零时结束循环

8.下面选项中,没有构成死循环的程序段是()。

A.inti=100;

whiie(l)(i=i%lO9+l;if(i>IOO)break;}〃没有循环增量i++

B.for(;;);〃for(;;)相当于whilc(l)

C.intk=IOOO;

do

{++k;}while(k>=10000);//k=I00K10000

D.ints=36;

while(s);〃whHe(s);后面不能有分号

-s;

9.下面的程序段中while循环执行的次数是

intk=0;

while(k=l)k+4-;//===

A.无限次B.有语法错,不能执行

C.一次也不执行D.执行1次

10.下列选项中与语句:

while()

(

if(i>=100)break;

s+=i;

i++;

)

功能相同的语句是().

A.for(;i<100;i++)s=s+i;B.for(;i<=100;i++)s+=i;

C.for(;i<IOO;i++,s=s+-i);D.for(;i>=100;i++,s=s+i);

二、填空题

1.这个while循环的输出结果是」491625。

i=0;

while(i<5)

i++;

printf("%d",ixi);

(

2.有以下程序:

界include<stdio.h>

main()

|

charc;

while((c=getcharO)!=*?')

putchar(—c);

1

程序运行时,如果从健盘输入:B?C?〈回车〉,则输出结果为A。

3.假定a和b为加型变量,执行下面程序段后b的值为g。

a=l;b=10;

do

(

b-=a;a++;

}while(b—<0);

4.若所有变量都已正确定义,下列程序的输出结果是YESYES。

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

printf(“YES”);

prinifW);

5.执行下列程序后,输出“水”号的个数是色。

#include,,stdio.hn

main()

(

inti,j;

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

forg=2;j<=i;j++)

putchar(4*^);

三、编程题

1.计算1-3+5-7+…-99+101的值。

2.编写程序从输入的三个数中找出最大值和最小值。

3.编写程序,判断从键盘输入的一个整数是否是素数,是素数就输出“Thisisaprime

number",不是素数就输出“Thisisnotaprimenumber”。

4.求10到100之间的全部素数。

5.编写程序输出如下所示的图形。

*

***

*****

*******

*********

数组

一、选择题

(I)在C语言中,引用数组元素时,其数组下标的数据类型允许是

A)整型常量B)整型表达式

C)整形常量或整形表达式C)任何类型的表达式

⑵以下对一维整型数组a的正确说明是。

A)inta(10);B)intn=10,a[n];

C)intn;D)#defineSIZE10

scanff‘%d",&n);inta[SIZE];

inta[nj;

(3)若有定义:则对数组a元素的正确引用是一。

A)a[10]B)a[3.5]C)a(5)D)a[10-10]

⑷以下能对一维数组a进行正确初始化的语句是—o

A)inta[10]={0,0,0,0,0};B)inta[10]={};

C)inta[]={0};D)inta[IO]={10*1};

(5)若有定义:inia[3][4],则对数组a元素的正确引用是

A)a[2][3]B)a|l,3]C)a(5)D)a[10-10]

(6)以下能对二维数组a进行正确初始化的语句是o

A)inta[2][]={{1,0,1M5,2,3));

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

C)inta[2][4]={{L2,3)44,5),(6));

D)inta[][3]={{1,0,1),{},{UH;

⑺若有说明:inta⑶[4]={0};则下面正确的叙述是o

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

B)此说明语句不正确

C)数组a中各元素都可得到初值,但其值不一定为0

D)数组a中每个元素均可得到初值0

(8)若有说明:inla[][4]={0,0};则下面不正确的叙述是。

A)数组a的每个元素都可得到初值0

B)二维数组a的第一维大小为1

C)因为二维数组a中第二维大小的值除以初值个数的商为1,故数组a的行数为1

D)只有元素如0][0]和可得到初值0,其余元素均得不到初值0

(9)若二维数组a有m列,则计算任一元素在数组中位置的公式为。

(设a[0][0]位于数组的第一个位置上)

A)i*m+jB)j*m+iC)D)i*m+j+l

(10)若有说明:inta口[3]={1,2,3,4,5,6,7};则数组a第一维大小是0

A)2B)3C)4D)无确定值

(11)下面程序段的输出结果是。

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

for(k=0;k<3;k++)pnntf(tt%d,,,a[k][2-kl);

A)357B)3690159D)147

(12)下面是对s的初始叱,其中不正确的是。

A)chars[5]={“abc”};B)chars[5]={ta,;b,;c,};

C)chars[5]=nD)chars[5]=abcdcf\

(13)下面程序段的输出结果是。

charc[5]={ta,,,b,;\0,,,c,;\0,}

printf("%s”,c);

A),a,,b,B)abC)abcD)abc

(14)判断字符串a和b是否相等,应当使用。

A)if(a==b)B)if(a=b)

C)if(strcpy(a,b))D)if(strcmp(a,b))

(15)下列四种数组定义中,合法的数组定义是()。

A)chara[]="hcllo";B)inta[4]={4,3,2,l,0);

C)chara="hcno";D)chara[5]="hello”;

(16)已知数组floata[4]⑶;该数组行下标的范围是().

A)0—3B)1—3C)0—2D)I—2

二、写出运行结果。

I.#include<stdio.h>

main()

{inti,t,a[5]={1,2,3,4,5);

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

{t=a[i];

a[ij=a[4-i];

a[4-i]=t;

1

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

printf("%2dH,a[i]);

printf("\n");

结果:54321。

2.#include<stdio.h>

main()

{

inti,j,row,col,min;

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

min=a[01(01;

row=0;

col=0;

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

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

if(a[i][j]<min)

(

min=ali][j];

row=i;

col=j;

)

printf("min=%d,row=%d,col=%d\n",min,row,col);

}

结果:min=0jow=2、col=2。

三、编程题。

1.用数组求Fibonacci数列前20个数,Fibonacci数列指的是这样,个数列:

1,1,2,3,5,8,13,21……这个数列从第三项开始,每一项都等于前两项之和。

#include<stdio.h>

voidmain()

{

intfib[20]={14);

inti;

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

{

1

for(i=0;i<20;)

{

printf("%5d

i++;

if(i%5==0)

printf("\n");

getch();

2.将输入数组a[n]中的n个元素,再输入另一个数x,查看a中是否有值为x的元素,

若有,则输出其下标,若没有,则输出-1。

3.求数绢inta[n]中奇数的个数和平均值,以及偶数个数和平均值0

函数

一、选择题

(1)C语言规定:源程序中main函数的位置()。

A.必须在最开始

B.必须在系统调用的库函数的后面

C.必须在后面

D.可以任意

(2)以下正确的说法是()。

A.实参和与其对应的形参各占用独立的存储单元

B.实参和与其对应的形参共占用一个存储单元

C.只有当实参和与其对应的形参同名时才共占用相同的存储单元

D.形参时虚拟的,不占用存储单元

(3)对于C程序的函数,下列叙述中正确的是()。

A.函数的定义不能嵌套,但函数调用可以嵌套

B.函数的定义可以表套,但函数调用不能嵌套

C.函数的定义和调用均可以嵌套

D.函数的定义和调用均不能嵌套

(4)下列宏定义语句中,不正确的是()o

A.#defineY1B./include"math.h"

C.#include<sldio.h>D.#definePI=3.14

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

A.该函数没有返回俏

B.该函数返回若干个系统默认值

C.能返回•个用户所希望的函数值

D.返回一个不确定的值

(6)若用数组名作为函数调用的实参,传递给形参的是。

A.数组的首地址B.数组中第一个元素的值

C.数组中的全部元素的值D.数组元素的个数

(7)关于函数声明,以下不正确的说法是。

A.如果函数定义出现在函数调用之前,可以不必加函数原型声明

B.如果在所有函数定义之前,在函数外部已做了声明,则各个主调函数不必再做函

数原型声明

C.函数在调用之前,一定要声明函数原型,保证编译系统进行全面的调用检查

D.标准库不需要函数原型声明

(8)函数定义时,形参是整型变量,则函数调用时,实参不可以是()。

A.整型常量B.字符型常量C.数组名D,整型表达式

二.填空

(1)C语言函数返回类型的默认定义类型是上1。

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

温馨提示

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

评论

0/150

提交评论