1. 程式人生 > >第九屆藍橋杯省賽JAVA語言 C組題解_題7 縮位求和

第九屆藍橋杯省賽JAVA語言 C組題解_題7 縮位求和

JAVA語言 C組題解_題7 縮位求和

題目

標題:縮位求和

在電子計算機普及以前,人們經常用一個粗略的方法來驗算四則運算是否正確。
比如:248 * 15 = 3720
把乘數和被乘數分別逐位求和,如果是多位數再逐位求和,直到是1位數,得
2 + 4 + 8 = 14 ==> 1 + 4 = 5;
1 + 5 = 6
5 * 6
而結果逐位求和為 3
5 * 6 的結果逐位求和與3符合,說明正確的可能性很大!!(不能排除錯誤)

請你寫一個計算機程式,對給定的字串逐位求和:
輸入為一個由數字組成的串,表示n位數(n<1000);
輸出為一位數,表示反覆逐位求和的結果。

例如:
輸入:
35379

程式應該輸出:
9

再例如:
輸入:
7583676109608471656473500295825

程式應該輸出:
1

資源約定:
峰值記憶體消耗(含虛擬機器) < 256M
CPU消耗 < 1000ms

請嚴格按要求輸出,不要畫蛇添足地列印類似:“請您輸入…” 的多餘內容。

所有程式碼放在同一個原始檔中,除錯通過後,拷貝提交該原始碼。
不要使用package語句。不要使用jdk1.7及以上版本的特性。
主類的名字必須是:Main,否則按無效程式碼處理。

解題思路

1、由題可得,輸入一串整陣列成的字串,逐位求和,直到是1位數。
2、將字串擷取成單獨的每個字元存入陣列中,將陣列中的數字求和。
3、將所求的和存入陣列如果陣列長度大於2(也就是大於或等於10)則繼續求和。直到和為一位數輸出和。

//java程式碼
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		char[] c = sc.next().toCharArray();//將輸入的字串存入陣列
		while (c.length != 1) {//陣列長度不為1就一直求和
			int sum = 0;//儲存和
			for (int i = 0; i < c.length; i++) {
				sum = sum + (c[i] - '0')
;//迴圈逐位求和 } c = String.valueOf(sum).toCharArray();//更新字元陣列,陣列c的值更改為sum。 } System.out.println(c); }