嘉加嘉www 发表于 2022-4-30 08:45:16

函数:各个位数字求和

我的思路是:先判断输入的数是几位的数,再除以相应的10的倍数,相加得出结果
但是运行不出结果,求大神看看啊!怎么改呢?

#include <stdio.h>
int sum(int n)
{
        int num=1,a,sum=0,i,shu=1;
        char s;
        while((s=getchar())!='\n')
        {
                num++;
        }

        for(i=(num-1);i>1;i--)
        {
                for(int j=1;j<=i;j++)
                {
                        shu*=10;               
                }
                a=n/shu;         
                n%=shu;
                sum+=a;       
        }
        return sum;
}

int main()
{
        int n,s;
        scanf("%d\n",&n);
        s=sum(n);
        printf("s=%d\n",s);
       
        return 0;
}

wp231957 发表于 2022-4-30 08:50:19

不用这样麻烦,一路模10除10不就得到分离数字了吗

傻眼貓咪 发表于 2022-4-30 08:52:05

#include <stdio.h>

int sum(int n) {
        return n? (n%10) + sum(n/10) : n;
}

int main() {
        printf("%d", sum(1234));
}

风车呼呼呼 发表于 2022-4-30 11:46:53

运行不出结果是指程序一直不结束也不给结果,还是什么都不显示就结束了
如果是前者,可考虑过是走到这里等待你的输入?
while((s=getchar())!='\n')
相当于你要把整数n输入两遍才行,甚至是第二遍只要输入一个位数相同的数都能算。这设计逻辑问题大了
页: [1]
查看完整版本: 函数:各个位数字求和