求一个八位数各位之和问题

codeHappy 2005-03-19 10:54:19
#include "stdafx.h"
using namespace std;
long int sum(long int m,long int n)
{ long int h,sum,g=1;
for(h=1;h<=m;m++)
g*=10;
sum=(n-(n/g)*g)/(g/10);
return sum;
}
void main()

{ long int i,birth,sum1;
cin>>birth;
for(i=1;i<=8;i++)
{
sum1=0;sum1+=sum(i,birth);
}
}


程序不知道为什么错了?
要是谁有更好的方法请贴出来吧

...全文
116 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
jojo_cisco_ustb 2005-03-21
  • 打赏
  • 举报
回复
因为如果把sum1=0放在括号中 每次循环sum1都会被重新设置为0
jojo_cisco_ustb 2005-03-20
  • 打赏
  • 举报
回复
hehe 看了半天终于找出来了你的错误:
1.
for(h=1;h<=m;m++) //应该是h++
g*=10;

2.
for(i=1;i<=8;i++)
{
sum1=0;sum1+=sum(i,birth); //因该把sum1=0移到括号外面
}
codeHappy 2005-03-20
  • 打赏
  • 举报
回复
我上面的方法不好
我觉得下面的比较好
while(n)
{int sum=0;
sum+=n%10;
n/=10;
}

codeHappy 2005-03-20
  • 打赏
  • 举报
回复
为什么移到括号外面
xxxdg 2005-03-19
  • 打赏
  • 举报
回复
#include "stdio.h"
void main()
{
long x; int i,y=0;
char s[9];
cin>>x;
sprintf(s,"%ld",x);
for(i=0;i<9;i++)
y += s[i]-'0';
printf("The sum is %d",y);
}
inlin 2005-03-19
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;

int main()
{long i,j;
int sum=0;
cout<<"input a long interger i:";
cin>>i;
while(i>0)
{ j=i%10;
i=i/10;
sum+=j;
}
cout<<sum<<endl;
return 0;
}
边城狂人 2005-03-19
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;


int main() {
long n = 12345678;
long m = n;
long r = 0;

while (m > 0) {
r += m % 10;
m = m / 10;
cout << r << "\t" << m << endl;
}

cout << "result: " << r << endl;
}
fooooot 2005-03-19
  • 打赏
  • 举报
回复
应该这样
#include<iostream.h>
void main()
{long i,j;
int sum=0;
cin>>i;
while(i>0)
{j=i%10;
i=i/10;
sum+=j;}
cout<<sum;
}
fooooot 2005-03-19
  • 打赏
  • 举报
回复
错了
fooooot 2005-03-19
  • 打赏
  • 举报
回复
void main()
{int i;
int sum=0;
cin>>i;
while(i>0)
{i=i%10;
sum+=i;}
cout<<sum;
}
pcboyxhy 2005-03-19
  • 打赏
  • 举报
回复
for(i=1;i<=8;i++)
{
sum1=0;sum1+=sum(i,birth); //sum1 = 0 初始化了多少次了?
}
}

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧