用c语言解决这道数学问题,写了一段代码,可为什么老是算不出正确结果?帮忙看下哪里有问题?

2025-03-23 03:03:06
推荐回答(1个)
回答1:

1、循环条件错误,应该是sum<500,而不是sum<=500,如果是sum<=500,输出的是第501项。

2、pow函数格式错误。对于a的pow函数,an是整型,不符合pow函数要求。1/2是整型运算,结果为0。两个参数都错了。同理,对于b的pow函数,两个参数也都是错的。

3、输出格式错误。

修改后的程序及修改说明:

#include
#include
int main(){
int sum = 0,an = 0;
double a = 0,b = 0;//改为double型
while(sum<500){ //改为sum<500
an++;
a = pow(double(an),1.0/2);//改为符合pow函数要求的形式
b = pow(double(an),1.0/3);//改为符合pow函数要求的形式
if(a != (int)a&&b != (int)b)
sum++;
}
printf("%d",an);//an前面的&去掉
return 0;
}