【发布时间】: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_price和sel_profit在循环之前未初始化,因此将值相乘会导致未定义的行为(在第一次循环迭代之后)。