重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
问题很多!首先是对函数pow(double
成都创新互联公司专注于企业全网整合营销推广、网站重做改版、望城网站定制设计、自适应品牌网站建设、HTML5、成都做商城网站、集团公司官网建设、外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为望城等各大城市提供网站开发制作服务。
x,double
y)使用有误,函数原型为double
pow(double
x,double
y),返回xy的值,你用他来处理整型数据肯定不行,强制转换时是要出大问题滴!
第二,计算位数和的方法不对,不能处理只有一位数的整数。
第三,还是我来写一个吧,仅供参考!
#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("这是个%d位数\n",
b);
printf("%d\n",
sum);
system("pause");
return
0;
}
为什么停止运行呢?因为没有一个终点使程序能够转出去,一直会不断打开sum(0)。
表面上是两个之和,但实际上return 1表示的是sum(0)的值,因为是终点,所以写成多少都可以(不超过范围)。有了sum(0),就能计算n%10+sum(0);(return的值就是用在这里的),也就是sum(个位数),才能计算回来。
你的观察很仔细!
可以参考下面的代码:
#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("位数=%d\n",i);
return 0;
}
扩展资料:
递归函数定义
一种计算过程,如果其中每一步都要用到前一步或前几步的结果,称为递归的。用递归过程定义的函数,称为递归函数,例如连加、连乘及阶乘等。凡是递归的函数,都是可计算的,即能行的。
一个直接的例子:
//代码1
void func()
{
//...
if(...)
func();
else
//...
}
参考资料来源:百度百科-递归函数
#include
void main()
{
int a,i=0,sum=0;
scanf("%d",a);
while(a)
{
sum+=(a%10);//sum是个位数之和
a/=10;
i++;//i为位数
}
printf("%d位数,各位数字之和为%d\n",i,sum);
}