問題很多!首先是對(duì)函數(shù)pow(double
成都創(chuàng)新互聯(lián)公司專注于企業(yè)全網(wǎng)整合營(yíng)銷推廣、網(wǎng)站重做改版、望城網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、HTML5、成都做商城網(wǎng)站、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為望城等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
x,double
y)使用有誤,函數(shù)原型為double
pow(double
x,double
y),返回xy的值,你用他來處理整型數(shù)據(jù)肯定不行,強(qiáng)制轉(zhuǎn)換時(shí)是要出大問題滴!
第二,計(jì)算位數(shù)和的方法不對(duì),不能處理只有一位數(shù)的整數(shù)。
第三,還是我來寫一個(gè)吧,僅供參考!
#include
stdio.h
#include
stdlib.h
int
main()
{
int
num,
t,
b,
sum
=
0;
scanf("%ld",num);
t
=
num;
b
=
0;
while
(t
0)
{
b++;
t
/=
10;
}
while
(num
0)
{
sum
+=
num
%
10;
num
/=
10;
}
printf("這是個(gè)%d位數(shù)\n",
b);
printf("%d\n",
sum);
system("pause");
return
0;
}
為什么停止運(yùn)行呢?因?yàn)闆]有一個(gè)終點(diǎn)使程序能夠轉(zhuǎn)出去,一直會(huì)不斷打開sum(0)。
表面上是兩個(gè)之和,但實(shí)際上return 1表示的是sum(0)的值,因?yàn)槭墙K點(diǎn),所以寫成多少都可以(不超過范圍)。有了sum(0),就能計(jì)算n%10+sum(0);(return的值就是用在這里的),也就是sum(個(gè)位數(shù)),才能計(jì)算回來。
你的觀察很仔細(xì)!
可以參考下面的代碼:
#include "stdio.h"
int main()
{
int number,i=0,sum=0;
printf("please input a number:");
scanf("%d",number);
while(number!=0)
{
sum+=number%10;
number/=10;
i++;
}
printf("sum=%d\n",sum);
printf("位數(shù)=%d\n",i);
return 0;
}
擴(kuò)展資料:
遞歸函數(shù)定義
一種計(jì)算過程,如果其中每一步都要用到前一步或前幾步的結(jié)果,稱為遞歸的。用遞歸過程定義的函數(shù),稱為遞歸函數(shù),例如連加、連乘及階乘等。凡是遞歸的函數(shù),都是可計(jì)算的,即能行的。
一個(gè)直接的例子:
//代碼1
void?func()
{
//...
if(...)
func();
else
//...
}
參考資料來源:百度百科-遞歸函數(shù)
#include?
void?main()
{
int?a,i=0,sum=0;
scanf("%d",a);
while(a)
{?
sum+=(a%10);//sum是個(gè)位數(shù)之和
a/=10;
i++;//i為位數(shù)
}
printf("%d位數(shù),各位數(shù)字之和為%d\n",i,sum);
}