请教一个问题,希望帮忙解决,谢谢!
在 C Primer Plus 中有一道题,就是让把华氏温度转换为摄氏温度和开尔文温度(英文版第5章最后一题)。转换的过程很容易实现,但是跳出循环时却出问题了。我把我编写的程序贴出来,请高手帮我看看问题出在什么地方。/* exe5_8.c -- calculates temperatures */
#include <stdio.h>
#include <conio.h>
void Temperatures( double n );
int main( void )
{
double ft; /* input a Fahrenheit temperature */
char flag;
printf( "Enter a temperature:" );
scanf( "%lf", &ft );
flag = (int)ft;
while ( flag != 'q' ){ (*)
Temperatures( ft );
printf( "Enter next temperature:" );
scanf( "%lf", &ft );
flag = (int)ft;
}
printf( "\n\nPress any key to continue..." );
getch();
return 0;
}
void Temperatures( double n )
{
const float CELSIUS = 1.8;
const float KELVIN = 273.16;
double cel, kel;
cel = CELSIUS * n + 32.0;
kel = cel + KELVIN;
printf( "The Celsuis temperature is %.2lf\n", cel );
printf( "The Kelvin temperature is %.2lf\n\n", kel );
}
问题出在(*)这一行,我的意思是当输入 q 时就退出,但是输入后就陷入死循环,怎么也跳不出来。而当输入 113 时(即 q 的 ASCII 码),却可以正常跳出循环。请问这是怎么回事?怎样才能修改成我想要的方式来结束循环?
谢谢!