我写了一个程序,将温度从摄氏温度转换为华氏温度。当我输入c
时,代码按预期工作,但当我输入f
时,它会给我一个随机数:
#include <stdio.h>
int main (void){
float f,c;
printf("x=Ende c=Umrechnung c->f f=Umrechnung f->c:");
if(scanf("c",&c)==c){
printf("Grad Celisius =");
scanf("%f",&c);
f=(c*1.8)+32;
printf("%.2f Grad Celisius sind %.2f Grad Fahreiheit\n",c,f);
}
else if(scanf("f",&f)==f){
printf("Grad fahrenheit =");
scanf("%f",&f);
c=(f-32)/1.8;
printf("%.2f Grad Fahrenheit sind %.2f Grad Fahrenheit",f,c);
}
return 0;
}
如何解决问题?
答案 0 :(得分:1)
您没有正确使用scanf()
命令。我稍微修改了你的代码,这对我有用:
#include <stdio.h>
int main (void){
float f,c;
char ch;
printf("x=Ende c=Umrechnung c->f f=Umrechnung f->c:");
scanf(" %c", &ch);
if(ch=='c'){
printf("Grad Celsius =");
scanf("%f",&c);
f=(c*1.8)+32;
printf("%.2f Grad Celsius sind %.2f Grad Fahrenheit\n",c,f);
}
else if(ch=='f'){
printf("Grad Fahrenheit =");
scanf("%f",&f);
c=(f-32)/1.8;
printf("%.2f Grad Fahrenheit sind %.2f Grad Celsius",f,c);
}
return 0;
}
基本上,您只读过一次字符(ch
),然后将其与程序提供的选项进行比较。请注意" %c"
行scanf()
中的空格字符。可能需要它以使代码正常工作,如here所述。
我想你也想绕过代码循环,这样就可以让用户输入x
来结束程序。目前,如果您未输入c
或f
,该计划将终止。该计划也在一次计算完成后终止。
顺便说一句,我还在上一个Celsius
中将一个Fahrenheit
更改为printf()
。我觉得你把那些话弄糊涂了。我还将Celisius
更改为Celsius
。