c语言程序设计各章练习题_第1页
c语言程序设计各章练习题_第2页
c语言程序设计各章练习题_第3页
c语言程序设计各章练习题_第4页
c语言程序设计各章练习题_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

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

文档简介

C语言程序设计各章练习题

《C语言程序设计》各章练习题

2016年12月汇编

第1-3章C语言基础、编程规范、顺序结构程序设计

编程题1:设a和b均为int型变量,编写一个

程序,通过键盘读入a,b的值,然后交换a,b的

值。要求屏幕显示“输入2个整数,用空格隔开”

的提示语句,并且输出交换前a,b的值,交换后

a,b的值。

请输入2个整数,用空格隔开:

35

附加要求:(1)允许定义第3个空排前:a=3b=5

交换后:a=5b=3

(2)不允许定义第3个变量,实现

交换。

第4章选择结构程序设计

编程题2:根据下列函数关系写程序,要求提示

输入x的值,输出y的值。

"XH---X<0

2

y=<2x=0

x2x>0

编程题2:根据下列函数关系写程序,要求提示

输入x的值,输出y的值。

xx<-2

y=<2-2<x<0

4xx>0

编程题3:求ax2+bx+c=0方程的解。(只输出

b2-4ac>=0的求解结果,小于0,输出“不予求

解!”)

第5章循环结构程序设计

编程题4:编程计算加。要求提示键盘输入n,

i=l

如n为负数,不予计算,直接返回。

编程题5:编程序计算n!,要求n从键盘输入,

如n小于0,不予计算。

编程题6:从键盘输入一个数n,判断n是否是

素数。

编程题6:编写程序输出1~100之间的偶数,要

求屏幕显示时5个偶数一行,每个数占5位,右

对齐。

部:;曩馨敬般犍期辗嵋密则有多少个

编程题8:求满足下列条件的三位数n,它除以

11(整数相除)所得到的商等于n的各位数字的

平方和,且其中至少有二位数字相同的数。

编程题9:有一些十进制整数对ab和cd具有如

下特性:abXcd=baXdc,其中aWb且cWd。

如:12X42=21X24o请编程找出30~50之间满

足上述等式所有m,n值,并按上述等式的格式

第6章数组

编程题11:有一个已排好序的数组int

a[ll]={-5,-3,0,6,8,12,16,28,66,88};,要求

输入一个数后,按原来排序的规律将它插入数组

中。

编程题12:输入一个字符串(字符个数为小于

100),统计其中字母、数字、空格以及其它符号

的个数,并将大写字母改为小写字母,输出改变

后的字符串。(提示:A的ASCH值为65,a的

ASCII值为97)

编程题12:输入一行字符(字符数组的个数小

于100),统计其中字母、数字以及其它符号的

个数。(注:数组限定字符个数小于100)

齐5,

守平数

第7章函数

编程题13:编写一个子函数intfun(intn),

其功能是判断整数n是否为素数,n是素数,返

回值为1;n不是素数,返回值为0o调用该函

数,将100~200之间的素数全部输出,要求屏幕

上每个数占4位,每行显示5个素数,左对齐。

(循环、条件分支、子函数、变量的值传递、屏

幕显示格式控制)

编程题16:用递归函数计算n!。

编程题17:编写一个子函数intfact(int

n),计算n的阶乘。调用该函数计算1!+2!+3!

+…+n!,要求n从键盘输入,如输入n小于0,

不予计算。(循环、递归函数)

编程题18:将16进制或8进制或2进制数转换

为十进制数(字符数组、字符串函数、子函数、

字符ASCII值与10进制数的转换,指数函数的

调用)

第第翱嗨秒写一个子函数,将16进制数转换

编程题19:篇写一个子函数,主函数用字符数

组作为实参,统计字符串中字母、数字、空格以

及其他符号的个数,要求主函数中显示字符串与

统计结果。

编程题20:编写一个子函数,主函数输入一行

字符,子函数找出字符串中最长的单词,并显示

结果。

编程题21:用递归法将一个整数n转换为字符

串。例如:输入483,输出字符串“483”,n的

位数不确定。

编程题22:写一个子函数,将输入的字符串按

反序存放,在main中输入和输出字符串。

第8章指针

编程题23:编写一个子函数mystrcmp(char

为1,char*s2)实现2个字符串的比较。

编程题23:编程实现两个字符串连接起来,不

要用strcat函数。

编程题23:用函数调用实现字符串的复制。

编程题23:写一个函数,求一个字符串的长度。

在main函数中输入字符串,并输出邓度。

编程题24:写一个用矩形处当此上£上1用函

数,分别计算

编程题25:输入一个字符串,内有数字和非数

字字符,如:A123x45617960?302tab5876,将

其中连续的数字作为一个整数,依次用数组存放

第9章结构

编程题27:建立一个链表,每个结点包括:学

号、姓名、性别、年龄,输入一个年龄,如果链

表中的结点所包含的年龄等于此年龄,则将此结

点删去。

编程题28:13个人围成一圈,从第一个人开始

顺序报号,凡报到3者退出圈子,找出最后留在

圈子中的人原来的序号。要求用链表实现。

编程题29:阅读链表操作相关函数,完成指定

s〃

•td•h

ncude一o

Hnc二ude"al■oc•h

〃•

incude1nSltringh链表内容仅限表

truc一tstuaent•

头表尾添加、删

Qhar

l

*nt

lnt除、查询、显示、

t

}sru

•保存,不考排序、

struce

*head中间节点的插入

和删除

wList(structStudent*head);//

1st(structStudent*head);

^tuden±^head,struct

nt^^ffieaa^struc^^Student

d,structStudent*tempi;77表买添加兀

ct报册;n7/1礴ieSomeone(struct

dSomeone(structiident*head);//

eleteHead(structStudent

structStudent*head);//

idmain()

StructStudent*head=NULL,*temp=NULL;

intchoice;

表〃

tf/〃1\

rnfx("9An"

rntf(\n

v〃5V

rntff受An

rntf(x〃4\n"

ntf(x:5"

r彳

rntf(x6■f

rntfcv〃7f

z技

nt(x"W2

rlA:5•

c0nfx%G外c1•c1•ce

f(^cnoicho

\e=

Create(temp);

1stCheac);

isaveListead

,lseif(choice=2)〃表头添加元素

(structStudent

*)mallocstru睚Stude崛);

:〃);

scanf(嚼々硼tehpp-,-n>anma隔m^口

f(啕号^涉tempp-f>ununng£;:〃);

scan

:〃);

scanf

Tai;//

head=Atleaq

owList

saveList

Iseif(choice==3)〃删除元素

1teSoeone(head);

eacJ;

ead);

e僵赧啊澧也、〃查找元素

器段黑空即,/删除表头

head=DeleteHead(head);

ShowLjstCheac);

saveList(head);

}

Iseif(choice==6)〃删除表尾

ShowLiast^ea^^*

saveListea

)

揩J班嘲蹦翻!\n〃);

?就intf(〃非法输入,请输入1〜7之间的

数T

while(choice!=7);

眈〃舟智般件荀避摆s"uctStudent

ctStudent*pS,*pEnd;

据,直接读入

料股;

、1pS=(struct仁i\\Student

*)malloc(sizeof(structStudent));

…j,"%s%d%d”,pS->name,&pS-

>num^fp豁瑞F)

*

1d==NULL)

=pS;

els

next=pS;

pEn

1f(head!=NULL)

表八『梆招唔戏典牛中读入数据创建链

deletepS-

Ifclose(ip;;

if(head==NULL)

while(1)

*)malloc(si^Ff;Student

struckStuden^);

,pS->name^;:〃);

scan

if(strcmp(pS->name,〃000〃))

“学号:〃);

scanf(Wji->num)■

绩:〃);

scanf(%1严(如5_>mathy7

else

te5=NULL)

if

nead=pS;

e

pEnd->next=pS;

Pnd=pS;

>next=NULL;

epS;

}returnhead;

转裳jf耨"tructStudent*head)〃显示

printf(〃学生姓名学号成

绩端盒(head)

prin1«;d->name);

affiih);

ihead=heaad->next

},

芦裳jl爵&籍t"tructStudent*head)//保存

printf("无法创建文件e:\\list.txt!,z);

、return;

hile(head)

、fpnntf(fp,%s%d%d\n,head->name,head

->num,head->mathx);

Ihead=head->next;

}fclose(fp);

voidAddTailCstnictStudent*head,struct

Student*temp)〃加在表尾

s产Tc[hSt%fent*last;

last=head:

ihead=head->next;

last->next=temp;

temp->next=NULL;

struct

*

rheadst?盟曝ud热瞥橇繇洌铤襄契dent

struCtstul

fltheaent*first:

r一d■

s一a

rem»

nead-tp•

Head->nextf-rst

returnheadf;l

tructStudent*DeleteSomeone(struct

tudent*head)

StructStudent八*temp;

int

p螂rm嘘繇,

printf(:表为空!\n");

returnhead;'

f(head->num==xnum)

temp=head;

head=head->next;

deletetemp;

returnhead;

即账咄=head;

->next==NULL)

eak:

(head->next->num==xnum)

temp=head->next屋

head->next=temp->next;

翌letftemp;

ead=head->next;

吗富能铲目发现!\n〃);

returnfirst;

idFindSomeone(Student*head)〃按学号查

迪磁塌小特:〃);

s『,ft%d^,&xnum);

if(head->num==xnum)

•(9o〃hd>

Prntea-nae•

Htf8dhe>n»

Pn-ad-um•

tf,\i\

ml-4ddmI

Dn-nhea-zn7

->

frag-一

beak•

r

r

in

lf/f1Q案

a-一

kAS一

-X现

Cr1nLf

}L\n

struc

*headStudent

{

printfc〃

returnh\n

ea

器1ehRad

adtE;

tuhead

re

se

struCtstudentf•rstad

-hd>1=hhe

head-ea.-neXt

dele1ef1rst-

th»

reurnead»•

idDeleteTail(structStudent*head)

if(head==NULL)

)printf("表为空!\n");

if(head->next==NULL)

}「嫌制町心

,lse

structStudent*temp,*end;

wRiletend->next!=NULL)

temp=end:

}e二n二d=二ennd->next;

temp->next=NULL;

第10章文件

编程题30:编程实现:有一个文本文件“a.txt”,

里面有大小写英文字母、数字和其它符号。要求

分别统计其中大写字母、小写字母、数字以及其

它字符的个数。

编程题30:从键盘输入一串字符,并以#结束,

将其中的大写字母全部转换成小写字母,并输出

到计算机D盘文件"test.txt”中保存。(提示:

一串字符并不意味着一行字符,另外一串字符的

曹H

一A

aS

a

w

第1-3章C语言基础、编程规范、顺序结构程序设计

一、选择题

1.C语言是一种(C)程序设计语言。

A.低级B.面向对象C.高级D.智

2.下列特性中,(D)不是C语言的特征。

A.运行效率高B.结构化程序设计C.能直

接访问物理地址D.类型检测严格

3.下列标识符中,(D)不是C的关键字;

A.intB.floatC.charD.scanf

4.下列标识符中,(D)不是C的关键字;

A.sizeofB.shortC.longD.

define

5.下列标识符中,(D)不是C的关键字;

A.gotoB.breakC.autoD.

printf

6.下列标识符中,(D)不是C的关键字;

A.staticB.structC.voidD.

include

7.下列自定义标识符中,(C)是不符合

规定。

A.pointlxB._pointlxC.2pointx

D.pointx_2

8.下列自定义标识符中,(C)是不符合

规定。

A.MAXB._MINC.MAX$D.MIN_2

9.下列自定义标识符中,(D)是不符合

规定。

A.pointl_B._pointlxC.pointx

D.pointx_#

10.下列自定义标识符中,(A)是不符合

规定。

A.2_pointlxB._pointlxC.pointx

D.pointx_2

11.下列四个选项中,是不合法的用户标识符的

选项是(C)

A,P_0B._abc

C,gotoD・temp

12.下面是不正确的字符串常量的是(A)

A.'abc'B,"12'12"

13.已知inta;floatf;

scanf(^a=%d,f=%fw,&a,&f);为了把10和

3.14分别赋值给a和f,则正确的输入为

(C)

A.10,3.14B.103.14C.

a=10,f=3.14D.a=10f=3.14

14.输入语句为:

scanf("%f,&radius,&high);下列键盘输

入(D)是正确的。

A.12/;B.1,2\n/;C.1/2

/;D.1,2/;

15.输入语句为:

scanf(z,a=%f,b=%f”,&radius,&high);从键盘输

入(D)是正确的。

A.12/;B.1,2/;C.1/2/;

D.a=l,b=2/;

16.输入语句为:

scanf(zza=%f,b=%f\n”,&radius,&high);从键盘

输入(D)是正确的。

A.12/;B.1,2/;C.1/2/;

D.a=l,b=2\n/;

17.输入语句为:

scanf(zza=%fb=%fz,,&radius,&high);从键盘输

入(D)是正确的。

A.12/;B.1,2/;C.1/2/;

D.a=lb=2Z;

18.doublePI=3.1415926,输出语句为:

printf(〃%3.21f〃,PI);下列输出结果(D)

是正确的。

A.3.1415926;B.3.2;C.3.1;

D.3.14;

19.doublePI=3.1415926,输出语句为:

printf(〃%5.41f〃,PI);下列输出结果(B)

是正确的。

A.3.1415926;B.3.1415;C.3.1416;

D.5.4;

20.doublePI=3.1415926,输出语句为:

printf(〃%3.41f〃,PI);下列输出结果()是

正确的。

A.3.1415926;B.3.141;C.3.1415;

D.3.1416;

21.设x,y均为float型变量,则下列不合法的

赋值语句是()

A,++x

B.y=(x%2)/10

C,x*=y+8

D.x=y=O

22.doublePI=3.1415926,输出语句为:

printfC%4.21f〃,PI);下列输出结果()是

正确的。

A.3.1415926;B.4.2;C.3.141;

D.3.14;

23.inta=-l;C语言整型数分配4个字节,

在计算机中下列十六进制表示的(A)是正确的。

A.ffffffff;B.80000001;

C.10000001;D.00000001;

24.inta=l;C语言整型数分配4个字节,在

计算机中下列十六进制表示的a()是正确的。

A.00000001;B.10000001;

C.80000000;D.ffffffff;

25.inta=-l;C语言整型数分配4个字节,

在计算机中下列十六进制表示的a()是正确的。

A.10000001;B.-00000001;C.-1;

D.ffffffff.*

26.inta=-l;C语言整型数分配4个字节,

在计算机中下列十六进制表示的a()是正确的。

A,-ffffffff;B,80000001;

C.ffffffff.D.-1;**

27.设有下列变量说明:chara;intx;float

y;doublez;则表达式a*x-z+y的值的数据类

型为()o***

A.floatB.charC.int

D.double

28.已知字母a的ASCII码为十进制数97,且

设ch为字符型变量,则表达式

ch='a'+,8'-,3'的值为()

A.'f'B.'a'

C.'d'D.102

29.已知ch是字符型变量,下列不正确的赋值

语句是()

A.ch='a+b'B.ch='\0'

C.ch='a'+'b'D.ch=5+9

30.若s是int型变量,则表达式s=25/3%3的

值为。

A.25B.1C.2

D.3

31.若s是int型变量,则表达式s%2+(s-l)%2

的值为()

A.0B.1C.-1

D.2

32.若s是int型变量,则表达式s%2+(s+l)%2

的值为()

A.0B.1C.2

D.不确定

33.下列表达式中,不能正确表达代数式笔含义

ah

的C语言表达式是。

A.x/a/b*y*2B.2*x*y/a/b

C.2*x*y/a*bD.x*y/b/a*2

34.若x、i、j、k均为int变量,则计算表达

式x=(i=4,j=16,k=32);后,x的值为()

A.4B.16C.32

D.52

35.已知inta=6,b=6;执行b=(++b)+(a++);

后,a和b的值为。。

A.a=7,b=13B.a=7,b=14C.

a=6,b=13D.a=6,b=14

36.若有定义:intx=5,y=2;则计算表达式

y+=y-=x*=y后,y的值为。

A.16B.-16C.7

D.10

37.若a是int型变量,且其初值为6,则计算

表达式a+=a-=a*a后,a的值为()

A.-30B.-60C.-24

D.6

38.若x的初值为7,执行语句x+=x-=x+x;后,

x的值为()

A.21B.-14C.14

D.-21

39.C语言的编译系统对宏命令的处理是。

A.在程序运行时进行的

B.在程序连接时进行的

C.和C程序中的其他语句同时进行编译的

D.在对源程序中其他成分正式编译之前进行

40.以下正确的叙述是()

A.C语言的预处理功能是指完成宏替换和包

含文件的调用

B.预处理指令只能位于C源程序文件的首部

C.凡是C源程序中行首以标识的控制行

都是预处理命令

D.C语言的编译预处理就是对源程序进行初

步的语法检查

41.以下在任何情况下计算平方数时都不会引起

二义性的宏定义是。

A.ftdefinePOWER(x)x*x

B.#definePOWER(x)(x)*(x)

C.#definePOWER(x)(x*x)

D.ftdefinePOWER(x)((x)*(x))

42.以下有关宏替换的叙述中错误的是()

A.宏替换不占用运行时间

B.宏替换只是字符替换

C.宏替换在编译之前进行

D.宏名必须用大写字母表示

43.下列程序段的运行结果为()。

voidmain()

{charcl,c2;

cl='A'+'5'-'3';

c2='A'+'6'-'3';

printf(,cl,c2)

)

A.C,DB.67,DC.B,CD.无确

定值

二、填空题

1.在C语言中,实型变量可以分为两种类型,

它们是和O

2.若x,a为整型变量,则计算表达式x=(a=4,

6*2)后的x值为,计算表达式x=a=4,

6*2后的x值为o

3.若x和n均是int型变量,且x和n的初值

均为5,则计算表达式x+=n++后x的

值,n的值为—o

三、阅读下列程序,在下划线上写出输出结果

1.程序段:

#defineMUL(x)(x)*(x)*(x)

main()

{printf("%d”,MUL(1+2)+3);}

的结果是o

2.程序段:

^definey(t)(t)*(t)

main()

{printf(“%d”,y(l+2)+3);}

的结果是o

3.以下程序的输出结果是(19)21。

#include<stdio.h>

#defineM(xzy,z)x*y+z

voidmain()

{inta=2zb=3zc=4;

printf('^dXn*',M(a+b,b+c,c+a));//知识点:宏定义是编译时先替换,运行时才计算

)

第4章选择结构程序设计

一、选择题

1.若x是int型变量,则表达式x%2+(x+l)%2

的值为。。

A.0B.1C.2D.不

确定

2.设有定义inta=3,b=4,c=5,则表达式

a||b+c&&b=c的值为()o

A.3B.1C.0

D.不确定

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

A.if(a==b)

B.if(a=b)

C.if(strcpy(a,b))

D.if(strcmp(a,b))

4.表达式5!=4的值是。

A.0B.1

C.trueD.任一非零数

5.设逻辑型变量a,b,c,其中a的值为1,则

逻辑运算表达式a||b||c的值是()

A.0B.1

C.trueD.不确定

6.若a=5,b=4,c=2时,表达式a>b!二c的值是()

A.1B.0C.非

1D.不确定

7.设逻辑型变量a,b,c,其中a的值为0,则

逻辑运算表达式a&&b&&c的值是。

A.0B.1

C.非1D.不确定

8.若当a的值为奇数时,表达式的值为“真”,

当a的值为偶数时,表达式的值为“假”,则以

下不能满足要求的表达式是。

A.a%2==lB.!(a%2==0)C.!

(a%2)D.a%2

9.判断字符型变量x是否为大写字母的正确表

达式是()

A.'A'<=x<='Z'B.(x>=A)&

(x<=Z)

C.(x>=,A')&&(x<=,Z')D.(x>=,A')

and(x<=,Z')

10.若x=5,y=2,z=l,则表达式x-y〈z||y=z

的值是()

A.0B.1C.3

D.2

11.以下不正确的if语句形式是()

A.if(x>y&&x!=y);

B.if(x==y)x+=y;

C.if(x!=y)x=lelsex=2;

D.if(x<y){x++;y++}

12.设有定义inta=l,b=2,c=3,d=4,m=2,n=2;

执行(m=a>b)&&(n二c>d)后n的值是()

A.1B.2C.3

D.4

二、填空题

1.在C语言中,若x,y,z均为int型变量,

则“x或y中有一个小于z”的表达式描述

形式为o

三、阅读下列程序,在下划线上写出输出结果

1.#include<stdio.h>

voidmain()

(

intx=l,y=0,a=0,b=0;

switch(x)

case1:

switch(y)

case0:a++;break;

case1:b++;break;

)

case2:a++;b++;break;

)

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

}/*输出结果:*/

2.以下程序的运行结果是一o

ttinclude<stdio.h>

voidmain()

intx=5;

if(x++>5)

printf(,x);

else

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

四、程序填空

1.下列程序的功能是实现输出a,b,c三个数

中的最大值。请为程序填空。

#include<stdio.h>

voidmain()

(

inta=5,b=4,c=8;

____________9

if()

u=a;

else

u=b;

if()

v=u;

else;

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

)

2.下列程序的功能是根据下列函数关系,输入

x的值,计算y的值。请为程序填空。

x(x+5)2<x<10

),=<4x-1<x<2

x-6工4-1

ttinclude<stdio.h>

voidmain()

intx,y;

scanf("%d”,);

if()

y=x*(x+5);

elseif()

y=4*x;

else

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

}

第5章循环结构程序设计

一、选择题

1.执行语句for(i=l;i++<3;);后变量i的

值的是()。

A.3B.4C.5

D.不确定

2.对于程序段intk=10;while(k)k=k-l;下

面描述正确的是。。

A.循环体执行10次B.该循环为无穷循

3.程序段:

a=10;b=0;

do(

b+=2;

a-=2+b;

}while(a>=0);

中循环体的执行次数()

A.1B.2C.3

D.4

C.循环体执行一次D.循环体

一次也不执行

4.设i为整型变量,则语句for(i=2;i==0;)

a=3;中循环体的执行次数为()

A.无限次B.0次C.1次

D.2次

5.设有下列程序段:

x=l;

do{

x=x*x;

}while(!x)

则该循环是。

A.死循环B.循环执行一次C.循环执

行二次D.语句错误

6.设有程序段:

intk=10;

while(k==0)

k一;

则下列描述中正确的是。

A.while循环执行10次B.while

循环执行无限次

C.while循环执行。次D.while循环执行

1次

7.程序段:

x=y=0;

while(x<15)

y++,x+=++y;

执行后x值是()

A.7B.12C.8

D.20

8.与语句while(!E)中表达式!E等价的是()

A.E==0B.E!=1C.

E!=0D.E==l

9.以下不是死循环的语句是()

A.for(y=0,x=l;x>++y;x=i++)i=x;

B.for(;;x++=i);

C.for(i=10;;i-)a+=i;

D.while(1){a++;};

10.程序段

do

{i++;

}while(i<=10);

执行后i的值为()

A.11B.12C.10

D.不确定

11.执行语句for(i=l;i++<3;);后变量i的

值的是()

A.3B.4C.5

D.不确定

12.for(x=0,y=0;(y=123)&&(x<4);x++);的

循环执行次数为O

A.无限次B.次数不定C.执行

3次D.执行4次

13.程序段

x=2;

do{printf("*");x一;}while(!x==0)

的运行结果为()

A.*B.**C.

***D.****

14.执行语句for(i=4;i—>0;);后变量i的

值的是()

A.0B.1C.2

D.不确定

二、填空题

1.若for循环语句用以下形式表示:

for(表达式1;表达式2;表达式3)循

环体语句

则执行语句:for(i=0;i<4;i++)

printf(“*”);时,表达式1执行

次,表达式3执行了次。

三、阅读下列程序,在下划线上写出输出结果

1.设有程序段

k=l;n=263;

do

{k*=n%10;

n/=10;}

while(n);

其运行结束后k的值为循环结束后n的值

是。

2.写出以下程序的运行结果。

ftinclude<stdio.h>

main()

(

inty=10;

do(

y一;

}while(一y);

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

}

3.阅读下列程序,在下划线上写出输出结果。

ttinclude<stdio.h>

main()

(

inty=-10;

do{

y++;

}while(++y);

printf(a%d,”,y++);/*输出结果:

*/

}

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

ttinclude<stdio.h>

voidmain()

(

inti;

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

switch(i%5)

(

case0:printf(;break;

case1:printf(;break;

default:printf(”);

case2:printf("&");

)

}

四、程序填空

1.下列程序的功能是采用“顺序查找法”查找

数组中是否存在元素X。请为程序填空。

#include<stdio.h>

voidmain()

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

inti,x;

scanf("%d”,);

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

(

if(x==a[i])

(

printf("Found!TheIndex

is:%d\n",-i);

)

)

if()

printf(anotfound!”;

)

第6章数组

一、选择题

1.在C语言中引用数组元素时,其数组下标的

数据类型可以是。。

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

C.整型常量或整型表达式D.任何类型的表

达式

2.以下能对一维数组a进行正确初始化的语句

是()。

A.inta[10]=(0,0)B.inta[10]={};C.int

a[]={0};D.inta[10]={10*l};

3.若有说明:inta[10];则对a数组元素的正

确引用是。

A.a[10]B.A[3.5]C.

a(5)D.A[10-10]

4.若有说明:inta[3][4];则对a数组元素的

正确引用是。

A.a[2][4]B.A[2,4]C.

a[l+l][0]D.A(2)(1)

5.若有以下说明:int

a[][3]={1,2,3,4,5,6,7};则数组a的第一维

的大小是。

A.4B.3C.2

D.不确定

6.二维数组x有m歹I),若元素x[0][0]是第一

个元素,则在数组中的位置是。

A.i*m+jB.j*m+iC.i*m+jT

D.i*m+j+l

7.下面能正确进行字符串赋值操作的是()

A.chara[5]={“ABCDE”};

B.char

a[5]={,A',,B,,,C,,,D,,,E,};

C.char*a;a={"ABCDE”};

D.char*a;scanf("%s",a);

8.若有定义:inta[5];则数组a中首元素的

地址可以表示为()

A.&aB.a+1C.a

D.&a[l]

9.若已定义chars[10];则在下列表达式中不

表示s[l]的地址的是()

A.s+1B.s++

C.&s[0]+lD.&s[l]

10.设有数组定义:chararray]]二"China”;

则数组所占的空间是:。

A.4个字节B.5个字节C.6

个字节D.7个字节

11.下面各行语句中正确的是。。

A.chars[5]="ABCDE”;B.chars[6];

s="ABCDE”;

C.char*s="ABCDE"D.

char*s;scanf("%s",s)

12.以下正确的定义语句是()

A.inta[l][4]={1,2,3,4,5};B.float

x[3][]={{1},{2},{3});

C.longb[2][3]={{1},{1,2},{1,2,3)};

D.doubley[][3]={0};

13.若有以下说明:inta[3][4]={0};则下列

正确的叙述是。

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

B.此说明语句不正确

C.数组a中各元素都可得到初值,但其值不

一定为0

D.数组a中各元素都可得到初值0

14.两个数组a和b进行如下初始化

chara[]="abcdef”;

char

b[]={'a','b','c','d','e

15.则下列叙述正确的是。

A.a和b数组完全相同B.a和b长度相同

C.a和b中都存放字符串D.a数

组比b数组长度长

16.以下不能对二维数组a进行正确初始化的语

句是()

A.inta[2][3]={0};B.inta[][3]={{1,

2},{0}};

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

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

17.下述对C语言中字符数组的描述错误的是。

A.字符数组可以存放字符串

B.字符数组的字符串可以整体输入和输出

C.可以在赋值语句中通过赋值运算符“二”对

字符数组整体赋值

D.不可以用关系运算符对字符数组中的字符

串进行比较

18.以下能对二维数组a进行正确初始化的语句

是。

A.inta[2][]={{1,0,1},{5,2,3)};

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

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

D.inta[][3]={{1,2,3},{4,5}};

19.对数组说明语句:inta[10]={l,2,3,4,5};

的正确理解是()

A.将5个初值依次赋给a[l]到a[5]元素

B.将5个初值依次赋给a[6]到a[10]元素

C.将5个初值依次赋给a[0]到a[4]元素

D.该语句出错

20.对数组说明语句:inta[10]={l,2,3,4,5};

的正确理解是。

A.将5个初值依次赋给a[l]到a[5]元素

B.将5个初值依次赋给a[6]到a[10]元素

C.将5个初值依次赋给a[0]到a[4]元素

D.该语句出错

21.若有定义:inta[5];则数组a中首元素的

地址可以表示为()

A.&aB.a+1C.a

D.&a[l]

二、填空题

1.若有如下定义:inta[3][5],则a数组中行

下标的下限是,列下标的的上限

是o

2若有定义:int

@[3][4]={{1,2},{0},{4,6,8,10}};则初始

化后,得到的初值是—,a[2][l]

得到的初值是o

3.在C语言中,数组名是一个不可改变

的,不能对它进行赋值运算。数

组在内存中占用一段连续的存储空间,它的

首地址由表示。

三、阅读下列程序,在下划线上写出输出结果

1.阅读下列程序,在下划线上写出输出结果。

ttinclude<stdio.h>

voidmain()

inti,j,row,col,m;

int

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

9

m=a[0][0];

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

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

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

{m=a[i][j];row=i;col=j;}

printf(am=%drow=%dcol

=%d”,m,row,col);

/*输出结果:果

)

2.阅读下列程序,在下划线上写出输出结果。

#include<stdio.h>

voidmain()

inti,j,row,col,m;

int

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

m=a[0][0];

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

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

if(a[i][j]>m)

{m=a[i][j];row=i;col=j;}

printf(am=%drow=%dcol

=%d”,m,row,col);

/*输出结果:*/

)

3、以下程序运行,输入helloworld!,则输出

结果的第厂彳亍星09)[、第二行是(20)。

#include<stdio.h>

01main。

char

char

scanf

getsilstr2j,';

print!vstrl:%s\nw,strl);//strl:

hello

f(astr2:%s\nw,str2);//

str2:

第7章函数

一、选择题

1.下列关于数组名作函数实参的描述,正确的

是()。

A.把实参数组首元素的地址传递给形参数

组,两个数组共占同一段内存;

B.实参数组把各个元素的值传递给形参数

组,两个数组各占不同的内存;

C.把实参数组首元素的地址传递给形参数

组,两个数组各占不同的内存;

D.实参数组把各个元素的值传递给形参数

组,两个数组共占同一段内存;

2.以下正确的说法是。

A.定义函数时,形参的类型说明可以放在函

数体内

B.return后面的值不能是表达式

C.如果函数值的类型与返回值类型不一致,以

函数值类型为准

D.如果形参与实参的类型不一致,以实参类型

为准

3.C语言中允许函数值类型缺省定义,此时该

函数值隐含的类型是()

A.floatB.double

C.longD.int

4.在C语言中,下列描述正确的是。

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

以嵌套

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

以嵌套

C.函数的定义可以嵌套,函数的调用也可以

嵌套

D.函数的定义不可以嵌套,函数的调用也不

可以嵌套

5.下面有关C语言函数的叙述正确的是:。

A.可嵌套定义B.嵌套调用和递归调用均可

C.不可以嵌套调用D.可嵌套调用但不可

递归调用

6.下列说法中不正确的是()

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

B.形式参数是局部变量

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

D.在函数内的复合语句中定义的变量在本函

数范围内有效

7.C语言规定,函数的返回值的类型是由()

A.return语句中的表达式类型所决定

B.调用该函数时的主调函数类型所决定

C.调用该函数时系统临时决定

D.在定义该函数时所指定的函数类型所决定

8.在函数中默认存储类型说明符的变量应该是

。存储类型。

A.静态B.外部C.

自动D.寄存器

9.字符串“ab\n\\012\\\"的长度为()

A.5B.6C.9

D.12

10.设char*s="\ta\017xy”;则指针变量s

指向的字符串所占的字节数为()

A.9B.5C.6

D.7

二、填空题

1.已知字符串“ab\n\\012\\\",

strlen("ab\b\\012\\\")的结果为-

printf("ab\b\\012\\\")的结果为。

三、阅读下列程序,在下划线上写出输出结果

1、以下程序的运行结果第一行是(11)

a=3,b=2,第二行是(12)a=2,b=3。

#include<stdio.h>

voidf(intazintb)〃知识点:值传递

(

intt;

if(a<b)

{t=a;a=b;b=t;}

,z

printf(''a=%d,b=%d\nza,b);

}

voidmain()

(

inta=2,b=3;

f(a,b);

n

printf(*'a=%dzb=%d\n,azb);

)

2、以下程序的运行结果第二行是一(13)8,

第三行是U4)9o

#include<stdio.h>

fun(inta)

(

intb=3;

staticintc=2;〃知识点:静态变量,仅初始化1次

return(a+(b++)+(c++));

)

voidmain()

(

温馨提示

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

最新文档

评论

0/150

提交评论