编写程序求一个整数各位数字之和。 要求: 1) 输入一个整数。 2) 把这个整数各位数字分离出来放到一维数组

一定要把算法描述写上 谢谢了 希望能快一点
#include<stdio.h>
#define max 10
int main()
{
int a,b[max],s=0;
int i=0;
printf("Please input a number: ");
scanf("%d",&a);
while(a)
{
b[i]=a%10;
s=s+b[i];
a=a/10;
i++;
}
printf("The sum is: %d\n",s);
return 0;
}
写这个的算法描述 谢谢了

#include <iostream>
using namespace std;
void main()
{
int n;
cout<<"input:";
cin>>n;
int i;
int sum=0;
for( i=10;;i*=10) //此循环用于确认用户输入的是几位整数,如果是1位或两位
{ //为了便于理解,你可以先带i=1走一边流程,再带i=12
if(n/i>=0&&n/i<=9)
break;

}
//i/10+1 这个表达式就是创建数组的大小

int *a=new int[i/10+1]; //因为不知道用户输入的是几位数,所以要动态创建一个数组,为什么要加1,
int j=0; //你带i=1走到这就知道了,因为i=1时,i/10等于零,也就是没动态创建数组
//,按原意是要创建含一个元素的数组的,所以加1
while(i>=1) //第一个while循环,相当于设置一个条件,就是在什么情况下给数组元素赋值
{ //,或者说是确定赋值该什么时候结束
if(i==1)
{ //*****************************
a[j]=n; //*****总之*********你带i=1和i=12走一下流程,你就会理解了
cout<<"a"<<"["<<j<<"]"<<"="<<a[j]<<endl;
sum+=a[j];
break;
}
a[j]=n/i;
n-=a[j]*i;
cout<<"a"<<"["<<j<<"]"<<"="<<a[j]<<endl;
i/=10;
sum+=a[j];
j++; //改变数组下标
}
cout<<sum<<endl;
delete a; //释放new开辟的空间

}追问

帮我写一下我发的这个的算法描述可以吗

追答

//当a等于零的时候不进循环,有两种情况下a等于零,一是用户输入零,二是用输入了一个非零
//数,经过while循环,a最终会变为个位数(1~9),这时再进行 a=a/10;a也会变为零,这时就不
//进while循环了,说明求和结束了,
while(a)
{
b[i]=a%10; //求得个位数,比如321%10=1
s=s+b[i]; //求和
a=a/10; //把a的个位数去掉,比如321/10=32,接着32进入下一次循环,a=3;3/10=0,
//循环结束
i++; //数组下标自加,比如这次是b[0],下次就是b[1]了
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-04
#include<stdio.h>
#include<math.h>
void main()
{ int i=j=0,a,sum=0,B=0;
int k[100];
printf("Enter a number:\n",a);
scanf("%d",&a);
while(a!=0)
{
k[i]=a%10;
a=a/10;
B++;
i++;}
for(j=0;j<B;j++)
sum=sum+k[j];
printf("位数=%d\n",B);
printf("位数之和=%d\n",sum);}

大概就这样了
第2个回答  2011-05-04
最终目的是要把各位数字放在一维数组,还是要求各位数字之和啊?如果只是求和的话,用不着开一个数组这么麻烦~
第3个回答  2011-05-04
用mod和div来分离吧,这样很简单的。
相似回答