第三十八课 用break和continue改变流程 【项目1-2】
(为什么做题的时候不紧不慢的,写博客的时候却这么积极
。。)
项目一【大奖赛计分3.0】
在歌手大奖赛中,有10个评委为参赛的选手打分,分数为1~10分。请在大奖赛计分程序基础上,增加功能,若用户输入不在0-10范围内,则立即要求重输,直到正确。
代码:
#include<stdio.h>
int main()
{
int j,i=1,num1,num2=10;
double sum=0,t,a,b;
char c;
printf("输入选手人数:");
scanf("%d",&num1);
do
{
a=-1;
b=11;
sum=0;
j=1;
printf("\n第%d位选手开始评分\n",i);
do
{
printf("第%d位评委打分:",j);
scanf("%lf",&t);
if(t>10||t<0)
{
printf("输入错误!请重新输入\n");
continue;
}
sum=sum+t;
if(t<=b)
b=t;
if(t>=a)
a=t;
j++;
}
while(j<=num2);
sum=sum-a-b;
sum=sum/(num2-2);
printf("\n去掉最高分:%.2f, 去掉最低分:%.2f\n",a,b);
printf("第%d位选手最后得分:%.2f\n",i,sum);
i++;
printf("*** N键退出,其他键继续 ***");
fflush(stdin);
c=getchar();
}
while(i<=num1&&c!='n'&&c!='N');
printf("\n%d位选手已评分完毕!\n",i-1);
return 0;
}
运行结果:
大奖赛计分最终版完成!
————————————————————————————————————————————————————————————————————
项目二【打豆豆】
设计一个程序,能重复地在显示下面的信息:
* 1. 吃饭
* 2. 睡觉
* 3. 打豆豆
* 0. 退出
* 请选择(0-3):
根据用户输入的选项,输出一句提示性的话语(将来会对应实现某个功能)。输入0,则退出。
请在下面的程序段基础上完成
* 1. 吃饭
* 2. 睡觉
* 3. 打豆豆
* 0. 退出
* 请选择(0-3):
根据用户输入的选项,输出一句提示性的话语(将来会对应实现某个功能)。输入0,则退出。
请在下面的程序段基础上完成
代码:
#include<stdio.h>
int main ()
{
int c;
do
{
printf(" 请选择每日任务(数字1-3):\n");
printf("1:签到!");
printf("2:我饿了! ");
printf("3:我困了! ");
printf("4:还没有打豆豆! ");
printf("0:完成任务退出系统\n");
scanf("%d",&c);
if(c==1)
printf("签到成功!\n");
else if(c==2)
printf("饥饿度-----0%%!\n");
else if(c==3)
printf("精神值-----100%%!\n");
else if(c==4)
printf("豆豆已被你打败!\n");
else if(c==0)
break;
else
{
printf("\007选择错误!重试!");
}
printf("\n");
}
while(1);
printf("任务完成,明天再来!\n");
return 0;
}
运行结果:
知识点心得:
break 和 continue 两个语句用法特别,会比原来的程序增加更多的进入点和退出点,有时候会不如以前简洁,产生BUG,但需要的时候还是应该用上的。
break 语句 switch 里,只会跳出 switch 语句,在它之外的循环或者条件语句不受影响。
80