| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 412 人关注过本帖
标题:请大家帮我看看这个程序错在什么地方了?
只看楼主 加入收藏
churichenxi
Rank: 1
等 级:等待验证会员
帖 子:9
专家分:0
注 册:2012-6-16
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:3 
请大家帮我看看这个程序错在什么地方了?
以下的程序是我照着书中的例子,自己编写的,可是运行的时候,最后的结果明显不对。可是我又查不出来到底是哪里出问题了。大家帮我看看。

/* 计算树的高度 */#include <stdio.h>
int main(void)
{
long A=0L; /* A的高度(厘米) */
long B=0L; /* B的高度(厘米) */
long cm=0L; /* 厘米 */
float m=0.00f; /* 米 */
long A_to_B=0; /* AB间的距离(厘米)*/
long B_to_tree=0; /* B到树间的距离(厘米)*/
long tree_height=0; /* 树的高度 */
const long cm_per_m=100L; /* 换算 */

/* 输入B的高度 */
printf("输入B的身高(厘米):");
scanf("%ld",&cm);
printf("输入B的身高(米):");
scanf("%.2f",&m);
B=m*cm_per_m;

/* 输入A的高度(至眼睛)*/
printf("输入A的身高(厘米):");
scanf("%ld",&cm);
printf("输入A的身高(米):");
scanf("%.2f",&m);
A=m*cm_per_m;

/* 输入AB的距离 */
printf("输入AB的距离(厘米):");
scanf("%ld",&cm);
printf("输入AB的距离(米):");
scanf("%.2f",&m);
A_to_B=m*cm_per_m;

/* B到树间的距离 */
printf("输入B到树的距离(米):");
scanf("%f",&m);
B_to_tree=m*cm_per_m;

/* 计算树的高度 */
tree_height=A+(A_to_B+B_to_tree)*(B-A)/A_to_B;

/* 显示结果 */
printf("树的高度为 %ld 厘米,%.2f 米。\n",
tree_height/cm_per_m,tree_height% cm_per_m);
return 0;
}
搜索更多相关主题的帖子: long include 
2012-06-16 22:42
小糊涂神c30
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:198
专家分:809
注 册:2012-4-25
收藏
得分:2 
你的代码很不规范,我想关键问题应该是你scanf和printf函数运用时没有注意缓冲区的问题,在每一个scanf后面加上一句清楚缓冲区的句子应该没问题。还有就是你的函数要实现的功能,不是很明白,是相似三角形问题吗?自己改一下吧,不懂了,百度一下关于缓冲区的清除方法!
2012-06-16 23:18
wwc386646959
Rank: 2
等 级:论坛游民
帖 子:29
专家分:82
注 册:2012-6-16
收藏
得分:2 
格式化输入输出是很重要的,还有一些可以用一些清除缓存区的函数,解决楼上说的可能发生的问题
2012-06-16 23:51
churichenxi
Rank: 1
等 级:等待验证会员
帖 子:9
专家分:0
注 册:2012-6-16
收藏
得分:0 
我又把程序简化了一下, 把厘米和米的换算删了,直接把单位统一,这下就可以了。

/* 计算树的高度 */
#include <stdio.h>
int main(void)
{
float Ha=0.0f; /* A的身高 */
float Hb=0.0f; /* B的身高 */
float Ht=0.0f; /* 树的高度 */
float Dab=0.0f; /* AB的距离*/
float Dta=0.0f; /* A与树的距离 */

/* 输入A和B的高度 */
printf("输入A的身高(米):");
scanf("%f",&Ha);
printf("输入B的身高(米):");
scanf("%f",&Hb);

/* 输入AB的距离 */
printf("输入AB的距离(米):");
scanf("%f",&Dab);
printf("输入A到树的距离(米):");
scanf("%f",&Dta);

/* 计算树的高度 */
Ht=Hb+(Dta+Dab)*(Ha-Hb)/Dab;

/* 显示结果 */
printf("树的高度为%.2f米。\n",Ht);

return 0;
}
2012-06-17 13:24
快速回复:请大家帮我看看这个程序错在什么地方了?
数据加载中...
 
   



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

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