C语言:当用户输入q或其他非数字值时,循环结束?请问这样如何实现?
发布网友
发布时间:2023-08-20 06:49
我来回答
共5个回答
热心网友
时间:2024-11-16 03:35
不能,因为y都double,sizeof(y)相当于sizeof(double),所以这个判断没起作用
如果你输入字母,结果会一直是0
想结束就别用while循环了追问有别的实现方法么
追答scanf有返回值的,你要读取浮点数,但是输入了字母,这个时候scanf的返回值是0,正确输入时非零值。可以利用这个返回值作为循环判断条件
热心网友
时间:2024-11-16 03:35
显然不能达到啊,你的循环条件有问题,判断输入是否为q或者为非数字,你却写成
while(sizeof(y)<8),很不解。。。你的输入已经限定了为长浮点数,如果输入为非数值,则会出现格式转换错误,无法通过编译,如果是数字,后面的判断就没有意义了追问有别的实现方法吗
追答有啊,输入按字符串录入,后面再对字符串经行解析,具体代码我就不写了,只是提供思路,写起来很容易
热心网友
时间:2024-11-16 03:36
#include <stdio.h>
int main(void)
{
float fa, ce, ke;
printf("shu ru: ");
while(scanf("%f", &fa)){
ce = 1.8 * fa + 32.0;
ke = ce + 273.16;
printf("Fahrenheit: %.2f, Celsius: %.2f, kelvin: %.2f\n", fa, ce, ke);
}
return 0;
}
初学者,刚看到这里,自己写的,但是无法判断非数值。
热心网友
时间:2024-11-16 03:37
判断当不满足条件时,可以继续重新输入:
do
{
printf("please input a number:");
scanf("%d",&y);
}while(y不满足的条件)
热心网友
时间:2024-11-16 03:37
#include<stdio.h>
const double A =5.0;
const double B =9.0;
const double C =32.0;
const double D =273.16;
int main (void)
{
int status;
double Temperature,Ce,Ke;
printf("请输入华氏温度: ");
printf("(q to quit ):");
status=scanf("%lf",&Temperature);
while(status==1)
{
Ce=A/B*(Temperature-C);
Ke=Ce+D;
printf("摄氏温度为%.2f:\n",Ce);
printf("开氏温度为%.2f:\n",Ke);
printf("请输入下一个华氏温度: ");
status=scanf("%lf",&Temperature);
}
printf("Quit!");
return 0;
}