粟子 - 2006-7-22 19:58:00
main()
{
float x;
float y;
printf("please input x:");
scanf("%f",&x);
if(x<0.0)
y=0;
else if(x>0&&x<=10)
y=x;
else if(x>10&&x<=20)
y=10;
else if(x>20&&x<40)
y=-0.5*x+20;
else if(x>=40)
y=-1;
if(y!=-1)
printf("%f",y);
else
printf("error\n");
getch();
}
写了这样一个程序,当我输入一个数据时,执行结果是正确的.但是只能输入一次啊,假如再按任何键就会退出.我想知道用什么办法,可以让我输入无数次,也就是要它退出的时候,它才退出.
天下奇才 - 2006-7-23 10:08:00
float x;
float y;
char flag=0;
do
{
printf("please input x:");
scanf("%f",&x);
if(x<0.0)
y=0;
else if(x>0&&x<=10)
y=x;
else if(x>10&&x<=20)
y=10;
else if(x>20&&x<40)
y=-0.5*x+20;
else if(x>=40)
y=-1;
if(y!=-1)
printf("%f",y);
else
printf("error\n");
getch();
printf("Do you want to exit(Y/N)?");
scanf("%c",&flag);
if(flag=='Y') break;
}while(1)
粟子 - 2006-7-23 12:41:00
main()
{
float x;
float y;
char flag=0;
do
{
printf("please input x:");
scanf("%f",&x);
if(x<0.0)
y=0;
else if(x>0&&x<=10)
y=x;
else if(x>10&&x<=20)
y=10;
else if(x>20&&x<40)
y=-0.5*x+20;
else if(x>=40)
y=-1;
if(y!=-1)
printf("%f",y);
else
printf("error\n");
getch();
printf("Do you want to exit(Y/N)?");
scanf("%c",&flag);
if(flag=='Y') break;
}while(1);
}
我想知道while(1)里面的1是怎么样出来的。
粟子 - 2006-7-23 12:43:00
还有,我运行了天下奇才的程序,虽然输完一个程序后会出现do you want to exitY/N,但是还后还紧跟着please input the x:
为什么会这样?
粟子 - 2006-7-23 12:44:00
printf("Do you want to exit(Y/N)?");
scanf("%c",&flag);
if(flag=='Y') break;
我这你写的上面的三个语句删掉,运行程序,输入X,然后出现结果。但是要等我按一下键盘才会再次出现please input the x:这句话。为什么?
简单就是美 - 2006-7-24 8:44:00
你可以把scanf("%c",&flag)改成getch(&flag)试试啊!
我也是菜鸟,错了请原谅
还有,四楼这样做是不是就造成死循环了?while(1)应该是无条件返回循环首。
天下奇才 - 2006-7-24 16:39:00
| 引用: |
【粟子的贴子】printf("Do you want to exit(Y/N)?"); scanf("%c",&flag);
if(flag==''Y'') break;
我这你写的上面的三个语句删掉,运行程序,输入X,然后出现结果。但是要等我按一下键盘才会再次出现please input the x:这句话。为什么? ........................... |
因为这是一个不定循环,必须找一个跳出条件。这个条件你可以自己设定,我那个只是一种方式。没有固定的解决方法
一条小小虫 - 2006-8-22 17:29:00
都是高手,顶,我也是刚学的,加我啊
绿色使者 - 2006-10-5 20:51:00
我觉得用FOR语句比较直观~!
shujel - 2006-10-8 20:18:00
#include<stdio.h>
main()
{
float x;
float y;
do
{
printf("please input x:");
scanf("%f",&x);
if(x<0.0)
y=0;
else if(x>0&&x<=10)
y=x;
else if(x>10&&x<=20)
y=10;
else if(x>20&&x<40)
y=-0.5*x+20;
else if(x>=40)
y=-1;
if(y!=-1)
printf("%f",y);
else
printf("error\n");
getch();
printf("\nDo you want to once more?y/n ");
getchar();
}
while(getchar()=='y');
}
© 2000 - 2026 Rising Corp. Ltd.