| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1296 人关注过本帖
标题:遇到一道不懂思路的题,麻烦看看
只看楼主 加入收藏
积极去
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2019-11-25
结帖率:0
收藏
已结贴  问题点数:20 回复次数:1 
遇到一道不懂思路的题,麻烦看看
对于给定的正整数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;
} 这个代码如何解读??大神求救
搜索更多相关主题的帖子: 思路 number sum temp 位数 
2019-11-25 18:37
c鳌白
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:24
专家分:101
注 册:2019-11-10
收藏
得分:20 
#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;
}
2019-11-25 21:12
快速回复:遇到一道不懂思路的题,麻烦看看
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022902 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved