【问题标题】:The cost price becomes 0 after value of i increases [closed]在 i 的值增加后,成本价格变为 0 [关闭]
【发布时间】:2019-12-08 08:17:10
【问题描述】:

我一直在尝试执行以下代码。但是,我不断得到相同的错误结果,我不知道为什么! 我的代码

int main()
{
        char* sel_items[15]={"apple","ball","keyboard","mouse"};   /*Selling items*/
        float sel_profit[15];         /*Selling Profit*/
        float sel_price[15];          /*Selling Price*/
        float cost_price[15];        /*Original Price*/
        int i;
        for(i=0;i<4;i++)
        {                                                                                                                                                                                                                                                     printf("\n\t\t\tENTER %s PRICE: ",sel_items[i]);
                scanf("%f",sel_price);                           /*Selling Price input here*/
                printf("\n\t\t\tENTER %s SELLING PROFIT :",sel_items[i]);  
                scanf("%f",sel_profit);                          /*Selling Profit input here*/
                cost_price[i]=sel_price[i]*sel_profit[i]/100;        /*Original Price*/
                printf("\n\t\t\t\t\tORIGINAL PRICE : %f",cost_price[i]);
     }
return 0;
}

这是程序的输出。

                    *ENTER apple PRICE: 50*

                    ENTER apple SELLING PROFIT :50

                                    ORIGINAL PRICE : 25.000000   /*the loop of first item is coorect*/
                    ENTER ball PRICE: 100

                    ENTER ball SELLING PROFIT :20

                                    ORIGINAL PRICE : 0.000000 /*i dont know what happens in the second loop*/
                    ENTER keyboard PRICE: 56

                    ENTER keyboard SELLING PROFIT :3

                                    ORIGINAL PRICE : -0.000000
                    ENTER mouse PRICE: 244

                    ENTER mouse SELLING PROFIT :4

                                    ORIGINAL PRICE : 0.000000*

帮我处理循环。当第一个循环被执行时,条件变为真所有相应的指令都被执行,但是在第二个循环之后我不知道会发生什么。请帮忙..

【问题讨论】:

  • 你没有在你的scanf()中索引sel_profit
  • scanf("%f",sel_price); ==> scanf("%f",sel_price+i); - 两行后sel_profit 也是如此。老实说,我希望你的作业中有更多的代码,因为在编写时首先不需要数组(因此你的错误)。
  • 这是什么意思/对不起我是初学者
  • 代码总是将值读取到sel_price[0]sel_profit[0],但计算平均值为sel_price[i]*sel_profit[i]/100,其中(在第一次循环迭代之后)i 不为零。由于 sel_pricesel_profit 在循环之前未初始化,因此将值相乘会导致未定义的行为(在第一次循环迭代之后)。

标签: c arrays loops


【解决方案1】:

您的sel_pricesel_profit 是数组,在您的循环中访问它们的方式是错误的,您应该使用索引来访问数组元素。

scanf("%f",sel_price); 替换为 scanf("%f",&amp;sel_price[i]);,sel_profit 也是如此。

你的 for 循环应该是这样的:-

 for(i=0;i<4;i++)
    {                                                                                                                                                                                                                                                     
            printf("\n\t\t\tENTER %s PRICE: ",sel_items[i]);
            scanf("%f",&sel_price[i]);                           /*Selling Price input here*/
            printf("\n\t\t\tENTER %s SELLING PROFIT :",sel_items[i]);  
            scanf("%f",&sel_profit[i]);                          /*Selling Profit input here*/
            cost_price[i]=sel_price[i]*sel_profit[i]/100;        /*Original Price*/
            printf("\n\t\t\t\t\tORIGINAL PRICE : %f",cost_price[i]);
    }

【讨论】:

    猜你喜欢
    • 2011-11-13
    • 2014-01-01
    • 2017-10-19
    • 1970-01-01
    • 1970-01-01
    • 2018-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多