天天看點

【ZZULIOJ】1109: 數根(函數專題)ZZULIOJ題解

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;//程式正常結束
}