注册 登录
编程论坛 C语言论坛

遇到一道不懂思路的题,麻烦看看

积极去 发布于 2019-11-25 18:37, 1576 次点击
对于给定的正整数N,求它的位数及其各位数字之和。

输入格式:
输入在一行中给出一个不超过10
​9
​​ 的正整数N。

输出格式:
在一行中输出N的位数及其各位数字之和,中间用一个空格隔开。

输入样例:
321
输出样例:
3 6
#include <stdio.h>

int main(void) {
    int number, temp, i = 0, sum = 0;

    scanf("%d", &number);
    temp = number;
    while (temp) {
        sum += temp % 10;
        temp /= 10;
        i++;
    }
    printf("%d %d\n", i, sum);

    return 0;
} 这个代码如何解读??大神求救
1 回复
#2
c鳌白2019-11-25 21:12
#include <stdio.h>//调用头文件

int main(void)//使用main返回函数
{
    int number, temp, i = 0, sum = 0;//定义变量为整型

    scanf("%d", &number);//输入一个数,初始化值
    temp = number;//把输入的数赋值给temp
    while (temp) //当temp循环除以10等于0时跳出循环
{
        sum += temp % 10;//把输入初始化的number的值赋值给temp后,求这个数(输入的数)和10的绝对值(取整数)
                         //如果是输入的是12345,每次去掉最后一位数,第一次值为5(取整),第二次为4(取整)第三次为3(取整)第四次为2(取整),第五次值为1(取整)
                         //sum+就是等于每次取出的数相加,最后得到sum=5+4+3+2+1=15
        temp /= 10;//这用来跳出循环,第一次值为12345/10=1234(取整),第二次为1234/10=123(取整),第三次为123/10=12(取整)第四次为12/10=1(取整),第五次为1/10=0(取整)
        i++;//计数器,用来计时经过多少次循环计算(每循环计算一次加1,也可以说是循环了几次)i=5;
 }
    printf("%d %d\n", i, sum);//打印出循环次数,和输入的值绝对值之和(结果等于i=5,sum=15)
    return 0;
}
1