|
有一數字問題,可以透過其最大值與最小值的差值,進行一連串的計算。
計算過程如下:
先將該數依照數字由大排到小,形成新的數字。例如該數為14095,排列完變成95410。
再將該數依照數字由小排到大,形成另一個新的數字。例如該數為14095,排列完變成1459。
將大的數減去小的數字,所得的差值,取代該數。
重複一至三的步驟,直到第三步的差值已經在前面出現過為止。
輸入的值最大為六位數,當輸入為 0 時,則停止。
要求:顯示原始輸入數字、顯示最大數與最小數相減結果、顯示數字鏈的長度。
你該做的事情有四件
將輸入的整數,轉換成陣列,不能一開始就直接用陣列來讀取唷,要自己轉換。
將轉換完的陣列,以大到小的順序,轉換成整數。
同上,不過是以小到大的順序。
將大數減小數後的結果,存到一個陣列裡,並且判斷之前有沒有出現過,有出現過就停止運算。
你需要
將數字轉換成陣列,再轉換回來的能力。
將陣列做排序的能力。
再陣列中搜尋某個數字的能力。
可以參考以前教過得泡沫排序、還有搜尋
如何將數字轉換成陣列再換回來,請參考附檔InverseInteger.c。
InverseInteger.c
#include <stdio.h>
#include <stdlib.h>
int main(void){
int input,output=0;
int integer[10] = {0};
int i,count=0;
int multiplicand=1;
printf("Please enter a value : ");
scanf("%d",&input);
|
|