我必须在C中创建一个程序,它获取一个未定义的双精度值,并根据数字将它们全部增加一定百分比。当用户输入负值时,程序应该停止。当我使用少量数字时,这一切都运行良好,但当输入包含大量数字时,程序只打印最后一个数字。
这是我的代码:
#include <stdio.h>
int main()
{
double ins=0; //the input
while(ins>=0){
scanf("%lf",&ins);
if(ins<0){break;}
else{
if(ins<500){printf("%.2lf ",ins*1.15);}
else if(ins<=1000){printf("%.2lf ",ins*1.10);}
else {printf("%.2lf ",ins*1.05);}
}
}
return 0;
}
附加信息:使用GCC编译器。
程序应为特定输入提供的输出示例。
Input:
4003.31 1212.35 3414.31
4257.1 1394.37 1217.28
3602.85 4218.58 4994.8
1133.82 1086.48 2117.43
2253.86 3827.71 2170.16
1161.27 3069.77 1338.08
2791.99 3709.33 180.43
4555.77 318.58 1912.24
158.68 2106.49 4439.56
1247.34 -0.79
Output I should get:
4203.48 1272.97 3585.03 4469.96
1464.09 1278.14 3782.99 4429.51
5244.54 1190.51 1140.80 2223.30
2366.55 4019.10 2278.67 1219.33
3223.26 1404.98 2931.59 3894.80
207.49 4783.56 366.37 2007.85 182.48
2211.81 4661.54 1309.71
我该怎么做才能使程序正常工作,不仅数量少,而且数量如上?
编辑:我输入上述输入的输出是&#34; 1309.71&#34;,这只是我应该收到的完整输出的最后一个数字。
答案 0 :(得分:2)
注意:您有一个简单的逻辑错误。因为你在ins&lt; = 100之前检查ins&lt; 500,所以你永远不会命中ins&lt; = 100 case。
您的代码和示例数据适合我。你能否详细解释一下这个问题?
答案 1 :(得分:0)
好吧,我找到了解决方案。正如你们所说的那样,代码工作正常,我使用另一个命令行界面进行了测试。现在输出是正确的,所以看起来我之前使用的那个(Windows CMD)是在信息达到一定限度时删除输出的信息,可能是一个小的缓冲区大小或类似的东西。谢谢你的帮助!