Res第五周实验及练习情况总结.docx

上传人:b****7 文档编号:10186651 上传时间:2023-02-09 格式:DOCX 页数:19 大小:20.56KB
下载 相关 举报
Res第五周实验及练习情况总结.docx_第1页
第1页 / 共19页
Res第五周实验及练习情况总结.docx_第2页
第2页 / 共19页
Res第五周实验及练习情况总结.docx_第3页
第3页 / 共19页
Res第五周实验及练习情况总结.docx_第4页
第4页 / 共19页
Res第五周实验及练习情况总结.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

Res第五周实验及练习情况总结.docx

《Res第五周实验及练习情况总结.docx》由会员分享,可在线阅读,更多相关《Res第五周实验及练习情况总结.docx(19页珍藏版)》请在冰豆网上搜索。

Res第五周实验及练习情况总结.docx

Res第五周实验及练习情况总结

C语言练习题

一、填空题

1.C语言程序的三种基本结构是_顺序_、_分支_、__循环__。

2.C语言程序的三种逻辑运算符是__&&______、___||_____、____!

_____。

为了避免嵌套的条件语句if–else的二义性,C语言规定else与____最近的且没有和其他else匹配过的______if配对。

3.C语言没有逻辑数据,在给出逻辑运算结果时,以___1____代表“真”,以_____0_代表“假”,但在判断一个量是否为真时,以___非0____代表“真”,以____0___代表“假”。

4.条件“22&&x<4||x<-20________________。

5.执行下列语句后,a,b,c值依次为____8__、__8_____、___10__。

intx=10,y=9;

inta,b,c;

a=(--x==y++)?

--x:

++y;

b=x++;

c=y;

6.设i为整型变量,则for(i=2;i==0;)printf(“%d”,i--);循环_____0_____次。

二、选择题

1.若要求在if后面一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表示式为(D)

A.a<>0B.!

aC.a=0D.a

2.C语言中while与do…while语句的区别是(A)

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

B.do—while允许从外部转到循环体内

C.do—while的循环体不能是复合语句

D.while的循环控制条件比do—while的循环控制条件严格

3.以下的for循环(B)

for(x=0,y=0;(y!

=123)&&(x<4);x++)

A.循环3次B.执行4次C.循环次数不定D.无限循环

4.若w=1,x=2,y=3,z=4则条件表达式w

w:

y

y:

z的结果是(D)

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

5.逻辑运算符两侧运算对象的数据类型(D)

A.只能是0或1B.只能是0或非0正数

C.只能是整型或字符型数据D.可以是任何类型数据

6.while(!

x)中的(!

x)与下面条件(C)等价

A.(x!

=1)B.(x==1)C.(x==0)D.(x!

=0)

7.以下关于switch语句和break语句的描述,只有(C)是正确的。

A.在switch语句中必须使用break语句

B.break语句中只能用于switch语句中

C.在switch语句中,可以根据需要使用或不使用break语句

D.break语句是switch语句一部分

8.若a为int变量,则执行以下语句后的结果为(A)

a=5;

do{

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

}while(!

a);

A.5B.不打印任何内容C.4D.陷入死循环

9.下面程序段的运行结果是(C)

a=1;b=2;c=3

while(a

printf(“%d,%d,%d”,a,b,c);

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

10.若x是int型变量,则执行下列语句后结果是(C)

for(x=1;x<=100;x++)

if(++x%2==0)

if(++x%3==0)

if(++x%5==0)

printf(“%d“,x);

A.306090B.295089C.不打印任何内容D.316191

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

1.#include

main()

{inti,j=4;for(i=j;i<=2*j;i++)

switch(i/j)

{case0:

case1:

printf(“*”);break;

case2:

printf(“#”);

}

}

****#

2.main()

{inti,j,k;

charspace=‘’;

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

{for(j=1;j<=i;j++)

printf(“%c”,space);

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

printf(“%c”,’*’);

printf(“\n”);

}

}

******

******

******

******

******

******

3.main()

{intx=18,i;

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

if(x%i==0)

{printf(“%d",i);

x=x/i--;

if(x==0)break;

}

}

233

30004

程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat(0

输入五级制成绩(A-E),输出相应的百分制成绩(0-100)区间,要求使用switch语句。

五级制成绩对应的百分制成绩区间为:

A(90-100)、B(80-89)、C(70-79)、D(60-69)和E(0-59),如果输入不正确的成绩,显示"Invalidinput"。

输出使用以下语句:

printf("90-100\n");

printf("80-89\n");

printf("70-79\n");

printf("60-69\n");

printf("0-59\n");

printf("Invalidinput\n");

输入输出示例:

括号内是说明

输入

6ABCDEj(repeat=6,输入的五级成绩分别为A、B、C、D、E和无效的字符j)

输入时不要空格或回车

输出

90-100

80-89

70-79

60-69

0-59

Invalidinput(输入数据不合法)

#include

intmain(void)

{

charch;

intrepeat,ri;

scanf("%d",&repeat);

for(ri=1;ri<=repeat;ri++){

ch=getchar();

switch(ch)

{case'A':

printf("90-100\n");break;

case'B':

printf("80-89\n");break;

case'C':

printf("70-79\n");break;

case'D':

printf("60-69\n");break;

case'E':

printf("0-59\n");break;

default:

printf("Invalidinput\n");

}

}

}

30005

查询水果的单价。

有4种水果,苹果(apples)、梨(pears)、桔子(oranges)和葡萄(grapes),单价分别是3.00元/公斤,2.50元/公斤,4.10元/公斤和10.20元/公斤。

在屏幕上显示以下菜单(编号和选项),用户可以连续查询水果的单价,当查询次数超过5次时,自动退出查询;不到5次时,用户可以选择退出。

当用户输入编号1~4,显示相应水果的单价(保留1位小数);输入0,退出查询;输入其他编号,显示价格为0。

输入输出示例:

括号内是说明

输入

3(oranges的编号)

0(退出查询)

输出

[1]apples

[2]pears

[3]oranges

[4]grapes

[0]Exit

price=4.1

[1]apples

[2]pears

[3]oranges

[4]grapes

[0]Exit

#include

intmain(void)

{

intchoice,i;

doubleprice;

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

printf("[1]apples\n");

printf("[2]pears\n");

printf("[3]oranges\n");

printf("[4]grapes\n");

printf("[0]Exit\n");

scanf("%d",&choice);

if(choice==0)

break;

else{

switch(choice){

case1:

price=3;break;/*注意是整型值而不应用字符常量,如’1’*/

case2:

price=2.5;break;

case3:

price=4.1;break;

case4:

price=10.2;break;

default:

price=0.0;

}

printf("price=%0.1f\n",price);

}

}

}

30009

输入一个正整数n,再输入n个学生的百分制成绩,统计各等级成绩的个数。

成绩等级分为五级,分别为A(90-100)、B(80-89)、C(70-79)、D(60-69)和E(0-59)。

输入输出示例:

括号内是说明

输入

5(n=5)

7754927360

输出

NumberofA(90-100):

1

NumberofB(80-89):

0

NumberofC(70-79):

2

NumberofD(60-69):

1

NumberofE(0-59):

1

#include

intmain(void)

{

inti,mark,n;

intna,nb,nc,nd,ne;

scanf("%d",&n);

na=nb=nc=nd=ne=0;

for(i=1;i<=n;i++){

scanf("%d",&mark);

switch(mark/10)

{case10:

case9:

na++;break;

case8:

nb++;break;

case7:

nc++;break;

case6:

nd++;break;

case5:

case4:

case3:

case2:

case1:

case0:

ne++;break;

}

}

printf("NumberofA(90-100):

%d\n",na);

printf("NumberofB(80-89):

%d\n",nb);

printf("NumberofC(70-79):

%d\n",nc);

printf("NumberofD(60-69):

%d\n",nd);

printf("NumberofE(0-59):

%d\n",ne);

}

30061

输入一个正整数repeat(0

某城市普通出租车收费标准如下:

"起步里程3公里,起步费10元;超起步里程后10公里内,每公里租费2元,超过10公里以上的部分加收50%的回空补贴费,即每公里租费3元。

营运过程中,因路阻及乘客要求临时停车的,每5分钟按1公里租费计收。

运价计费尾数四舍五入,保留到元。

"。

编写程序,输入行驶里程(公里)与等待时间(分钟),计算并输出乘客应支付的车费(元)。

提示:

先将等待的时间折算成公里数,与原公里数相加后再处理。

输入输出示例:

括号内是说明

输入

3(repeat=3)

1.6252(行驶1.6公里,等待2分52秒)

3.1615(行驶3.1公里,等待6分15秒)

11.8230(行驶11.8公里,等待2分30秒)

输出

cost=10

cost=13

cost=31

注意点:

1先将时间折算成公里数.

2无须加0.5,输出时自动四舍五入的.

#include

intmain(void)

{

intrepeat,ri;

intminutes,seconds;

doublecost,mile;

scanf("%d",&repeat);

for(ri=1;ri<=repeat;ri++){

scanf("%lf%d%d",&mile,&minutes,&seconds);

mile=mile+(seconds/60.0+minutes)/5.0;

if(mile<=3)cost=10;

elseif(mile<=10)cost=10+(mile-3)*2;

else

cost=24+3*(mile-10);

printf("cost=%.0f\n",cost);

}

}

40012

程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat(0

读入1个正实数eps,计算并输出下式的值,精确到最后一项的绝对值小于eps(保留6位小数)。

请使用while语句实现循环。

计算:

1-1/4+1/7-1/10+1/13-1/16+……

输入输出示例:

括号内是说明

输入

2(repeat=2)

2E-4(eps=2E-4)

0.02(eps=0.02)

输出

sum=0.835549

sum=0.826310

#include

#include

intmain(void)

{

intdenominator,flag;

intrepeat,ri;

doubleeps,item,sum;

scanf("%d",&repeat);

for(ri=1;ri<=repeat;ri++){

scanf("%le",&eps);

sum=0;

flag=1;

item=1;

denominator=1;

while(fabs(item)>=eps)

{item=flag*1.0/denominator;

sum=sum+item;

denominator=denominator+3;

flag=-flag;}

printf("sum=%.6f\n",sum);

}

}

40013

输入一个正整数repeat(0

读入一批正整数(以零或负数为结束标志),求其中的奇数和。

请使用while语句实现循环。

输入输出示例:

括号内是说明

输入

2(repeat=2)

139070

87437056101-1

输出

Thesumoftheoddnumbersis11.

Thesumoftheoddnumbersis116.

#include

intmain(void)

{

intx,sum;

intrepeat,ri;

scanf("%d",&repeat);

for(ri=1;ri<=repeat;ri++){

scanf("%d",&x);

sum=0;

while(x>0)

{if(x%2==1)sum=sum+x;

scanf("%d",&x);

}

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

}

}

40014

输入一个正整数repeat(0

输入一个整数in,求它的位数。

例如123的位数是3。

请使用do-while语句实现循环。

输入输出示例:

括号内是说明

输入

4(repeat=4)

12345(in=12345)

-100(in=-100)

-1(in=-1)

1290(in=1290)

输出

count=5(12345的位数是5)

count=3(-100的位数是3)

count=1(-1的位数是1)

count=4(99的位数是2)

注意点:

负数和0

#include

intmain(void)

{

intcount,in;

intrepeat,ri;

scanf("%d",&repeat);

for(ri=1;ri<=repeat;ri++){

scanf("%d",&in);

count=0;

if(in<0)in=-in;

do{

in=in/10;

count++;

}while(in!

=0);

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

}

}

40019

输入一个正整数repeat(0

皮球从height(米)高度自由落下,触地后反弹到原高度的一半,再落下,再反弹,……,如此反复。

问皮球在第n次落地时,在空中一共经过多少距离?

第n次反弹的高度是多少?

(输出保留1位小数)

输入输出示例:

括号内是说明

输入

3(repeat=3)

102(height=10m,n=2)

41(height=2m,n=1)

1008(height=100m,n=8)

输出

distance=20.0,height=2.5(第2次落地时,空中经过距离为20米,第2次反弹高度为2.5米)

distance=4.0,height=2.0(第1次落地时,空中经过距离为4米,第1次反弹高度为2米)

distance=298.4,height=0.4(第8次落地时,空中经过距离为298.4米,第8次反弹高度为0.4米)

#include

intmain(void)

{

inti,n;

intrepeat,ri;

doubledistance,height;

scanf("%d",&repeat);

for(ri=1;ri<=repeat;ri++){

scanf("%lf%d",&height,&n);

distance=height;

height=0.5*height;

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

{distance=distance+height*2.0;height=0.5*height;

}

printf("distance=%.1f,height=%.1f\n",distance,height);

}

}

40024

输入一个正整数repeat(0

输入两个正整数m和n(1<=m,n<=1000),输出m与n之间(含m,n)的所有满足各位数字的立方和等于它本身的数。

例如153的各位数字的立方和是1^3+5^3+3^3=153,这里a^b表示a的b次方。

输出使用语句:

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

输入输出示例:

括号内为说明

输入:

2(repeat=2)

100400(m=100,n=400)

1100(m=1,n=100)

输出:

result:

153(1*1*1+5*5*5+3*3*3=153)

370(3*3*3+7*7*7=370)

371(3*3*3+7*7*7+1*1*1=371)

result:

1(1*1*1=1)

#include"stdio.h"

intmain(void)

{

inti,digit,m,n,number,sum;

intrepeat,ri;

scanf("%d",&repeat);

for(ri=1;ri<=repeat;ri++){

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

printf("result:

\n");

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

{number=i;sum=0;

while(number!

=0)

{digit=number%10;

sum=sum+digit*digit*digit;

number=number/10;

}

if(sum==i)printf("%d\n",i);

}

}}

40052

输入一个正整数n,再输入n个正整数,判断它们是否为素数。

素数就是只能被1和自身整除的正整数,1不是素数,2是素数。

输出使用以下语句:

printf("%disaprime\n",m);

printf("%dis'ntaprime\n",m);

输入输出示例:

括号内为说明

输入

4(n=4)

12917

输出

1is'ntaprime

2isaprime

9is'ntaprime

17isaprime

#include

#include

intmain(void)

{

intflag,i,j,k,m,n;

scanf("%d",&n);

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

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

if(m==1)printf("%dis'ntaprime\n",m);

else{

k=sqrt(m);

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

if(m%j==0)break;

if(j>k)printf("%disaprime\n",m);

elseprintf("%dis'ntaprime\n",m);}

}

}

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

当前位置:首页 > 表格模板 > 合同协议

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

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