上一期我們講的是求一個數的數根,和本期唯一不同的是,數據范圍不同了,上一期這個數是小于等于10的18次方的,這一期是小于等于10的1000次方的,開一個變量?肯定不行,我們需要再開一個數組,而且是char數組,在代碼中我們需要在后面把char轉化成int,這就要涉及ASCII的知識了!如何把存在char的數字變成能計算的數字呢?只需要-48!好了,放代碼!
#include<bits/stdc++.h>
using namespace std;
char a[1001];//這就是我們需要求的那個數
int ans;
int js(int n){int q=0;while(n!=0) {n/=10;q+=n%10;}//求數位和if(q%10==q) return q;//如果它的數位和是小于10的,那么返回這個數,并且回到主函數中輸出else return js(q);//否則繼續遞歸
}
int main(){scanf("%s",a+1);int l=strlen(a+1);//這個數的數位for(int i=1;i<=l;i++) ans+=a[i]-'0';//char->int:只需要-48,其實零的ASCII碼就是48哦!if(ans%10==ans) cout<<ans;//如果這個數的數位和小于10,那么直接輸出這個數else cout<<js(ans);//否則使用函數return 0;
}