ZZULIOJ題解
1109: 數根(函數專題)
題目描述
輸入一個正整數,輸出該數的數根。數根可以通過把一個數的各個位上的數字加起來得到。如果得到的數是一位數,那麼這個數就是數根。如果結果是兩位數或者包括更多位的數字,那麼再把這些數字加起來。如此進行下去,直到得到是一位數為止。比如,對于24來說,把2和4相加得到6,由于6是一位數,是以6是24的數根。再比如39,把3和9加起來得到12,由于12不是一位數,是以還得把1和2加起來,最後得到3,這是一個一位數,是以3是39的數根。
要求使用函數,定義函數digitSum(int n)求n的各位數字和,其餘功能在main()函數中實作。
int digitSum(int n)
{
//函數傳回n的各位數字之和
}
對于C/C++代碼的送出,本題要求必須通過定義digitSum函數和main函數實作,否則,送出編譯錯誤,本題需要送出完整程式代碼。
輸入
輸入一個int範圍内的正整數n
輸出
輸出n的數根
樣例輸入
樣例輸出
數根這個概念在題目中已經很好的闡述了。
代碼
#include<stdio.h>
int digitSum(int n)//數根函數,計算數根
{
int sum=0;//定義一個sum來累計各位數字之和
while(n!=0){//當n不為0
sum+=n%10;//對n取餘得到其最後一位數字
n=n/10;//對n除10舍去最後一位數字
}
//這裡也可以一個n>9然後再此處補加一個sum+=n即可。
return sum;//傳回sum(n的各位數字之和)的值
}
int main()
{
int n;//定義一個整數n
scanf("%d",&n);//鍵盤輸入n
n=digitSum(n);//直接操作一次數根函數
while(n>9){//當n不是一位數字的時候
n=digitSum(n);//繼續進行計算數根,将值賦予n
}
printf("%d",n);//輸出n
return 0;//程式正常結束
}