请大家看看我的程序错在哪里!运行出了奇怪的东西。S1E16的动手作业1
请大家看看我的程序错在哪里!运行出了奇怪的东西。S1E16的动手作业1#include<stdio.h>
#include<math.h>
int main()
{
float b;
int i;
i=0;
b = 400.00;
while(b>0)
{
b = b*pow(1.08,i) -50;
printf("%.2f\n",b);
i++;
}
printf("%.2f\n",b);
printf("%d\n",i);
return 0;
} 你向最上面滑会发现最上面有数据,后来就变得没数据了。
while(b>0)
{
b = b*pow(1.08,i) -50;
printf("%.2f\n",b);
i++;
}
因为是while(b>0)弄成了无限循环,它会一直在这个语句里面,程序无法停止。
因为没做过C语言的课后作业加上鱼币不够,所以其他的我就无能为力了。 你b改成double试试
输出也是%lf b = b*pow(1.08,i) -50;这一句在运行中会发生类型自动转换 pow(1.08,i)是double类型,最终在这一句中变量b被 临时 转化为double类型,执行下一语句后,变量b还是刚开始你定义的float类型,所以printf()中用占位符%f是没有问题的,况且无论是double类型还是float类型,都是用%f占位的。如果定义一个double a;用scanf("%lf",&a);其中占位符必须为%lf。你的问题出错的原因是你得循环条件有问题。 2197462750 发表于 2021-7-15 01:23
b = b*pow(1.08,i) -50;这一句在运行中会发生类型自动转换 pow(1.08,i)是double类型,最终在这一句中变 ...
多谢大佬!{:10_256:}我反复检查,对比答案。发现其实我还有其他错误
b = b*pow(1.08,i) -50;这句也错了。应该直接是b=b*1.08-50; Dev-C++ 5.10?
为什么后缀名不用.c? {:10_254:}
页:
[1]