带你学c带你飞 取值范围 课后作业动动手第二问 问题
问题大概意思是: 输入一个整数255 输出这个整数的五次方 保留两位小数正确的代码:
#include <stdio.h>
#include <math.h>
int main()
{
int i;
double result;
printf("请输入一个整数:");
scanf("%d", &i);
result = pow(i, 5);
printf("%d的五次方是:%.2f\n", i, result);
return 0;
}
我的代码是: result的数据类型是 long unsigned int
结果 无法打印出255正确五次方值,显示的是 0.00
我的想法是: 整数的五次方也是整数,只是大一些,最后打印的时候%.2f就可以保留两位小数。
我想问一下,到底是哪里出问题了 本帖最后由 baige 于 2020-8-31 00:49 编辑
#include <stdio.h>
#include <math.h>
int main()
{
int i;
long long int result;
printf("请输入一个整数:");
scanf("%d", &i);
result = pow(i, 5);
printf("%d的五次方是:%lld\n", i, result);
return 0;
}
%.2f是float 和double输出时使用的
用unsigned long int 得用%lu 但是输出的结果是不正确的,结果太大溢出了,要整数的话使用long long int
printf的输出格式
https://fishc.com.cn/forum.php?mod=viewthread&tid=66471&extra=page%3D1%26filter%3Dtypeid%26typeid%3D583 问题解决的话,请设置最佳 #include <stdio.h>
#include <math.h>
int main()
{
int i;
double result;
printf("请输入一个整数:");
scanf("%d", &i);
result = pow(i, 5);
printf("%d的五次方是:%0.2e\n", i, result);
return 0;
}
出错的原因是255的5次已经超出了双精度double型的范围而溢出了,因此,不能再用整型方式输出,必须要改用科学记数法输出,这才符合题设要求------保留两位小数,若采用 long long int ,它或许能正常输出,但它还是整数,也就不能可能有小数出现,是不符合题意的。
页:
[1]