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