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

上传人:b****4 文档编号:3927018 上传时间:2022-11-26 格式:DOCX 页数:24 大小:38.71KB
下载 相关 举报
C语言程序设计各章练习题.docx_第1页
第1页 / 共24页
C语言程序设计各章练习题.docx_第2页
第2页 / 共24页
C语言程序设计各章练习题.docx_第3页
第3页 / 共24页
C语言程序设计各章练习题.docx_第4页
第4页 / 共24页
C语言程序设计各章练习题.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

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

《C语言程序设计各章练习题.docx》由会员分享,可在线阅读,更多相关《C语言程序设计各章练习题.docx(24页珍藏版)》请在冰豆网上搜索。

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

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

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

2016年12月汇编

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

编程题1:

设a和b均为int型变量,编写一个程序,通过键盘读入a,b的值,然后交换a,b的值。

要求屏幕显示“输入2个整数,用空格隔开”的提示语句,并且输出交换前a,b的值,交换后a,b的值。

附加要求:

(1)允许定义第3个变量,实现交换;

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

第4章选择结构程序设计

编程题2:

根据下列函数关系写程序,要求提示输入x的值,输出y的值。

编程题2:

根据下列函数关系写程序,要求提示输入x的值,输出y的值。

编程题3:

求ax2+bx+c=0方程的解。

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

”)

第5章循环结构程序设计

编程题4:

编程计算

要求提示键盘输入n,如n为负数,不予计算,直接返回。

编程题5:

编程序计算n!

,要求n从键盘输入,如n小于0,不予计算。

编程题6:

从键盘输入一个数n,判断n是否是素数。

编程题6:

编写程序输出1~100之间的偶数,要求屏幕显示时5个偶数一行,每个数占5位,右对齐。

编程题7:

编程计算100到1000之间有多少个数其各位数字之和是5,并将其输出。

编程题8:

求满足下列条件的三位数n,它除以11(整数相除)所得到的商等于n的各位数字的平方和,且其中至少有二位数字相同的数。

编程题9:

有一些十进制整数对ab和cd具有如下特性:

ab×cd=ba×dc,其中a≠b且c≠d。

如:

12×42=21×24。

请编程找出30~50之间满足上述等式所有m,n值,并按上述等式的格式输出。

(×用*表示)

编程题10:

从键盘上输入一个整数,然后把这个整数的各位逆序输出。

例如,输入123456,输出654321。

第6章数组

编程题11:

有一个已排好序的数组inta[11]={-5,-3,0,6,8,12,16,28,66,88};,要求输入一个数后,按原来排序的规律将它插入数组中。

编程题12:

输入一个字符串(字符个数为小于100),统计其中字母、数字、空格以及其它符号的个数,并将大写字母改为小写字母,输出改变后的字符串。

(提示:

A的ASCII值为65,a的ASCII值为97)

编程题12:

输入一行字符(字符数组的个数小于100),统计其中字母、数字以及其它符号的个数。

(注:

数组限定字符个数小于100)

编程题12:

输入一行字符,分别统计出其中英文字母、数字、空格和其他字符的个数。

(注:

字符个数不受限制)

第7章函数

编程题13:

编写一个子函数intfun(intn),其功能是判断整数n是否为素数,n是素数,返回值为1;n不是素数,返回值为0。

调用该函数,将100~200之间的素数全部输出,要求屏幕上每个数占4位,每行显示5个素数,左对齐。

(循环、条件分支、子函数、变量的值传递、屏幕显示格式控制)

编程题14:

主函数中定义两个数组inta[5]={5,4,8,-1,2},b[10]={1,-1,2,4,8,4,0,9,3,7};用子函数实现从小到大的冒泡排序,子函数为voidbubble(int[],int);要求在主函数中显示排序前、后的数组a和b的元素。

(循环、条件分支、子函数、数组、地址传递)

编程题15:

主函数中定义两个数组inta[5]={5,4,8,-1,2},b[10]={1,-1,2,4,8,4,0,9,3,7};用子函数实现从小到大的选择法排序,子函数为voidsort(int[],int);要求在主函数中显示排序前、后的数组a和b的元素。

(循环、条件分支、子函数、数组、地址传递)

编程题16:

用递归函数计算n!

编程题17:

编写一个子函数intfact(intn),计算n的阶乘。

调用该函数计算1!

+2!

+3!

+…+n!

,要求n从键盘输入,如输入n小于0,不予计算。

(循环、递归函数)

编程题18:

将16进制或8进制或2进制数转换为十进制数(字符数组、字符串函数、子函数、字符ASCII值与10进制数的转换,指数函数的调用)

编程题18:

编程实现八进制数转换为十进制数(注:

用字符数组n[100]接收输入,输入的八进制数肯定正确,无须检测;八进制数转换为十进制数的子函数为inthtoi(charhnum[]);)

编程题18:

编写一个子函数,将16进制数转换为10进制数。

编程题19:

编写一个子函数,主函数用字符数组作为实参,统计字符串中字母、数字、空格以及其他符号的个数,要求主函数中显示字符串与统计结果。

编程题20:

编写一个子函数,主函数输入一行字符,子函数找出字符串中最长的单词,并显示结果。

编程题21:

用递归法将一个整数n转换为字符串。

例如:

输入483,输出字符串“483”,n的位数不确定。

编程题22:

写一个子函数,将输入的字符串按反序存放,在main中输入和输出字符串。

第8章指针

编程题23:

编写一个子函数mystrcmp(char*s1,char*s2)实现2个字符串的比较。

编程题23:

编程实现两个字符串连接起来,不要用strcat函数。

编程题23:

用函数调用实现字符串的复制。

编程题23:

写一个函数,求一个字符串的长度。

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

编程题24:

写一个用矩形法求定积分的通用函数,分别计算

编程题25:

输入一个字符串,内有数字和非数字字符,如:

A123x456tab5876,将其中连续的数字作为一个整数,依次用数组存放这些数,统计有多少个整数,并输出这些数。

编程题26:

主函数输入整数的个数,用指针变量动态申请内存,并用键盘按任意次序输入n个整数,用子函数voidbubble(int[],int)实现从小到大的冒泡排序。

第9章结构

编程题27:

建立一个链表,每个结点包括:

学号、姓名、性别、年龄,输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去。

编程题28:

13个人围成一圈,从第一个人开始顺序报号,凡报到3者退出圈子,找出最后留在圈子中的人原来的序号。

要求用链表实现。

编程题29:

阅读链表操作相关函数,完成指定的操作函数。

链表内容仅限表头表尾添加、删除、查询、显示、保存,不考排序、中间节点的插入和删除

#include""

#include""

#include""

structStudent

{

charname[20];

intnum;

intmath;

structStudent*next;

};

structStudent*Create(structStudent*head);低级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.point1xB._point1xC.2pointxD.pointx_2

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

A.MAXB._MINC.MAX$D.MIN_2

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

A.point1_B._point1xC.pointxD.pointx_?

#

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

A.2_point1xB._point1xC.pointxD.pointx_2

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

A.P_0     B._abc     C.goto     D.temp

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

A.’abc’     B.“12’12”     C.“0”     D.“”

13.已知inta;floatf;scanf(“a=%d,f=%f”,&a,&f);为了把10和分别赋值给a和f,则正确的输入为(C)

A.10,B.10C.a=10,f=D.a=10f=

14.输入语句为:

scanf("%f,%f\n",&radius,&high);下列键盘输入(D)是正确的。

A.12↙;B.1,2\n↙;C.1↙2↙;D.1,2↙;

15.输入语句为:

scanf("a=%f,b=%f",&radius,&high);从键盘输入(D)是正确的。

A.12↙;B.1,2↙;C.1↙2↙;D.a=1,b=2↙;

16.输入语句为:

scanf("a=%f,b=%f\n",&radius,&high);从键盘输入(D)是正确的。

A.12↙;B.1,2↙;C.1↙2↙;D.a=1,b=2\n↙;

17.输入语句为:

scanf("a=%fb=%f",&radius,&high);从键盘输入(D)是正确的。

A.12↙;B.1,2↙;C.1↙2↙;D.a=1b=2↙;

18.doublePI=,输出语句为:

printf("%",PI);下列输出结果(D)是正确的。

A.;B.;C.;D.;

19.doublePI=,输出语句为:

printf("%",PI);下列输出结果(B)是正确的。

A.;B.;C.;D.;

20.doublePI=,输出语句为:

printf("%",PI);下列输出结果()是正确的。

A.;B.;C.;D.;

21.设x,y均为float型变量,则下列不合法的赋值语句是()

A.++x    B.y=(x%2)/10

C.x*=y+8 D.x=y=0

22.doublePI=,输出语句为:

printf("%",PI);下列输出结果()是正确的。

A.;B.;C.;D.;

23.inta=-1;C语言整型数分配4个字节,在计算机中下列十六进制表示的(A)是正确的。

A.ffffffff;B.;C.;D.00000001;

24.inta=1;C语言整型数分配4个字节,在计算机中下列十六进制表示的a()是正确的。

A.00000001;B.;C.;D.ffffffff;

25.?

inta=-1;C语言整型数分配4个字节,在计算机中下列十六进制表示的a()是正确的。

A.;B.-00000001;C.-1;D.ffffffff;*

26.inta=-1;C语言整型数分配4个字节,在计算机中下列十六进制表示的a()是正确的。

A.-ffffffff;B.;C.ffffffff;D.-1;**

27.设有下列变量说明:

chara;intx;floaty;doublez;则表达式a*x-z+y的值的数据类型为()。

***

A.float  B.char  C.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.25    B.1     C.2     D.3

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

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

32.若s是int型变量,则表达式s%2+(s+1)%2的值为()

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

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

含义的C语言表达式是()

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

34.若x、i、j、k均为int变量,则计算表达式x=(i=4,j=16,k=32);后,x的值为()

A.4B.16C.32D.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.16     B.–16     C.7     D.10

37.若a是int型变量,且其初值为6,则计算表达式a+=a-=a*a后,a的值为()

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

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

A.21    B.-14    C.14    D.-21

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

A.在程序运行时进行的 

B.在程序连接时进行的

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

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

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

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

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

C.凡是C源程序中行首以“#”标识的控制行都是预处理命令

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

41.以下在任何情况下计算平方数时都不会引起二义性的宏定义是()

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

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

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

A.宏替换不占用运行时间B.宏替换只是字符替换

C.宏替换在编译之前进行D.宏名必须用大写字母表示

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

voidmain()

{charc1,c2;

c1=’A’+’5’-‘3’;c2=’A’+’6’-‘3’;

printf(“%d,%c”,c1,c2)

}

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

二、填空题

1.在C语言中,实型变量可以分为两种类型,它们是     和     。

2.若x,a为整型变量,则计算表达式x=(a=4,6*2)后的x值为     ,计算表达式x=a=4,6*2后的x值为     。

3.若x和n均是int型变量,且x和n的初值均为5,则计算表达式x+=n++后x的值   ,n的值为  。

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

1.程序段:

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

main()

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

的结果是     。

2.程序段:

#definey(t)(t)*(t)

main()

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

的结果是     。

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

#include<>

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

voidmain()

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

printf("%d\n",M(a+b,b+c,c+a));!

(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=1,则表达式x-y

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

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

A.if(x>y&&x!

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

C.if(x!

=y)x=1elsex=2;D.if(x

12.设有定义inta=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后n的值是()

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

二、填空题

1.在C语言中,若x,y,z均为int型变量,则“x或y中有一个小于z”的表达式描述形式为        。

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

1.#include<>

voidmain()

{

intx=1,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.以下程序的运行结果是   。

#include<>

voidmain()

{

intx=5;

if(x++>5)

printf(“%d\n”,x);

else

printf(“%d\n”,x--);

}

四、程序填空

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

请为程序填空。

#include<>

voidmain()

{

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

   ;

if(   )

u=a;

else

u=b;

if(   )

v=u;

else   ;

printf(“v=%d\n”,v);

}

2.下列程序的功能是根据下列函数关系,输入x的值,计算y的值。

请为程序填空。

#include<>

voidmain()

{

intx,y;

scanf(“%d”,  );

if(   )

y=x*(x+5);

elseif(   )

y=4*x;

else

   ;

printf(“%d\n”,y);

}

第5章循环结构程序设计

一、选择题

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

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

2.对于程序段intk=10;while(k)k=k-1;下面描述正确的是()。

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

3.程序段:

a=10;b=0;

do{

b+=2;

a-=2+b;

}while(a>=0);

中循环体的执行次数()

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

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

4.设i为整型变量,则语句for(i=2;i==0;)a=3;中循环体的执行次数为()

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

5.设有下列程序段:

x=1;

do{

x=x*x;

}while(!

x)

则该循环是()

A.死循环 B.循环执行一次 C.循环执行二次 D.语句错误

6.设有程序段:

intk=10;

while(k==0)

k--;

则下列描述中正确的是()

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

C.while循环执行0次 D.while循环执行1次

7.程序段:

x=y=0;

while(x<15)

y++,x+=++y;

执行后x值是()

A.7   B.12    C.8     D.20

8.与语句while(!

E)中表达式!

E等价的是()

A.E==0   B.E!

=1  C.E!

=0     D.E==1

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

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

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

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

D.while

(1){a++;};

10.程序段i=11;

do

{i++;

}while(i<=10);

执行后i的值为()

A.11   B.12  C.10  D.不确定

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

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

12.for(x=0,y=0;(y=123)&&(x<4);x++);的循环执行次数为()

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.0   B.1  C.2     D.不确定

二、填空题

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

for(表达式1;表达式2;表达式3)循环体语句

则执行语句:

for(i=0;i<4;i++)printf(“*”);时,表达式1执行     次,表达式3执行了     次。

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

1.设有程序段

k=1;n=263;

do

{k*=n%10;

n/=10;}

while(n);

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

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

#include<>

main()

{

inty=10;

do{

y--;

}while(--y);

printf(“%d,”,y--);

}

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

#include<>

main()

{

inty=-10;

do{

y++;

}while(++y);

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

*/

}

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

#include<>

voidmain()

{

inti;

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

switch(i%5)

{

case0:

printf(“*”);break;

case1:

printf(“#”);break;

default:

printf(“,”);

case2:

printf(“&”);

}

}

四、程序填空

1.下列程序的功能是采用“顺序查找法”查找数组中是否存在元素x。

请为程序填空。

#include<>

voidmain()

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1