| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 549 人关注过本帖
标题:【编程问题2】
只看楼主 加入收藏
wackyjason
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2010-8-17
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:3 
【编程问题2】
遇见一道题目,内容如下:
编写一个程序让用户按厘米输入一个高度值,然后,程序按照厘米和英尺英寸显示这个高度值。允许厘米和英寸的值出现小数部分。程序允许

用户继续输入,直到用户输入一个非正的数值。程序运行的示例如下所示:
    Enter a height in centimeters: 182
    182.0 cm = 5 feet, 11.7 inches
    Enter a height in centimeters (<=0 to quit): 168
    168.0 cm = 5 feet, 6.1 inches
    Enter a height in entimeters (<=0 to quit): 0
    bye

下面是我编写的程序:
程序代码:
#include <stdio.h>
#define CM_2_IN 2.54
#define IN_2_FT 12
int main (void)
{
    int ft, cm;
    double in, lft;

    printf ("Enter a height in centimeters: ");
    scanf ("%d", &cm);
    while (cm>0){
      in = (double)cm/CM_2_IN;
      ft = (int)in/IN_2_FT;
      lft = (int)in%IN_2_FT;
      printf ("%.1f cm = %d ft, %.1f inches\n", cm, ft, lft);
      printf ("Enter a height in centimeters (<=0 to quit): ");
      scanf ("%d", &cm);
    }
   printf ("bye\n");
   return 0;
}


得出的结果都是0,不知道为什么,是不是计算过程中得出的值太大了,%f已经无法显示了?

希望哪位好心人给解答一下,谢谢了~
搜索更多相关主题的帖子: include Enter 用户 
2010-08-19 21:41
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
收藏
得分:20 
以下是引用wackyjason在2010-8-19 21:41:54的发言:

遇见一道题目,内容如下:
编写一个程序让用户按厘米输入一个高度值,然后,程序按照厘米和英尺英寸显示这个高度值。允许厘米和英寸的值出现小数部分。程序允许
 
用户继续输入,直到用户输入一个非正的数值。程序运行的示例如下所示:
    Enter a height in centimeters: 182
    182.0 cm = 5 feet, 11.7 inches
    Enter a height in centimeters (<=0 to quit): 168
    168.0 cm = 5 feet, 6.1 inches
    Enter a height in entimeters (<=0 to quit): 0
    bye
 
下面是我编写的程序:
#include  
#define CM_2_IN 2.54
#define IN_2_FT 12
int main (void)
{
    int ft, cm;
    double in, lft;
 
    printf ("Enter a height in centimeters: ");
    scanf ("%d", &cm);
    while (cm>0){
      in = (double)cm/CM_2_IN;
      ft = (int)in/IN_2_FT;
      lft = (int)in%IN_2_FT;
      printf ("%.1f cm = %d ft, %.1f inches\n", cm, ft, lft);  //CM是 int 类型,但是你想用%.1f 格式符输出,显然错误 应该改为 printf ("%d cm = %d ft, %.1f inches\n", cm, ft, lft);
或者改为 printf ("%.1f cm = %d ft, %.1f inches\n", (double)cm, ft, lft);
      printf ("Enter a height in centimeters (<=0 to quit): ");
      scanf ("%d", &cm);
    }
   printf ("bye\n");
   return 0;
}
 
得出的结果都是0,不知道为什么,是不是计算过程中得出的值太大了,%f已经无法显示了?
 
希望哪位好心人给解答一下,谢谢了~
其他好像没什么问题!!

[ 本帖最后由 jack10141 于 2010-8-19 21:59 编辑 ]

Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
2010-08-19 21:55
wackyjason
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2010-8-17
收藏
得分:0 
回复 2楼 jack10141
是么?呵呵,谢谢啦,我去运行一下。
2010-08-19 22:38
wackyjason
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2010-8-17
收藏
得分:0 
好像行了,但是有一个问题,我运行的结果和题目要求的数据不一样
题目要求 182 得到 182.0 5 11.7
         168 得到 168.0 5  6.1
我得到的 182 是   182.0 5 11.0
         168 是   168.0 5  6.0
虽说差距不大,但是有差距就表明有问题,肯定是数据类型呼唤中间没做好。还望指导一下。
2010-08-19 22:45
快速回复:【编程问题2】
数据加载中...
 
   



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

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