這道題的關鍵在于分離數字,分離方法可以用這種方法,比如,用119來實現分離,根據題目要求結果為1+1+9=11對吧,我們通過這樣來分離,(1)用119%10,就是119除以10的余數是9對吧?聰明的你現在就應該發現9被分離出來了吧(2)接著分離十位數,119/10的結果只能360問答為整數是11對吧,再用11%10,11除以10的余數為1對吧?是不是又把1分離出來了(3)最后就是百位數了,11/10的結果為1對吧,百位數也分離出來了(4)最后我們只需要吧他們相加不就完了。
里面還有個地方就是分苦坐可冷反破吃向考離的結束條件,就是什么時候分離結束,當分離整除出來那個數小于10的時候就結束了
在分離過程中我們可以使用數組來存儲分離出來的數。
具體代碼如下:
/*方法一為遞歸方法解答,本人覺得此方法更簡單,能理解最好*/
#include <stdio.h>
int show(int num)
{
if(num<10)
return num;/*遞歸出口*/
else
return num%10+show(num/10);
}
void main()
{
int num,sum;
printf("請輸入一個整數:");
scanf("%d",&num);
sum=show(num);
printf("各位數之和戰仍聯百擔們下評遠端飯的結果為:%d\n",sum);
}
/*方法二用數組做的,做法可能過于復雜,不要建議,有好的方法大家分享*/
#include <stdio.h>
void main()
{
int value[10];
int num;
printf("請輸入一個整數:");
scanf("%d",&num);
while(num<0||num>=10000)
{
printf("此代碼暫時只支持10000以下的4位數的計算,輸入整數無效!請重新輸入另意末委:");
scanf("%d",&num);
}
if(num>=0&&num<10)
printf("結果為:%d\n",num);
else if(num>=10&&num<100)
{
value[0]=num%10;
value[1]=num/10;
printf("結果為:%d\n",value[0]+value[1]);
}
else if(num>=100&&num<1000)
{
value[0]=num%10; /*分離個位數*/
value[1]=num/10; /*得出新的待分離數*/
value[2]=value[1]%10; /*分離出十位數*/
value[3]=value[1]/10; /*得到百位數*/
printf("結果為:%d\n",value[0]+value[2]+value[3]);
}
else
{
value[0]=num%10; /*分離個位數*/
value[1]=num/10; /*得出新的待分離數*/
value[2]=value[1]%10; /*分離出十位數*/
value[3]=value[1]/10; /*得出新的待分離數*/
v護居頻配特毛圖火區仍倍alue[4]=value[3]%10; /*得出百位數*/
value[5]=value[3]/10; /*得出千位數*/
printf("結果為:%d\n",value跳妒年[0]+value[2]+value[4]+value[5]);
}
}