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 }