| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 478 人关注过本帖, 1 人收藏
标题:请教一个问题,希望帮忙解决,谢谢!
取消只看楼主 加入收藏
widemanzhao
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-10-11
收藏(1)
 问题点数:0 回复次数:2 
请教一个问题,希望帮忙解决,谢谢!
在 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 码),却可以正常跳出循环。请问这是怎么回事?怎样才能修改成我想要的方式来结束循环?
谢谢!
2008-09-18 17:22
widemanzhao
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-10-11
收藏
得分:0 
可是我已经将类型强制转换了啊,就算改成 (char)ft 也不行。而版主也没给我说为什么我输入 q 的 ASCII 码时程序可以正常运行,而输入字符时就死循环了呢?如果要输入 q 退出,我该怎么改?
2008-09-18 17:54
widemanzhao
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-10-11
收藏
得分:0 
看了版主的修改,彻底解决了问题。多谢版主了。看来我设的 flag 变量完全是多此一举。
C语言博大精深,初涉不久,要学习的地方还很多。希望以后遇到问题了还能得到大家的指点。
2008-09-18 18:11
快速回复:请教一个问题,希望帮忙解决,谢谢!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031192 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved