c语言求所有位数上的数字之和

#include<stdio.h>
int product(unsigned int b);
int main()
{
unsigned int x,a;
scanf("%d",&x);
a=product(x);
printf("所有位数上的数字之和:%d",a);
}
int product(unsigned int b)
{
int y,m;
if(b<10)
{return b;}
else
{
do
{
y=b%10;
m=y+m;
b=b/10;
}while(b!=0);
}
return b;
}
我无法得出正确结果 请问哪里出错了

#include <stdio.h>

int main(int argc, char **argv)
{
int a;
int sum = 0; //这是各位数的和
int NumWidth =0;//这是位数和
scanf("%d",&a);
while(a != 0)
{
sum += a%10 ; //求余可以得到这个数个位上的数字,然后把它加到sum中
a /= 10; //把这个数字除以10,然后再求余,可以得到10位
NumWidth ++;//每次循环,就可以得到位数。
}
printf("the number you input width= %d, sum = %d",NumWidth,sum);
return 0;
}追问

谢谢泥,可是我的程序为什么错了?

温馨提示:答案为网友推荐,仅供参考