正在处理这个任务。不知道如何摆脱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);
}
最佳答案
你需要改变你的策略。
读一行文字。
如果该行的第一个字母是“cc>”,则退出。
否则,尝试使用q
从行中读取数字。
这里有一个版本的sscanf
可以做到这一点。
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;
}
关于c - 用户输入字母“q”时如何退出while循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39519353/