处理此作业。不知道如何摆脱while循环,我不能使用比while循环更先进的东西。我尝试将int转换为char但是没有用。以下是我的代码。任何帮助将不胜感激。
/* This program has the user input a number. This number is then printed out in degrees F, C and K*/
#include <stdio.h>
#define KEL 273.16
#define CEL1 32
#define CEL2 0.5555
void temperatures(double temp);
int main(void)
{
double tempF; // Temperature the user inputs
char userinput; // Quit character the user inputs
userinput = 'a';
tempF = 0;
printf("Enter a temperature in degrees Farenheit or enter q to quit:\n");
scanf_s("%lf", &tempF);
//scanf_s("%c", &userinput);
while ((char)tempF != 'q')
{
temperatures(tempF);
printf("Enter a temperature in degrees Farenheit or enter q to quit:\n");
scanf_s("%lf", &tempF);
//scanf_s("%c", &userinput);
}
printf("Goodbye!\n");
return 0;
}
void temperatures(double temp)
{
double celsius;
double kelvins;
celsius = (temp - CEL1) * CEL2;
kelvins = celsius + KEL;
printf("%lf F is %lf degrees C or %lf degrees K.\n", temp, celsius, kelvins);
}
答案 0 :(得分:4)
您需要改变策略。
q
,则退出。sscanf
这是main
的版本。
int main(void)
{
double tempF; // Temperature the user inputs
char line[200];
while ( 1 )
{
printf("Enter a temperature in degrees Fahrenheit or enter q to quit:\n");
// Read a line of text.
if (fgets(line, sizeof(line), stdin) == NULL )
{
break;
}
if ( line[0] == 'q' )
{
break;
}
if ( sscanf(line, "%lf", &tempF) == 1 )
{
// Got the temperature
// Use it.
}
else
{
// The line does not have a number
// Deal with the error.
}
}
printf("Goodbye!\n");
return 0;
}
答案 1 :(得分:1)
您应该将输入读作字符串(scanning a string)并将其转换为atof),而不是使用strcmp将输入字符串与退出命令进行比较。 您也可以使用isdigit检查输入(不要尝试转换非数字的任何内容)
答案 2 :(得分:0)
您可以使用
阅读字符char c;
while (c != 'q') {
scanf("%c", &c);
//parse command
}