C语言单利计算程序1可运行程序2失效原因求助
故障原因分析
- 首先说明笔误问题:你粘贴的两份代码里都把单利计算公式的
p*r*t漏写乘号写成了prt,C语言不支持数学书写中的隐式乘法,会将prt识别为未声明的变量,正常情况下两份代码都无法编译通过。你提到程序1可正常运行,说明你本地实际编写的程序1是正确加了乘号的,属于粘贴时的疏漏。 - 程序2的核心错误是计算逻辑执行顺序错误:排除笔误的前提下,程序2将利息计算语句
interest = p*r*t / 100;放在了所有scanf输入语句之前,此时p、t、r三个变量还未被用户输入赋值,存储的是内存中的随机垃圾值,计算得到的interest自然是无效值。后续你输入三个变量的有效值后,程序不会重新执行利息计算逻辑,最终输出的还是最初的垃圾值。
程序1可以正常运行的原因就是它把单利计算放在了所有输入完成之后的printf语句中,三个变量都已经拿到了有效值才执行计算。
修正后的程序2代码
#include<stdio.h> int main() { int p, t; float r, interest; printf("please enter the principle amount\n"); scanf("%d", &p); printf("please enter the time period of repayment\n"); scanf("%d", &t); printf("please enter the rate of interest for lending\n"); scanf("%f", &r); // 所有输入完成后再计算利息 interest = p * r * t / 100; printf("The simple interest is %f", interest); return 0; }
内容的提问来源于stack exchange,提问作者ThedarshanN
相关产品推荐
相关产品推荐

