| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1560 人关注过本帖
标题:C Primer Plus中的 另一道题求解~
只看楼主 加入收藏
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
不知道楼主是不是想要这样的效果?
我想,既然输入数字以外的任意字符都退出,Q也会在其中,也就没有必要再把它设成一个条件了,所以只要是输入数字外的任何字符,都算退出条件。

    程序是用楼主的程序改的,有些简陋,谨作参考。
程序代码:
#include<stdio.h>
#include<string.h>
#define Y {char c;c=getch()!='\n';}
#define M "请输入任意数字继续,其它键退出\n"
int Temperautre(double Fahrenheit);
int main(void)
{
    double Fahrenheit;
    char a;
    while(1)
    {
        printf("Please enter another value:");
        scanf("%lf",&Fahrenheit);
        Y;
        Temperautre(Fahrenheit);
        puts(M);
        a=getch();
        if(a<'0'||a>'9')    break;
    }
    return 0;
    getch();
}
int Temperautre(double Fahrenheit)
{
     const double Celsius = 1.8 * Fahrenheit + 32.0;
     const double Kelvin = Celsius + 273.16;
     printf("%.2lf fahrenheit is %.2lf celsius or %.2lf kelvin\n",Fahrenheit,Celsius,Kelvin);
}
2008-10-01 00:19
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
/*
  输入非数字结束程序
  2.3 可以
  a-z A-z *()&^%$ 退出
  
  scanf("%lf", &xx);  返回成功读取的项目的个数,成功读取一个 double 类型的数字则返回1
 */

#include <stdio.h>

void Temperautre(double fan);

int main(void)
{
    double Fahrenheit;
   
    printf("Please enter a fahr:\n");
    while(scanf("%lf", &Fahrenheit) == 1)
    {
        Temperautre(Fahrenheit);
        puts("\n\n");
    }
   
    return 0;
}

void Temperautre(double fan)
{
    printf("Fanhrenheit %lf,\nCelsius %lf\nKelvin %lf\n",
      fan, 1.8 * fan + 32.0, 1.8 * fan + 32.0 + 273.16);
}





//-----  End ----

[[it] 本帖最后由 cosdos 于 2008-10-1 01:18 编辑 [/it]]

—>〉Sun〈<—
2008-10-01 01:08
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
#include<stdio.h>

int Temperautre(double Fahrenheit);
int main(void)
{
    double Fahrenheit;
    printf("Please enter a fahr:\n");
    scanf("%f",&Fahrenheit);        // 用 scanf() 读取 double 类型是 必须用 %lf
    Temperautre(Fahrenheit);
   
    while(Fahrenheit != 'q')   // Fahrenheit 为 double 类型 怎能与 char 类型比较
    {
        printf("Please enter another value:");
        scanf("%f",&Fahrenheit);
        Temperautre(Fahrenheit);
    }
    return 0;
}

int Temperautre(double Fahrenheit)  // const double Fahrenheit // 这里加上
{
     const double Celsius = 1.8 * Fahrenheit + 32.0;
     const double Kelvin = Celsius + 273.16;
     printf("%.2f fahrenheit is %.2f celsius or %.2f kelvin\n",Fahrenheit,Celsius,Kelvin);
}

[[it] 本帖最后由 cosdos 于 2008-10-1 01:16 编辑 [/it]]

—>〉Sun〈<—
2008-10-01 01:15
快速回复:C Primer Plus中的 另一道题求解~
数据加载中...
 
   



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

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