7-14 个位数 (50 分)

这篇博客介绍了如何使用编程实现一个数值变换算法,该算法将大于9的整数通过求各位数之和的方式不断简化,直至结果小于等于9。作者提供了两种不同的C语言实现方法,分别展示了递归和循环迭代的思路,最后强调了简洁代码的重要性。
摘要由CSDN通过智能技术生成

最近zyz大佬喜欢上了个位数,所以他讨厌除了个位数之外的所有数,于是他看到一个大于9的数,便用其数位之和去代替这个数,如果位数仍然大于9,则继续重复上述步骤,直到其小于10为止。

例如:13421 -> 1+3+4+2+1 = 11 -> 1+1 = 2

输入格式:

一个非负整数(int范围内)。

输出格式:

经过变换后的答案。

输入样例:

在这里给出一组输入。例如:

19260817

输出样例:

在这里给出相应的输出。例如:

7

结尾无空行

法一,不知道为什么有一个点过不了

#include <stdio.h>
int min(int N){
    int sum = 0;
    while(N != 0){
        sum += N %10;
        N = N /10;
    }
    return sum;
}
int main()
{
    int N = 0;
    int sum = 0;
    scanf("%d",&N);
    
        sum += min(N);
        
        if(sum > 0 && sum <=9){
            printf("%d",sum);
        }else{
            sum = min(sum);
            if(sum > 0 && sum <=9){
            printf("%d",sum);
        }else{
                sum = min(sum);
                if(sum > 0&& sum <=9){
                    printf("%d",sum);
                }else{
                    sum = min(sum);
                if(sum > 0&& sum <=9){
                    printf("%d",sum);
                }else{
                    sum = min(sum);
                if(sum > 0&& sum <=9){
                    printf("%d",sum);
                }
                }
                }
            }
        }
    
    return 0;
}

法二(几天后想到的)

#include <stdio.h>
int main()
{
    int x = 0;
    scanf("%d",&x);
    int sum = 10;
    while(sum >=10)
    {
        sum = 0;
        while(x > 0) {
            sum += x % 10;
            x /= 10;
        }
        x = sum;
    }
    printf("%d",sum);
    return 0;
}

感觉简洁了不少,有逻辑感了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值