标题:我想请教哪位老师都是一个 C 语言编程的简单问题
只看楼主
doctorsu
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2004-11-20
 问题点数:0 回复次数:8 
我想请教哪位老师都是一个 C 语言编程的简单问题
我是一名C 语言初学者,我想请哪位老师帮忙看一下,当我输入 110000 , 结果是10749而不是10750呢?让我百思不解。为什么?能告诉学生一下吗?
main()
{
long int i;
int bonus1,bonus;
bonus1=100000*0.1;
scanf("%ld",&i);
if(i<=100000)
  bonus=i*0.1;
   else if(i<=200000)
    bonus=bonus1+(i-100000)*0.075;
    printf("bonus=%d",bonus);
  }
搜索更多相关主题的帖子: bonus 语言 简单问题 老师 int 
2005-05-28 00:09
ChenMo
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:3
帖 子:481
专家分:10
注 册:2004-4-8
得分:0 
这应该是数据溢出所造成的,
您所定义的 bonus1 变量装不下超过 32767 的数值。
是以,100000 这个数容纳不下。

建议使用更大存储能力的数据类型。

欢迎加入 MVC 技术讨论群(新群:90093426)
2005-05-28 00:45
ChenMo
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:3
帖 子:481
专家分:10
注 册:2004-4-8
得分:0 

我对程序进行了一些修改,希望这正是你所满足的。 main() { long int i; double bonus1,bonus; /*修改了变量的数据类型,定义为 double 的好处是它比 float 少了一个转换过程,且能更精确地存储数据*/

bonus1=100000*0.1; scanf("%ld",&i);

if(i<=100000) bonus=i*0.1; else if(i<=200000) bonus=bonus1+(i-100000)*0.075;

printf("bonus=%lf",bonus); /*修改了输出类型,原来为整型,使用这个类型输出可能会对结果进行截取*/ getch(); }

[此贴子已经被作者于2005-5-28 0:58:46编辑过]


欢迎加入 MVC 技术讨论群(新群:90093426)
2005-05-28 00:53
musicml
Rank: 1
等 级:新手上路
帖 子:273
专家分:0
注 册:2005-4-2
得分:0 
以下是引用ChenMo在2005-5-28 0:45:54的发言: 这应该是数据溢出所造成的, 您所定义的 bonus1 变量装不下超过 32767 的数值。 是以,100000 这个数容纳不下。 建议使用更大存储能力的数据类型。
如上!!!1

Every thing is possible.
2005-05-28 00:53
ChenMo
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:3
帖 子:481
专家分:10
注 册:2004-4-8
得分:0 
下图为本人上述程序运行结果的一个测试显示:



[此贴子已经被作者于2005-5-28 0:57:14编辑过]



欢迎加入 MVC 技术讨论群(新群:90093426)
2005-05-28 00:56
zhangzujin
Rank: 1
等 级:新手上路
帖 子:276
专家分:0
注 册:2005-5-9
得分:0 
Data Flow

太极之道 qq:283421560 E-mail:zhangzujin360732@
2005-05-28 18:45
doctorsu
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2004-11-20
得分:0 
谢谢大家,有时间来北戴河玩。
2005-05-29 20:11
深夜狼
Rank: 1
来 自:广西桂林
等 级:新手上路
帖 子:348
专家分:0
注 册:2005-5-9
得分:0 
2005-05-30 22:17
ChenMo
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:3
帖 子:481
专家分:10
注 册:2004-4-8
得分:0 
北戴河、虎头山?你是茂名电白人?

那里不大好玩,我去过几次,

欢迎加入 MVC 技术讨论群(新群:90093426)
2005-05-31 02:42



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-19509-1-1.html




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

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