首页 > 试题广场 >

数位之和

[编程题]数位之和
  • 热度指数:29950 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}给定一个整数 n\left(-10^{9} \leqq n \leqq 10^9\right),请计算其所有数位之和。若 n 为负数,请先取其绝对值。

输入描述:
\hspace{15pt}在一行中输入一个整数 n,满足 -10^{9} \leqq n \leqq 10^9


输出描述:
\hspace{15pt}输出一个整数,表示 n 的所有数位之和。
示例1

输入

12

输出

3

说明

将正整数 12 的各位相加,1+2=3
示例2

输入

-305

输出

8

说明

取绝对值后 305 的各位相加,3+0+5=8
#include <iostream>
using namespace std;

int main()
{
    int n;
    cin >> n;
    int sum = 0;
    while (n)
    {
        int e = n % 10;
        sum += e;
        n /= 10;
    }
    cout << sum << endl;
}

发表于 2022-02-26 14:19:49 回复(2)
#include <iostream>
using namespace std;

int main() {
    int a;
    cin >> a;
    int sum =0;

    if(a<0){
        a*=(-1);
    }

    while(a!=0)
    {
        sum += (a%10);
        a = a/10;
    }
    cout<<sum;
}


发表于 2025-07-14 15:38:17 回复(0)
#include <stdio.h>

int main() {
    int a = 0, b = 0;
    scanf("%d", &a);
    do {
        b = b + a % 10;
        a /= 10;

    } while (a > 0);
        printf("%d", b);

    return 0;
}
发表于 2024-05-31 17:52:59 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int a = in.nextInt();
            int sum = 0;
            while(a!=0) {
                sum+=a%10;
                a=a/10;
            }
            System.out.println(sum);
        }
    }
}

编辑于 2024-03-01 11:20:14 回复(0)
#include<stdio.h>
#include<math.h>    //int abs(int x) 返回x的绝对值
int main(){
    int i_input,i_output=0,i_remainder;    //余数
    scanf("%d",&i_input);
    i_input=abs(i_input);
    while(i_input != 0)
    {
        i_remainder = i_input % 10;
        i_input = (i_input - i_remainder) / 10;
        i_output = i_output + i_remainder;
    }
    printf("%d",i_output);
    return 0;
}

发表于 2022-06-15 09:58:00 回复(0)
#include <stdio.h>
long long int a(int n){
	if(n<0){
		n=-n;
	}
	int sum=0;
	int t=0;
	if(n<=10){
		sum=n;
	}
	while(n!=0){
		t=n%10;
		sum+=t;
		n/=10;
	}
	return sum;
}
int main() {
	int n;
	scanf("%d",&n);
	long long int b= a(n);
	printf("%lld\n",b);
	return 0;
}

发表于 2025-12-13 20:38:59 回复(0)
int main() {
    int a;
    cin >> a;
    a = abs(a);
    string s = to_string(a);
    int sum = 0;
    for(auto c : s) sum += c - '0';
    cout << sum;
}
发表于 2025-12-06 11:58:08 回复(0)
#include <stdio.h>
#include <stdlib.h>
int main() {
    int n,f;
    int sum=0;
    scanf("%d",&n);
    n=abs(n);
    while(n!=0) {
        f=n%10;
        n/=10;
        sum+=f;
    }
    printf("%d",sum);
    return 0;
}


发表于 2025-11-19 18:59:54 回复(0)
n=abs(int(input()))
p=n<=10**9
print(sum(int(i) for i in f'{n}' if p else'超出范围'))

# 此题提交后报错,提示的输入数值已超10的9次方的范围,答案未将描述中n的范围考虑进去

发表于 2025-10-30 11:23:47 回复(0)
print(sum([int(i) for i in input().strip('-')]))
发表于 2025-07-10 16:04:41 回复(0)
n = input().lstrip('-')
c = 0
for i in n:
    c += int(i)
print(c)
怎么没人看负号

发表于 2025-07-07 16:48:34 回复(1)
#include<stdio.h>

int main()
{
    int n,sum=0;
    scanf("%d",&n);
    int a=n;
    while(a){
        sum+=(a%10);
        a/=10;
    }
    printf("%d",sum);
    return 0;
}
发表于 2024-09-15 20:54:27 回复(0)
#include <stdio.h>

int main() {
    int n,sum=0;
    scanf("%d",&n);
    while(n)
    {
        sum=sum+(n%10);
        n=n/10;
    }
    printf("%d",sum);
    return 0;
}

编辑于 2024-01-13 10:33:12 回复(0)
#include <stdio.h>

int main()
{
    int a;
    int n=0;
    while(scanf("%1d",&a)!=EOF)
    {
        n+=a;
    }
    printf("%d",n);
    return 0;
}

发表于 2023-10-13 13:20:10 回复(0)
#include <stdio.h>
#include <string.h>
int main() 
{
    char arr[10] = {0};
    scanf("%s",arr);
    int lenth = 0,sum = 0;
    lenth = strlen(arr);
    for(int i = 0; i < lenth; i++)
    {
            sum += arr[i] - '0';
    }
    printf("%d",sum);

    return 0;
}

发表于 2023-06-27 13:51:49 回复(0)
#include<stdio.h>
int main() {
    int n,a=0,sum=0;
    scanf("%d",&n);
    while(n>0){
        a=n%10;
        sum+=a;
        n=n/10;
    }
    printf("%d",sum);
}
发表于 2022-07-20 14:48:33 回复(0)
#include <stdio.h>

int main(){
    int n, num, sum = 0;
    scanf("%d", &n);
    while(n > 9){
        num = n % 10;
        n /= 10;
        sum += num;
    }
    printf("%d", sum + n);
    return 0;
}

发表于 2022-05-24 22:04:24 回复(1)
n = abs(int(input()))
#if n<=10**9:
    n = str(n)
    s = 0
    for i in n:
        s+=int(i)
    print(s)
有用例超出取数范围
发表于 2025-12-17 23:56:16 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int m = Math.abs(n);
        int sum = 0;
        while(true){
            sum += n%10;
            n = n/10;
            if(n==0){
                break;
            }
        }
        System.out.println(sum);
    }
}
发表于 2025-12-15 19:22:59 回复(0)
#include <stdio.h>

int main()
{
    int n;
    scanf("%d",&n);
    if(n<0)
    n=-n;
    int ret=0;
    while(n!=0)
    {
        int temp=n%10;
        ret+=temp;
        n=n/10;
    }
    printf ("%d",ret);
    return 0;
}
发表于 2025-12-14 21:15:47 回复(0)