c语言求解代码:

# include<stdio.h>

int main(void){
    int a,i=0,sum=0;
    scanf("%d",&a);
    if(a<0) a=-a;//求负整数的
    while(a){      
        sum+=(a%10);//sum存各位数之和  
        a/=10;
    }
    printf("各位数字之和为:%d\n",sum);
    return 0;
}

这样输入10位以内的整数都是正常的

一旦超过10位就.....

比如输入11个1;

这是因为数值太大溢出了!

看着才学c语言时候写的代码,感觉挺丑的,各种错误,现在再用Java写一遍吧;

 1 import java.util.Scanner;
 2 
 3 /**
 4  * @author: BinBin
 5  * @date : 2022/1/22
 6  */
 7 public class sum {
 8     public static void main(String[] args) {
 9         Scanner input = new Scanner(System.in);
10         System.out.println("请输入一个整数n:");//输入提示
11         long n = input.nextLong();   //赋值
12         if(n < 0) n = -n;       //判断是否是负整数
13         long sum = 0,t = n;    //初始化
14         for(; t>0; t /= 10)    //循环计算各位数和
15             sum += t%10;
16         System.out.println("整数n的各位数的和为:"+sum);
17     }
18 }