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 }
