标题:答案对了,但是提交时出错,是不是精度?
只看楼主
dydsdyds
Rank: 6Rank: 6
来 自:Java
等 级:侠之大者
帖 子:217
专家分:457
注 册:2010-2-14
结帖率:81.82%
 问题点数:0 回复次数:9 
答案对了,但是提交时出错,是不是精度?
这个题是个求数字各位字的和的题,先输入一个数N,表示有N个数要处理。下面是N行要处理的数。要处理的数字的取值范围是(1~10的50次方)
说的不明白,我写个例子:
我输入
3
1234564
494382
48
然后得到结果
7
3
3
其中7←=2+5 ←25←=1+2+3+4+5+6+4
3←=3+0←30=4+9+4+3+8+2
3←=1+2←12=4+8
其实就是每一位的求和。和再求和,直到和为一位数字为止。
代码:
程序代码:
#include <stdio.h>
int main()
{
    long int a[10],b[10],sum=0;
    int x,i,j,n;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
         scanf("%d",&a[i]);
    for(i=1;i<=n;i++)
    {
        while (a[i]/10>=1)
        {
             sum=sum+a[i]%10;
             a[i]=a[i]/10;
             if(a[i]<10)
                {
                sum=sum+a[i];
                x=sum/100+(sum%100)/10+sum%10;
                b[i]=x;
                }
        }sum=0;
    }
    for(i=1;i<=n;i++)
             printf("%d\n",b[i]);
  return 0;
}


谢谢。
搜索更多相关主题的帖子: 精度 
2010-11-22 13:04
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
得分:0 
数的范围不够吧??

愿用余生致力编程
2010-11-22 13:09
dydsdyds
Rank: 6Rank: 6
来 自:Java
等 级:侠之大者
帖 子:217
专家分:457
注 册:2010-2-14
得分:0 
回复 2楼 我菜119
我想的也是, 但是改为double他就出错了……
不知道该怎么改。
我还有一道题,貌似也是数值的范围不够,这个方面没学好

c语言刚开一学期,就换开VB...
2010-11-22 13:11
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
得分:0 
long  输入输出中格式化 要使用%ld
2010-11-22 17:56
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
得分:0 
这种题用字符串处理 是最便捷的
2010-11-22 17:57
dydsdyds
Rank: 6Rank: 6
来 自:Java
等 级:侠之大者
帖 子:217
专家分:457
注 册:2010-2-14
得分:0 
回复hahayezhe
但是大数问题用字符串我恰恰不会,没有学好,能给个例子吗?
谢谢。

c语言刚开一学期,就换开VB...
2010-11-22 22:08
dydsdyds
Rank: 6Rank: 6
来 自:Java
等 级:侠之大者
帖 子:217
专家分:457
注 册:2010-2-14
得分:0 
帮帮忙
谢谢……

c语言刚开一学期,就换开VB...
2010-11-23 12:11
dydsdyds
Rank: 6Rank: 6
来 自:Java
等 级:侠之大者
帖 子:217
专家分:457
注 册:2010-2-14
得分:0 
怎么用数组?
帮帮忙啊……
谢谢

c语言刚开一学期,就换开VB...
2010-11-24 13:17
诸天弑神
Rank: 1
等 级:新手上路
帖 子:6
专家分:1
注 册:2010-11-19
得分:0 
程序代码:
#include <stdio.h>
main()
{
    long int a[10],b[10],sum=0;
    int x,i,j,n;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
         scanf("%ld",&a[i]);           /*应该用"%ld"*/
    for(i=1;i<=n;i++)
    {
        while (a[i]/10>=1)
        {
             sum=sum+a[i]%10;
             a[i]=a[i]/10;
             if(a[i]<10)
                {
                sum=sum+a[i];
                x=sum/100+(sum%100)/10+sum%10;
                b[i]=x;
                }
        }sum=0;
    }
    for(i=1;i<=n;i++)
             printf("%ld\n",b[i]);         /*"%ld"*/
}
2010-11-24 21:05
dydsdyds
Rank: 6Rank: 6
来 自:Java
等 级:侠之大者
帖 子:217
专家分:457
注 册:2010-2-14
得分:0 
回复 9楼 诸天弑神
谢谢你,我就是数组不大会

c语言刚开一学期,就换开VB...
2010-11-27 14:21



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




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

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