瑞星卡卡安全论坛

首页 » 技术交流区 » 系统软件 » 写的C程序,有问题请教.
粟子 - 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');


}
1
查看完整版本: 写的C程序,有问题请教.