很抱歉没有添加整个代码。我的愚蠢错误。
#include <stdio.h>
int main(int argc, char ** argv) {
float celcius, fahrenheit, kelvin, interval;
int c, f, k;
char temp;
printf("which temperature is being input? (C,F,K) ");
scanf("%s", &temp);
if(temp == 'c') {
printf("enter a starting temperature");
scanf("%f", &celcius);
fahrenheit=celcius*9/5+32;
kelvin=celcius+273.2;
printf("%f, %f, %f", celcius, fahrenheit, kelvin);
}
else if(temp == 'f') {
printf("Please enter a starting temperature");
scanf("%f", &fahrenheit);
celcius=fahrenheit-32*5/9;
kelvin=fahrenheit-32*5/9+273.2;
printf("%f, %f, %f", celcius, fahrenheit, kelvin);
}
else if(temp == 'k') {
printf("enter a starting temperature");
scanf("%f", &kelvin);
fahrenheit=kelvin-273*1.8+32;
celcius=kelvin-273.2;
printf("%f, %f, %f", celcius, fahrenheit, kelvin);
}
}
因此它询问输入的温度和起始温度,但为什么不计算数学方程?
答案 0 :(得分:4)
正在计算数学方程式
fahrenheit=celcius*9/5+32;
kelvin=celcius+273.15;
但你不打印它。
试试这个
printf("%f, %f, %f", celcius, fahrenheit, kelvin);
不要忘记将scanf("%s", &temp);
更改为
scanf(" %c", &temp);
temp = tolower(temp); // include <ctype.h> header
或更好地放置
int c;
while ((c = getchar()) != `\n` && c != EOF);
在scanf(" %c", &temp);
之后。这将占用输入的第一个字符以外的所有字符。
根据OP的评论;
如何才能将温度名称显示在温度的顶部?
printf("celcius \tfahrenheit \tkelvin);
printf("%5f\t%5f\t%5f", celcius, fahrenheit, kelvin);
答案 1 :(得分:1)
您没有展示如何定义变量temp
,但以这种方式读取字符串是非常危险的。如果temp
是一个字符,那么指向它的地址并将其视为字符串就会遇到麻烦。确保您在'\0'
之后立即将temp
写入该位置,如果用户输入的字符多于一个字符,则他们可能造成的损害甚至会更大。
您可以通过getc
来电阅读单个字符:
temp = getc(stdin);
我建议您确保它是小写的 - 因为您要与c
进行比较:
temp = lower(getc(stdin));
然后很明显,当你打印出一个变量时,你必须打印出你计算的变量。您计算celcius
等 - 但您的print语句是
printf("%f, %f, %f", c, f, k);
c
,f
和k
可能是有效变量 - 但它们不是您在之前的行中计算的变量。用
printf("Celsius: %.1f; Fahrenheit: %.1f; Kelvin: %.1f\n", celcius, fahrenheit, kelvin);
或者,如果您希望名称高于数字:
printf("\tC\tF\tK\n\t%6.1f\t%6.1f\t%6.1f\n", celcius, fahrenheit, kelvin);
请注意使用\t
- tab
字符 - 使事物对齐(大约),格式说明符%4.1f
表示“字段宽度为6的数字,小数点后的一个有效数字“。
还有一个注意事项 - 它是Celsius
,而不是celcius
。但这是你遇到的最少的问题。
答案 2 :(得分:1)
看起来正在计算,但是你打印的是错误的变量。尝试在print语句中用celsius,fahrenheit和kelvin替换c,f和k。
答案 3 :(得分:1)
您必须在变量名称中保持一致,不能像现在这样混淆它们。
因为你是这样计算的:
fahrenheit=celcius*9/5+32;
kelvin=celcius+273.15;
但是这行不会打印出来,因为你有错误的变量:
printf("%f, %f, %f", c, f, k);
将其更改为正确的变量名称并输入如下:
printf("%f, %f, %f", celcius, fahrenheit, kelvin);