实验4选择结构参考答案.docx

上传人:b****5 文档编号:8029699 上传时间:2023-01-28 格式:DOCX 页数:19 大小:38.81KB
下载 相关 举报
实验4选择结构参考答案.docx_第1页
第1页 / 共19页
实验4选择结构参考答案.docx_第2页
第2页 / 共19页
实验4选择结构参考答案.docx_第3页
第3页 / 共19页
实验4选择结构参考答案.docx_第4页
第4页 / 共19页
实验4选择结构参考答案.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

实验4选择结构参考答案.docx

《实验4选择结构参考答案.docx》由会员分享,可在线阅读,更多相关《实验4选择结构参考答案.docx(19页珍藏版)》请在冰豆网上搜索。

实验4选择结构参考答案.docx

实验4选择结构参考答案

C语言程序设计实验教学(4)

【实验目的】通过程序设计实现,掌握if结构和switch结构的正确应用。

【实验要求】使用if结构和switch结构实现多种条件的选择结构程序,熟练二者的应用范围和注意事项。

练习条件表达式的书写。

【实验课时】4.0

【实验内容】

1、编写程序,实现从键盘上输入一个整数,判断其奇偶性。

#include

voidmain()

{inta;

scanf("%d",&a);

if(a%2==0)

printf("%disoushu.\n",a);

else

printf("%disjishu.\n",a);}

2、输入一个整数,判断它能否被3或7整除,若能整除,输出“YES”,

否则输出“NO”。

#include

voidmain()

{intn;

scanf("%d",&n);

if(n%3==0||n%7==0)/*判断能否被3或7整除*/

printf("YES\n");

else

printf("NO\n");

}

3、编写程序,实现从键盘上输入3个整数a,b,c,并输出其中最大的数。

#include

voidmain()

{inta,b,c,max;

scanf("%d,%d,%d",&a,&b,&c);

max=a>b?

a:

b;

max=max>c?

max:

c;

printf("maxis%d\n",max);}

#include

voidmain()

{inta,b,c,max;

scanf("%d,%d,%d",&a,&b,&c);

if(a>b)max=a;

elsemax=b;

if(c>max)max=c;

printf("maxis%d\n",max);}

#include

voidmain()

{inta,b,c,max;

scanf("%d,%d,%d",&a,&b,&c);

if(a>b)

if(a>c)

max=a;

else

max=c;

else

if(b>c)

max=b;

else

max=c;

printf("maxis%d\n",max);}

4、编写程序,实现从键盘上输入4个整数,并按从大到小顺序输出。

#include

voidmain()

{inta,b,c,d,t;

scanf("%d,%d,%d,%d",&a,&b,&c,&d);

if(a>b){t=a;a=b;b=t;}

if(a>c){t=a;a=c;c=t;}

if(a>d){t=a;a=d;d=t;}

if(b>c){t=b;b=c;c=t;}

if(b>d){t=b;b=d;d=t;}

if(c>d){t=c;c=d;d=t;}

printf("sortedbysmalltolarge:

%d,%d,%d,%d\n",a,b,c,d);}

5、完成下列分段函数的计算:

分别使用if-elseif和if-if的嵌套结构来实

现。

方法一(用if——elseif结构表达)

#include

#include

voidmain()

{intx,y;

clrscr();

printf("Pleaseinputvalueofx:

\n");

scanf("%d",&x);

if(x<0)

y=1;

elseif(x<=10)

y=x+1;

else

y=x*x+x+1;

printf("x=%d,y=%d\n",x,y);}

方法二(用if——if结构表达)

#include

#include

voidmain()

{intx,y;

clrscr();

printf("Pleaseinputvalueofx:

\n");

scanf("%d",&x);

if(x<=10)

if(x<0)

y=1;

else

y=x+1;

else

y=x*x+x+1;

printf("x=%d,y=%d\n",x,y);}

6、输入x和a的值,按下列公式计算y的值。

程序代码一:

#include

#include

voidmain()

{floatx,a,y;

printf("\nPleaseinputx,a:

");

scanf("%f,%f",&x,&a);

if(x>-a&&x

y=sqrt(a*a-x*x);

if(x==a||x==-a)/*或fabs(x)==a*/

y=0;

if(x<-a||x>a)/*或fabs(x)>a*/

y=x-1;

printf("x=%g,a=%g,y=%g\n",x,a,y);

}

程序代码二:

#include

#include

voidmain()

{floatx,a,y;

printf("\nPleaseinputx,a:

");

scanf("%f,%f",&x,&a);

if(fabs(x)-a&&x

y=sqrt(a*a-x*x);

elseif(fabs(x)==a)/*或x==a||x==-a*/

y=0;

else

y=x-1;

printf("x=%g,a=%g,y=%g\n",x,a,y);

}

程序代码三:

#include

#include

voidmain()

{floatx,a,y;

printf("\nPleaseinputx,a:

");

scanf("%f,%f",&x,&a);

if(fabs(x)<=a)

if(fabs(x)

y=sqrt(a*a-x*x);

else

y=0;

else

y=x-1;

printf("x=%g,a=%g,y=%g\n",x,a,y);

}

7、编写一个程序,判断从键盘上输入的一个年份是否为闰年?

方法一:

#include

#include

voidmain()

{intyear;

clrscr();

printf("Pleaseinputayear:

\n");

scanf("%d",&year);

if(year%4==0&&year%100!

=0||year%400==0)

printf("%disaleapyear\n",year);

else

printf("%disnotaleapyear\n",year);}

方法二:

(用ifif结构表达)

#include

#include

voidmain()

{intyear,leap;

clrscr();

printf("Pleaseinputayear:

\n");

scanf("%d",&year);

if(year%4==0)

if(year%100==0)

if(year%400==0)

leap=1;

else

leap=0;

else

leap=1;

else

leap=0;

if(leap==1)

printf("%disaleapyear\n",year);

else

printf("%disnotaleapyear\n",year);}

方法三:

(用ifelseif结构表达)

#include

#include

voidmain()

{intyear,leap;

clrscr();

printf("Pleaseinputayear:

\n");

scanf("%d",&year);

if(year%400==0)

leap=1;

elseif(year%100==0)

leap=0;

elseif(year%4==0)

leap=1;

else

leap=0;

if(leap==1)

printf("%disaleapyear\n",year);

else

printf("%disnotaleapyear\n",year);}

8、输入一个三位自然数num,判断其是否为水仙花数?

注:

一个3位自然数,各个数位的数字立方和等于该数本身,即称为水仙花数。

如:

153=13+53+33。

#include

#include

voidmain()

{intm,a,b,c;

clrscr();

printf("Pleaseinputanum(100<=num<=999):

\n");

scanf("%d",&m);

a=m/100;b=m/10%10;c=m%10;

if(a*a*a+b*b*b+c*c*c==m)

printf("%dissxhshu.\n",m);

else

printf("%disnotsxhshu.\n",m);}

9、编写一个程序,实现对给出的一百分制成绩,输出相应的成绩等级。

即:

90分以上为’A’,80~89分为’B’,70~79分为’C’,60~69分为’D’,60分以下为’E’。

方法一:

(用if结构)

#include

#include

voidmain()

{floatscore;chargrade;

clrscr();

printf("Pleaseinputascore(0<=score<=100):

\n");

scanf("%f",&score);

if(score>=90)

grade='A';

elseif(score>=80)

grade='B';

elseif(score>=70)

grade='C';

elseif(score>=60)

grade='D';

else

grade='E';

printf("scoreis%5.1f,gradeis%c.\n",score,grade);}

方法二:

(用switch结构)

#include

#include

voidmain()

{floatscore;chargrade;

clrscr();

printf("Pleaseinputascore(0<=score<=100):

\n");

scanf("%f",&score);

switch((int)(score/10))

{case10:

case9:

grade='A';break;

case8:

grade='B';break;

case7:

grade='C';break;

case6:

grade='D';break;

default:

grade='E';

}

printf("scoreis%5.1f,gradeis%c.\n",score,grade);}

10、输入华氏温度F,利用公式C=5/9*(F-32)转换成摄氏温度C,根据

转换结果C的不同值,按以下要求给出相应的提示。

C>40时,打印“Hot”

30

20

10

0

C≤0时,打印“Freezing”

程序代码如下:

#include

voidmain()

{floatf,c;

printf("Inputthefahrenheittemperature:

");

scanf("%f",&f);

c=5.0/9.0*(f-32);/*将华氏温度转换成摄氏温度*/

if(c>40)

printf("Hot\n");

elseif(c>30)

printf("Warm\n");

elseif(c>20)

printf("RoomTemperature\n");

elseif(c>10)

printf("Cool\n");

elseif(c>0)

printf("Cold\n");

else

printf("Freezing\n");

}

11、某商场开展购物打折活动,若购物款x在下述范围内,所付款y按

对应折扣支付:

x(x<1000)

y=

0.9x(1000≤x<2000)

0.8x(2000≤x<3000)

0.7x(x≥3000)

程序代码一:

#include

voidmain()

{floatx,y;

printf("Inputx:

");

scanf("%f",&x);

if(x<0)

printf("Inputerror.\n");

else

{if(x<1000)

y=x;

elseif(x<2000)

y=0.9*x;

elseif(x<3000)

y=0.8*x;

else

y=0.7*x;

printf("x=%.2f,y=%.2f\n",x,y);}

}

程序代码二:

#include

voidmain()

{floatx,y;intc;

printf("Inputx:

");

scanf("%f",&x);

if(x<0)

printf("Inputerror.\n");

else

{c=x/1000;

switch(c)

{case0:

y=x;break;

case1:

y=0.9*x;break;

case2:

y=0.8*x;break;

default:

y=0.7*x;

}

printf("x=%.2f,y=%.2f\n",x,y);

}

}

补充作业:

12、

完成下列分段函数的计算:

分别使用if-elseif-else结构和if-if嵌套结构来实现。

#include

#include

voidmain()

{floatx,y;

clrscr();

printf("Pleaseinputvalueofx:

\n");

scanf("%f",&x);

if(x<=1600)

y=0;

elseif(x<=2100)

y=(x-1600)*0.05;

elseif(x<=3100)

y=(x-1600)*0.1-25;

else

y=(x-1600)*0.15-125;

printf("x=%8.2f,y=%8.2f\n",x,y);}

13、

完成下列分段函数的计算:

分别使用if-elseif-else结构和if-if嵌套结构来实现。

#include

#include

#include

voidmain()

{floatx,y;

clrscr();

printf("Pleaseinputvalueofx:

\n");

scanf("%f",&x);

if(x<=0)

y=(x+2)*exp(x);

else

y=(x+2)*log(2*x);

printf("x=%8.2f,f(x)=%8.2f\n",x,y);}

14、完成下列分段函数的计算:

分别使用if-elseif-else结构和if-if嵌套结构来实现。

#include

#include

#include

voidmain()

{floatx,y;

clrscr();

printf("Pleaseinputvalueofx:

\n");

scanf("%f",&x);

if(x<=0)

y=0;

else

y=(fabs(x)+3.2)/(sin(x)+2);

printf("x=%8.2f,f(x)=%8.2f\n",x,y);}

15、完成下列函数的计算:

#include

#include

#include

voidmain()

{floatx,y;

clrscr();

printf("Pleaseinputvalueofx:

\n");

scanf("%f",&x);

y=(exp(x)+fabs(x-6))/(x+1.3);

printf("x=%8.2f,fun1(x)=%8.2f\n",x,y);}

16、完成下列函数的计算:

#include

#include

#include

voidmain()

{floatx,y;

clrscr();

printf("Pleaseinputvalueofx:

\n");

scanf("%f",&x);

y=(1+sin(x)+exp(x))/(x+1);

printf("x=%8.2f,fun1(x)=%8.2f\n",x,y);}

17、某服装店经营套服,也单件出售。

若买的不少于50套,每套80元;

不足50套的每套90元;只买上衣每件60元;只买裤子每条45。

以下程

序的功能是读入所买上衣c和裤子t的件数,计算应付款m。

#include

#include

voidmain()

{intc,t,d1,d2,m;

clrscr();

printf("Pleaseinputcandt:

\n");

scanf("%d,%d",&c,&t);

if(c>=t)

{d1=t;d2=c-t;

if(d1>=50)

m=d1*80+d2*60;

else

m=d1*90+d2*60;}

else

{d1=c;d2=t-c;

if(d1>=50)

m=d1*80+d2*45;

else

m=d1*90+d2*45;}

printf("c=%d,t=%d,m=%d\n",c,t,m);}

18、某邮局对邮寄包裹有如下规定:

若包裹的长宽高任一尺寸超过1米或

重量超过30千克,不予邮寄;对可以邮寄的包裹每件收手续费0.2元,再

加上根据下表按重量wei计算的邮资:

重量(千克)

收费标准(元/千克)

wei<10

0.80

10

0.75

20

0.70

#include

#include

voidmain()

{floatc,k,g,w,m;

clrscr();

printf("Pleaseinputc,k,gandw:

\n");

scanf("%f,%f,%f,%f",&c,&k,&g,&w);

if(c>100||k>100||g>100||w>30)

printf("cannottobemailed");

elseif(w<10)

m=0.2+w*0.8;

elseif(w<=20)

m=0.2+w*0.75;

else

m=0.2+w*0.7;

printf("c=%5.1f,k=%5.1f,g=%5.1f,w=%5.1f,m=%6.2f\n",c,k,g,w,m);}

}

19、请编写程序pro17.c。

从键盘输入当月利润I,求应发奖金总数。

根据利润进行奖金提成:

利润I低于或等于10万元的,奖金可提10%;

利润高于10万元,低于20万元(100000<I≤200000)时,低于10万元部分按10%提成,高于100000元的部分,提成7.5%;

200000<I≤400000时,低于20万元部分仍按上述办法提成(下同),高于20万元的部分,按5%提成;

400000<I≤600000时,高于40万元的部分,按3%提成;

600000<I≤1000000时,高于60万元部分,按1.5%提成;

I>1000000时,超过100万元的部分,按1%提成;

方法一:

用if语句编程序

#include

#include

voidmain()

{longi;floatbonus,bon1,bon2,bon4,bon6,bon10;

clrscr() ;

bon1=100000*0.1;/*利润为10万元时的奖金*/

bon2=bon1+100000*0.075;/*利润为20万元时的奖金*/

bon4=bon2+200000*0.05;/*利润为40万元时的奖金*/

bon6=bon4+200000*0.03;/*利润为60万元时的奖金*/

bon10=bon6+400000*0.015;/*利润为100万元时的奖金*/

printf("Pleaseinputi:

\n");

scanf("%ld",&i);

if(i<=100000)

bonus=i*0.1;/*利润在10万元以内按0.1提成奖金*/

elseif(i<=200000)

bonus=bon1+(i-100000)*0.075;/*利润在10万至20万元时的奖金*/

elseif(i<=400000)

bonus=bon2+(i-200000)*0.05;/*利润在20万至40万元时的奖金*/

elseif(i<=600000)

bonus=bon4+(i-400000)*0.03;/*利润在40万至60万元时的奖金*/

elseif(i<=1000000)

bonus=bon6+(i-600000)*0.015;/*利润在60万至100万元时的奖金*/

else

bonus=bon10+(i-1000000)*

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

当前位置:首页 > 工程科技 > 冶金矿山地质

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

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