首页 > 试题广场 >

数位之和

[编程题]数位之和
  • 热度指数:25822 时间限制: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)
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)
#include <stdio.h>
int main() {
    int n;
    scanf("%d",&n);
    int t;
    int cnt=0;
    if (n>0){
        t=n;
        while(t>9){
            t=t/10;
            cnt++;
        }
        int i;
        int a=1;
        for(i=0;i<cnt;i++){
            a=a*10;
        }
        int sum=0;
        do{
            int b=n/a;
            n=n%a;
            a=a/10;
            sum=sum+b;
        }while(a>0);
        printf("%d",sum);
    }
    else if(n<0){
        n=-n;
		t=n;
        while(t>9){
            t=t/10;
            cnt++;
        }
        int i;
        int a=1;
        for(i=0;i<cnt;i++){
            a=a*10;
        }
        int sum=0;
        do{
            int b=n/a;
            n=n%a;
            a=a/10;
            sum=sum+b;
        }while(a>0);
        printf("%d",sum);
    }
	else if(n==0){
		printf("0");
	} 
    return 0;
}

发表于 2025-11-15 13:30:32 回复(0)
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void async function () {
    // Write your code here
    while(line = await readline()){
        let sum = 0
        for(let i in line) {
            sum +=  Number(line[i])
        }
        console.log(sum)
    }
}()
发表于 2025-11-11 16:54:56 回复(0)
n = int(input())
n = str(abs(n))
t = 0
for i in n:
    t += int(i)
print(t)

发表于 2025-11-10 21:53:53 回复(0)
#include <iostream>
using namespace std;

int main() {
    int n,i;
    int s=0;
    cin>>n;
    n=abs(n);
    for( i=1;n!=0;i=1)
    {
        i=n%10;
        s+=i;
        n/=10;
    }
    cout<<s;
    return 0;
}

发表于 2025-11-10 15:57:27 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        //使用Scanner录入一个整数n
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        //定义一个整数,表示n所有位数之和
        int sum=0;
        while(n!=0){
            sum+=n%10;
            n/=10;
        }
        System.out.println(sum);
    }
}
发表于 2025-11-01 11:37:28 回复(0)
#include <stdio.h>
#include <stdlib.h>

int main() {
    int T,a,b=0;
    scanf("%d",&T);
    T=abs(T);
   
    while (T>0)
    {
    a=T%10;
    T=T/10;
    b+=a;
    }
    printf("%d",b);
   
    return 0;
}
发表于 2025-11-01 09:54:00 回复(0)

问题信息

上传者:牛客301599号
难度:
112条回答 3143浏览

热门推荐

通过挑战的用户

查看代码
数位之和