CCF201512-1 数位之和(100分)【进制+文本】

这篇博客介绍了如何计算一个十进制整数的数位之和,提供了两种解题方法:整数处理和文本处理。通过C语言、Python和Java的代码示例,展示了如何实现这一功能。程序读取输入的整数,然后逐位求和,最后输出结果。无论是通过整数运算还是文本解析,都能有效解决这个问题。
摘要由CSDN通过智能技术生成

试题编号: 201512-1
试题名称: 数位之和
时间限制: 1.0s
内存限制: 256.0MB
问题描述:

问题描述
  给定一个十进制整数n,输出n的各位数字之和。
输入格式
  输入一个整数n。
输出格式
  输出一个整数,表示答案。
样例输入
20151220
样例输出
13
样例说明
  20151220的各位数字之和为2+0+1+5+1+2+2+0=13。
评测用例规模与约定
  所有评测用例满足:0 ≤ n ≤ 1000000000。

问题链接CCF201512-1 数位之和
问题简述:(略)
问题分析
重写解题博客以及解题程序代码(参见参考链接),解题逻辑更加清晰,解题代码更加简洁,多种语言解法。
解法一:整数处理
按照题意,程序读入整数,根据进制原理,逐位取出其数字加起来就可以了。进制原理说的是,个位是100位,十位是101位,百位是102位,…,这是数学原理。
如果了解atoi()和itoa()是如何实现的,做这个题就太容易了。
解法二:文本处理
原理上来说,计算机程序的输入输出都是文本。直接按照文本来处理,是最直接的计算方法,计算速度更快。需要了字符解编码,进行字符转换数值的计算。

这里也给出解题的Python语言程序和Java语言程序。
程序说明:(略)
参考链接
CCF201512-1 数位之和(100分)
题记:不要忘记了,计算机的输入输出本质上是文本,也就是一串字符。

100分的C语言程序(解法一:整数处理)如下:

/* CCF201512-1 数位之和 */

#include <stdio.h>

int main(void)
{
    int n, sum = 0;
    scanf("%d", &n); /* 输入整数 */

    /* 求数位之和 */
    while (n) {
        sum += n % 10;
        n /= 10;
    }

    printf("%d\n", sum); /* 输出结果 */

    return 0;
}

100分的C语言程序(解法二:文本处理)如下:

/* CCF201512-1 数位之和 */

#include <stdio.h>

#define L 10
char s[L + 1];

int main(void)
{
    int sum = 0, i;
    scanf("%s", s); /* 输入整数 */

    /* 求数位之和 */
    for (i = 0; s[i]; i++)
        sum += s[i] - '0';

    printf("%d\n", sum); /* 输出结果 */

    return 0;
}

100分的Python语言程序如下:

# CCF201512-1 数位之和 

n = input()
sum = 0
for i in n:
    sum += int(i)
print(sum)

100分的Java语言程序如下:

/* CCF201512-1 数位之和 */

import java.util.Scanner;

public class Main {
	public static void main(String args[]){
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt(), sum = 0;
		while (n != 0) {
			sum += n % 10;
			n /= 10;
		}
            	System.out.print(sum);
	}
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值