这个c语言哪里出错了?为什么运行没有结果?return的数特别大。。
发布网友
发布时间:2023-12-03 14:35
我来回答
共5个回答
热心网友
时间:2024-11-18 22:57
正确的写法:
分析你的写法:
求幂没那么复杂,但是如果求幂的结果超出float的范围,这样写就不行了。
热心网友
时间:2024-11-18 22:57
首先注意这儿return r;
printf("%f",r);
printf之前return就返回了,所以printf不会得到执行,return 必须在printf后面
然后还要注意x的y次方很可能是个很大的数,不一定float可以表示。
热心网友
时间:2024-11-18 22:58
#include<stdio.h>
float exp(float x,int y){
float r=1;
int i;
if(y <=0) return 1;
for (i=0;i<y;i++)
r=r*x;
printf("result in func %f",r);
return r;
}
int main(void){
printf("your number:");
float x,r;
int y;
scanf("%f %d",&x,&y);
printf("calc %f^%d = \n", x, y);
r=exp(x,y);
printf("result is %f\n", r);
}
改成这样好一些
另加了一些调试信息,你运行一下,有什么问题的话再追问
热心网友
时间:2024-11-18 22:58
10000以内的完数一共就4个,第4个记得是8000多。你的代码算法效率太低,耐心等待结果应该会出来。另外觉得算法还有点瑕疵,if
(a*b==i)这个判断应该排除a==b的情况,所以似乎应该写成if
(a*b==i
&&
a-b)……
热心网友
时间:2024-11-18 22:59
修改为如下代码:
#include<stdio.h>
float exp(float x,float y){
float r=1;
int i;
for (i=0;i<y;i++){
if (y>0){
r=r*x;
}
else
return 1;
//break;
}
printf("%f",r);
return r;
}
void main ( )
{
printf("your number:");
float x,r,y;
scanf("%f %f",&x,&y);
r=exp(x,y);
}