yy红钻兑换比例:为什么程序结束后我输入y或者输入n都不能回到lll行

来源:百度文库 编辑:中科新闻网 时间:2024/05/04 23:54:53
#include <stdio.h>
void main()
{
long max,a[3],i,settle;
lll:printf("请输入三个整数\n");
for (i=0;i<3;i++)
scanf("%ld",&a[i]);
max=a[0];
for (i=0;i<3;i++)
if (a[i]>=max) a[0]=a[i];
printf("max=%ld\n",a[0]);
printf("你还要输入三个数吗?(y/n)");
scanf("%*d%ld",&settle);
settle=(settle>='A' && settle <='B') ? settle=settle+32 : settle;
if (settle=='y') goto lll;
else
printf("已完成任务,请关闭程序");
}

改如下几个地方:
①把settle定义成char型变量
②settle=(settle>='A' && settle <='B') 写错了,改成(settle>='A' && settle <='Z')
③scanf函数后面加一句getchar()用来吸收回车键
一点建议:
尽量不要用goto 语句去实现循环,可以用while-do代替.
改完如下:
#include <stdio.h>
void main()
{
long max,a[3],i;
char settle;
lll:printf("请输入三个整数\n");
for (i=0;i<3;i++)
scanf("%ld",&a[i]);
getchar();
max=a[0];
for (i=0;i<3;i++)
if (a[i]>=max) a[0]=a[i];
printf("max=%ld\n",a[0]);
printf("你还要输入三个数吗?(y/n)");
scanf("%c",&settle);
getchar();
(settle>='A' && settle <='Z') ? settle=settle+32 : settle;
if (settle=='y') goto lll;
else
printf("已完成任务,请关闭程序");
}