【问题标题】:my c-program doesn't work on NetBeans but works fine on android mobile c compiler app我的 c 程序在 NetBeans 上不起作用,但在 android 移动 c 编译器应用程序上运行良好
【发布时间】:2019-02-21 04:51:49
【问题描述】:

我知道我的程序是正确的,但 netbeans 并没有按照预期的方式运行它。我在 android 移动 c 编译器应用程序上运行了相同的程序,它运行良好。我是新来的,所以我无法在此处插入照片向您展示输出,但请单击提供的链接以查看我的 netbeans 给我的输出。
请告诉我我的 IDE 出了什么问题,我能做些什么来修复它。

这是下面的程序:

#include <stdio.h>
#include <math.h>

int main() {
    int x = 1, q, n, p;
    float r, b, a;
    while (x <= 10) {
        printf("enter the value of principle\n");
        scanf("%d", &p);

        printf("enter the number of years\n");
        scanf("%d", &n);

        printf("enter number of times interest is added\n");
        scanf("%d", &q);

        printf("enter rate of interest\n");
        scanf("%d", &r);

        b = pow((1 + r / q), n * q);
        a = p * b;
        printf("amount=%f\n", a);
        x++;
    }
    return 0;
}

enter image description here enter image description here

【问题讨论】:

  • scanf("%d",&amp;r); r 被声明为float 变量,所以你必须使用scanf("%f",&amp;r);。尝试打开编译器警告。
  • @Observer 这完全没有区别。
  • "我知道我的程序是正确的" [X] 怀疑。
  • @AustinSpark 花一点时间分析你的程序出了什么问题是值得的。当scanf() 函数(及其所有相关函数)遇到意外字符时,它将在不消耗该字符的情况下退出。由于在读取整数时不希望找到句点 (.),因此将其留在输入流中并导致所有后续 scanf("%d",...) 调用失败。检查此函数的返回值通常是个好主意。如果它为零(或任何小于预期变量分配数的数字),那么您就知道出了问题。
  • @AustinSpark “为什么相同的程序可以在 Android Mobile C 编译器应用程序上运行?”这是学习 C 编程的艰难课程之一——或者实际上是关于一般编程的。 “工作”有两种定义: 1. 似乎“工作”,但偶然,即使它有错误,只是碰巧不会引起问题,或者在不同平台上表现不同。 2. 保证工作,出于正确的原因工作,在所有平台上工作相同。

标签: c gcc netbeans-8.2


【解决方案1】:

这只是一个很小的错误。逻辑完全没问题。我认为您忽略了rate of interest 的一小部分访问说明符。您已正确且恰当地将其声明为float。但是在接受来自用户的值时,您使用%d 将其作为整数接受。编译器没有预料到这一点,因此行为异常。只需将接受利率部分替换为:

   `printf("enter rate of interest\n");
    scanf("%f", &r);`

现在应该可以正常工作了。只需附加输出以供您确定:

gcc 版本 4.6.3

输入本金5000的值

输入年数 2

输入利息添加次数 4

输入利率 2.5

金额=243106.703125

输入原则值

是的,它会根据您的 while 循环执行 10 次。

【讨论】:

    猜你喜欢
    • 2018-05-13
    • 2019-07-01
    • 1970-01-01
    • 2019-01-27
    • 2020-08-21
    • 1970-01-01
    • 2015-01-03
    • 2020-03-05
    • 1970-01-01
    相关资源
    最近更新 更多