C语言:当用户输入q或其他非数字值时,循环结束?请问这样如何实现?

源码:
#include <stdio.h>
double tem (double x);
const double A = 1.8;
const double B = 32.0;
const double C = 273.16;
int main (void)
{
double y;
printf("请输入华氏温度:");
scanf("%lf", &y);
while(sizeof(y)<8)
{
printf("华氏温度是:%0.2f ,摄氏温度是:%0.2f ,绝对温度是:%0.2f\n", y, tem (y) - 273.16, tem (y));
printf("请输入华氏温度:");
scanf("%lf", &y);
}
return 0;
}
double tem (double x)
{
double ce, ke;
ce = A * x + B;
ke = ce + C;
return ke;
}
这样写不能达到效果,求解?

不能,因为y都double,sizeof(y)相当于sizeof(double),所以这个判断没起作用
如果你输入字母,结果会一直是0
想结束就别用while循环了追问

有别的实现方法么

追答

scanf有返回值的,你要读取浮点数,但是输入了字母,这个时候scanf的返回值是0,正确输入时非零值。可以利用这个返回值作为循环判断条件

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-09-14
显然不能达到啊,你的循环条件有问题,判断输入是否为q或者为非数字,你却写成
while(sizeof(y)<8),很不解。。。你的输入已经限定了为长浮点数,如果输入为非数值,则会出现格式转换错误,无法通过编译,如果是数字,后面的判断就没有意义了追问

有别的实现方法吗

追答

有啊,输入按字符串录入,后面再对字符串经行解析,具体代码我就不写了,只是提供思路,写起来很容易

第2个回答  2016-05-10
#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;
}

初学者,刚看到这里,自己写的,但是无法判断非数值。
第3个回答  2012-09-14
判断当不满足条件时,可以继续重新输入:
do
{
printf("please input a number:");
scanf("%d",&y);
}while(y不满足的条件)
第4个回答  2019-08-06
#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;
}

C语言:当用户输入q或其他非数字值时,循环结束?请问这样如何实现?
不能,因为y都double,sizeof(y)相当于sizeof(double),所以这个判断没起作用 如果你输入字母,结果会一直是0 想结束就别用while循环了

当用户输入q或其他非数字值时,循环结束。怎么表示非数字值……?
比如用户输入的存放在变量String str里,那么用str.indexOf("0123456789") == -1则表示输入的不是数字

C语言循环语句中怎么实现——用户输入非正数时程序结束?
int n;while(~scanf("%d",&n) && n>=0){ 循环体}

c语言编程跳不出循环!本来输入字符啊什么非数字时循环该结束的!
} scanf的返回值由后面的参数决定 while(2==scanf("%f%f",&number1,&number2))如果a和b都被成功读入,那么scanf的返回值就是2 如果只有a被成功读入,返回值为1 如果a和b都未被成功读入,返回值为0 如果遇到错误或遇到end of file,返回值为EOF。且返回值为int型....

C语言怎么设计一个函数使输入某个值时强制结束程序??
2.写出主函数void main(){},在函数体内写出如下代码:int number = 0; while(true) { printf("请输入数字:\\n"); scanf ("%d",&number); if (number == 1) { return; } } 3.点击红叹号测试。程序清单:\/\/ 停止循环.cpp : Defines the entry point for the console ...

让一个程序无限循环,但是当你输入一个字符时就结束循环的语句
不断接受用户输入,只要用户输入6就退出循环。我就简单的写一下,具体的还得根据你的整个程序的要求来。include <stdio.h>void main(){ while (getchar() != '6') { }} 希望能帮到你,谢谢,满意的话就采纳吧

C语言 如何使用户输入end后跳出循环
strcmp(str,"end") str为你输入的字符串,比较两个字符串,相当返回0,即结束循环

c语言中数据输入错误了如何提示输入错误并实现要求重新输入
在C语言编程中,当用户输入错误时,需要一个机制来提示错误并要求用户重新输入。为此,可以使用一个无限循环,如下面的代码所示:while (1) { printf("请输入内容,输入错误时将提示并要求重新输入\\n");} 在这个循环内部,程序会不断地请求用户输入,并检查输入的有效性。如果输入无效,程序会输出一条...

C语言如何让程序一直不断运行直到按了某个键以后停止,代码怎么写?
可以参考下面的代码:include <stdio.h> include <conio.h> include <windows.h> main( ){ int p;while( ! _kbhit() ) { \/\/ run progs _cputs( "Please hit me ! \\n" );Sleep(500);} return 0;}

C\/C++语言中,在不确定用户输入数据个数的情况下来控制循环结束?
可以参考下面的代码:int main(){ int a[100],i=0,ch=0;printf("请输入一组整形数据(不超过100个):");do{ scanf("%d",&a[i++]);ch=getchar();}while(ch!='\\n');for(ch=0;ch<i;ch++)printf("%d\\n" , a[ch]);} ...

相似回答