重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
1,for循环的条件错了,应该是大于号。
创新互联长期为近千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为城步企业提供专业的成都做网站、成都网站制作,城步网站改版等技术服务。拥有十余年丰富建站经验和众多成功案例,为您定制开发。
2,math.h中的函数用的时候要慎重,这些都是用来做复杂的数学计算的,时间开销都很大。
3,求余只能对整数操作,这点是必然的。但浮点数是可以转换成整数的,可以用强制类型转换,或者设一个整型的中间变量。注意浮点数转整数的时候是舍入的。当然,这里只是说这个事,不建议这样做。
建议的做法有两个,简单点延用原有的思路,可以自己写一个求10的k次方的函数,用整数进行运算。
int pow10n( int k )
{
r = 1;
for(i=0; i k ; ++i)
r *= 10;
return r;
}
复杂点的做法是把求10的k次方这个运算和拆分n的循环嵌在一起,这个应该是正统的做法。
for( k=0; k3; ++k )
{
n %= 10;
}
当然,这个算法得到的结果是逆序的,4、3、2、1
这有两个办法,一个是把结果顺序放到数组中,输出的时候把顺序倒过来,说白了是用中间变量。
另外一个办法是用栈,或者用递归(本质上也是用的栈),直接按逆序出结果。当然,这个方法对初学者有点难度了。
#include stdio.h
int main(void)
{
int x,y=1,z;
printf("Enter x:");
scanf("%d",x);
for(z=1;z=x;z++)
{
y=y*x;
}
printf("y=%d",y);
return 0;
}
或
#include stdio.h
#include math.h
int main(void)
{
int x,y;
printf("Enter x:");
scanf("%d",x);
y=pow(x,x);
printf("y=%d",y);
return 0;
}
整数的话最简单的办法就是将一个给定到数连乘n次;以计算a到n次幂为例:
#include"stdio.h"
main()
{
double a,temp;
int n,i;
temp=1;
printf("请输入底数:");
scanf("%d",a);
printf("请输入指数:");
scanf("%d",n);
for(i=0;in;i++);
{
temp=temp*a;
}
printf("%f",temp);
}
这种方法只适用与指数n为=0的整数;如果涉及分数或负数要用到数学函数#include"math.h"
C语言中计算一个数的N次方可以用库函数pow来实现。
函数原型:double pow(double x, double y);
功 能:计算x^y的值
返 回 值:计算结果
举例如下:
double a = pow(3.14, 2); // 计算3.14的平方
注:使用pow函数时,需要将头文件#includemath.h包含进源文件中。
可以用在math.h头文件中声明的pow()函数求,例如:
要求a的b次方,就用pow(a,b)即可。
^符号在C中是位异或操作符,不用于求乘方。
extern float pow(float x, float y)
用法:#include math.h
功能:计算x的y次幂。
说明:x应大于零,返回幂指数的结果。
举例:
// pow.c
#include stdlib.h
#include math.h
#include conio.h
void main()
{
printf("4^5=%f",pow(4.,5.));
getchar();
}
相关函数:pow10
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。