| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 389 人关注过本帖
标题:一个简单的程序块,不知卡在哪
只看楼主 加入收藏
void_boy
Rank: 1
等 级:新手上路
帖 子:7
专家分:2
注 册:2012-11-24
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
一个简单的程序块,不知卡在哪
int i,j,an=0;
 scanf("%d",&i);
 for(j=0;j<=i-1;j++)
  an=an+pow(10,j)*3;
  printf("%d\n",an);
前面都定义好了,用来输出i个3,但是输入1时是3,2时是33,当输入3时就变成了332,随着i的增加又变成
331,330了,不知哪里错了
2012-12-18 19:47
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:10 
强制转换

    an=an+(int)(pow(10,j)*3);

要时刻注意编译器的警告信息,警告信息虽然不影响编译与链接,但是往往是成功的关键

DO IT YOURSELF !
2012-12-18 19:58
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
呃呃呃,貌似math.h里的函数返回值绝大不分都是float

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-12-18 20:00
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:10 
算法不大好 如果非要这么实现也可以这么来

程序代码:
#include <stdio.h>
#include <math.h>
int main(void)
{
    int i,j;
    double an=0.0;
    scanf("%d",&i);
    for(j=0;j<=i-1;j++)
        an=an+pow(10,j)*3;
    printf("%d\n",(int)an);
    return 0;
}


要知道 浮点数是有精度问题的 每步都转成整数 精度损失 如果我最后一步转 就没这个问题了

这个题 应该就用整数运算来解决 用这个 虽然数学上对 但从编程角度讲 不好
2012-12-18 20:01
wanjiawei
Rank: 4
等 级:业余侠客
帖 子:61
专家分:213
注 册:2012-11-16
收藏
得分:0 
为什么我运行就没问题啊
2012-12-18 20:06
龙航四海
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:58
专家分:102
注 册:2012-10-17
收藏
得分:0 
我的vc编译没出现lz说的问题
2012-12-18 22:01
void_boy
Rank: 1
等 级:新手上路
帖 子:7
专家分:2
注 册:2012-11-24
收藏
得分:0 
回复 2楼 wp231957
谢谢了 昨晚又想了一下,是精度问题,随着精度的损失越往后输出越小,所以应该转换一下
2012-12-19 19:10
void_boy
Rank: 1
等 级:新手上路
帖 子:7
专家分:2
注 册:2012-11-24
收藏
得分:0 
回复 4楼 zklhp
对的对的 就是这么回事 谢谢了
2012-12-19 19:11
快速回复:一个简单的程序块,不知卡在哪
数据加载中...
 
   



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

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