2015-10-15 109 views
-1

確定大家,所以我有一個9位數字的輸入(123456789),我需要將它分解爲第一個中間和最後三個數字(123,456,789)。 我知道我可以使用模取得最後三位數。我不知道如何得到其他兩組。 任何幫助,將不勝感激。將9位數字轉換爲3位3位數字

更新! 感謝milevyo答案,我設法弄明白了。現在代碼怪胎在那裏,我是一個初學者程序員,我想問什麼是更有效的方式來編寫此代碼(下面),也許使用較少的變量或其他一些technique.I沒有改變它燒焦,因爲我們不能因爲我們仍然是「還沒有學會了」

 scanf("%d" , &input_number); 
    last_group_of_three = input_number % 1000; 
    temp = (input_number-last_group_of_three)/1000; 
    middle_group_of_three = temp % 1000; 
    first_group_of_three = (temp-middle_group_of_three)/1000; 
+0

你到現在爲止嘗試了什麼? – skypjack

+1

除以1000並使用模數。 – Barmar

+1

呃......分開。這是一個四年級的數學問題,而不是編程問題。 –

回答

1
first_group_of_three = input number % 1000; 
shift=(input number-first_group_of_three)/1000 

second_group_of_three = shift % 1000; 

and so on 
+2

爲什麼不只是'shift = input number/1000;'? – chux

+0

如果有人想使用float而不是int,結果是什麼? – milevyo

+1

如果想要使用'float','輸入數字%1000'不會被編譯 - 所以'input number/1000'的結果是不相關的。 ''fmodf()'將被用來代替'%'。所以這是確定OP的代碼是使用整數。 – chux

0

您可以輸入一個字符表中的數字爲字符串,然後將前3個數字將保留第4個字符的char','第5,6,7個字符將成爲接下來的3個數字等等。因此,您最終會創建字符串「123,456,789」,然後打印。

1

簡化:@Barmar

scanf("%d", &input_number); 

last_group_of_three = input_number % 1000; 
input_number /= 1000; 

middle_group_of_three = input_number % 1000; 
input_number /= 1000; 

// % 1000 only if original input exceeded 9 digits 
first_group_of_three = input_number % 1000; 

注:許多編譯器將優化% 1000/ 1000成一個單一的操作提供了兩個結果:餘&商。

(OP沒有提及哪些代碼應該對負數做什麼。)

相關問題