pow精度问题
大佬求助!!!为什么pow里面是k的时候输出的值不对呀?#include <stdio.h>
#include<math.h>
int main(int argc, char *argv[])
{
int i,t,j;
double k=3;
double sum;
for(i=pow(10,k);i<pow(10,k);i++){
t=i;
sum=0;
for(j=3;j>0;j--){
sum=sum+pow(t%10,k);
t=t/10;
}if(i==sum){
printf("%lf\n",sum);
}
}
return 0;
} 你的代码 for(i = pow(10, k); i < pow(10, k); i++) 就已经有问题了,i 初始值为 pow(10, k),循环条件为i < pow(10, k),那岂不是永远进不了循环? 傻眼貓咪 发表于 2021-12-19 12:47
你的代码 for(i = pow(10, k); i < pow(10, k); i++) 就已经有问题了,i 初始值为 pow(10, k),循环条件为...
哦哦,感谢大佬
tyl555 发表于 2021-12-19 21:47
哦哦,感谢大佬
但如果我把i=pow(10,k-1)呢
tyl555 发表于 2021-12-19 21:49
但如果我把i=pow(10,k-1)呢
可以知道你的题目是什么吗?不知道题目,很难判断该怎么改写你的代码{:5_104:} 傻眼貓咪 发表于 2021-12-19 21:51
可以知道你的题目是什么吗?不知道题目,很难判断该怎么改写你的代码
好的
tyl555 发表于 2021-12-19 21:55
好的
输出水仙花数。输人一个正整数 n (3≤ n ≤7),输出所有的 n 位水仙花数。水仙花数是指一个 n 位正整数,它的各位数字的 n 次幂之和等于它本身。例如153的各位数字的立方和是 1^3 +5^3+3^3=153。试编写相应程序。 傻眼貓咪 发表于 2021-12-19 21:51
可以知道你的题目是什么吗?不知道题目,很难判断该怎么改写你的代码
输出水仙花数。输人一个正整数 n (3≤ n ≤7),输出所有的 n 位水仙花数。水仙花数是指一个 n 位正整数,它的各位数字的 n 次幂之和等于它本身。例如153的各位数字的立方和是 1^3 +5^3+3^3=153。试编写相应程序。 傻眼貓咪 发表于 2021-12-19 21:51
可以知道你的题目是什么吗?不知道题目,很难判断该怎么改写你的代码
输出水仙花数。输人一个正整数 n (3≤ n ≤7),输出所有的 n 位水仙花数。水仙花数是指一个 n 位正整数,它的各位数字的 n 次幂之和等于它本身。例如153的各位数字的立方和是 1^3 +5^3+3^3=153。试编写相应程序。 傻眼貓咪 发表于 2021-12-19 12:47
你的代码 for(i = pow(10, k); i < pow(10, k); i++) 就已经有问题了,i 初始值为 pow(10, k),循环条件为...
输出水仙花数。输人一个正整数 n (3≤ n ≤7),输出所有的 n 位水仙花数。水仙花数是指一个 n 位正整数,它的各位数字的 n 次幂之和等于它本身。例如153的各位数字的立方和是 1^3 +5^3+3^3=153。试编写相应程序。 傻眼貓咪 发表于 2021-12-19 21:51
可以知道你的题目是什么吗?不知道题目,很难判断该怎么改写你的代码
输出水仙花数。输人一个正整数 n (3≤ n ≤7),输出所有的 n 位水仙花数。水仙花数是指一个 n 位正整数,它的各位数字的 n 次幂之和等于它本身。例如153的各位数字的立方和是 1^3 +5^3+3^3=153。试编写相应程序。 tyl555 发表于 2021-12-19 21:58
输出水仙花数。输人一个正整数 n (3≤ n ≤7),输出所有的 n 位水仙花数。水仙花数是指一个 n 位正整数,它 ...
#include <stdio.h>
#include <math.h>
int main()
{
int n, a, b, x, y;
scanf("%d", &n);
a = pow(10, n-1);
b = a*10-1;
for(int i = a; i <= b; i++){
x = i;
y = 0;
while(x){
y += pow(x%10, n);
x /= 10;
}
if(y == i) printf("%d\n", y);
}
return 0;
} 本帖最后由 tyl555 于 2021-12-20 12:53 编辑
傻眼貓咪 发表于 2021-12-19 22:26
感谢大佬,懂了。可以顺便说一原因吗?为什么while里面的pow不用转化成int型 因为上面已经声明 x 和 y 是 int 了。
比如:
int a; // 声明 int 整数
a = 12.34; // 这里故意赋值浮点数,a 类型还是不变,整数 12,取下值。 哦哦
页:
[1]