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