您的位置:首页 > 产品设计 > UI/UE

38 用break和continue改变流程 课后

2015-12-18 21:01 447 查看
项目一

代码:

/*计分器扩展版*/
#include <stdio.h>
#define n 10
int main()
{
double a,sum,max,min,b;
char c;
int i;
do
{
sum=0;
max=-1;
min=11;
i=1;
do
{
printf("请输入第%d位评委的打分",i);
b=scanf("%lf",&a);
if(b==0)
{
printf("非法字符,请输入0-10之间的数\n");
rewind(stdin);//重新指向键盘缓冲区开头,或者用fseek(stdin,0L,2)和while ( (c = getchar()) != '\n' && c != EOF)或者fflush(stdin)也是可以的
continue;
}
else if(a>=0&&a<=10)
{
sum=sum+a;
if(a>max)
max=a;
if(a<min)
min=a;

}
else
{
printf("输入错误!请重新输入\n");
continue;
}
i++;
}while(i<=10);

printf("评委给出的最高分为%f\n",max);
printf("评委给出的最低分为%f\n",min);
printf("减去一个最高分%f,减去一个最低分%f\n",max,min);
printf("该选手最后的总得分为%f\n",sum-max-min);
printf("该选手最后的平均分为%f\n",(sum-max-min)/(n-2));
printf("该选手的成绩统计完毕,退出请按N,继续统计下一位请按任意键……………\n");
fflush(stdin);
c=getchar();
}while(c!='n'&&c!='N');
return 0;
}
查阅了很多相关资料,这里用了一个利用scanf返回值来判断输入的是否是非法字符的方法,当输入不符合scanf输出格式的字符时候,scanf返回值为错误的那个减一,反之为正确输入并赋值的个数,我们可以判断其返回值来判定我们输入的字符是否是我们我们需要的格式

项目二

代码:

/*打豆豆*/
#include <stdio.h>
#define n 10
int main()
{
char a;
do
{
printf("* 1. 吃饭\n");
printf("* 2. 睡觉\n");
printf("* 3. 打豆豆\n");
printf("* 0. 退出\n");
printf("* 请选择(0-3):");
rewind(stdin);//这句是防止第二次循环a的值被缓冲区其他数据赋值
scanf("%c",&a);
if(a=='0')
{
printf("哎啊!我撤退!\n");break;
}
else switch(a)
{
case '1':
printf("我饿,我吃我吃我吃吃吃!\n");break;
case '2':
printf("我困,我睡我睡我睡睡睡!\n");break;
case '3':
printf("我烦,我打我打我打打打!\n");break;
default:
printf("笨蛋!输入错误,重新输入\n");
}
}while(1);
return 0;
}
这题因为我们要在输入0的时候跳出整个程序,所以我们单独处理,这里要注意,break不对if-else语句起作用,它会跳出包含if语句的这个循环,只跳出一层循环
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: