我有一個簡單的功課......做一個C程序,需要3個值3倍奇怪的事情用一個簡單的程序,可能scanf的問題
- 食品(焦炭)的ID
- CAL值食品(浮點)
- 量食品(浮點)的
下面是代碼和輸出程序給出我:
#include <stdio.h>
#define NUM_OF_FOOD 3
int main()
{
float food_cal[NUM_OF_FOOD];
float food_amount[NUM_OF_FOOD];
char food_id[NUM_OF_FOOD];
int i;
float total_cal=0;
int most_fat_food_id=0;
printf("enter the following data: food ID, Cal value and Amount eaten \nexample A 10 3\n");
for (i=0;i<NUM_OF_FOOD;i++)
{
printf("\nEnter product #%d:",i);
int inputLength = scanf("%c %f %f",&food_id[i],&food_cal[i],&food_amount[i]);
if (inputLength < 3) {
printf("input error, input length was %d excpexted 3", inputLength);
break;
}
if (!((food_id[i]>96 && food_id[i]<123) || (food_id[i]>64 && food_id[i]<91))) {
printf("ID input error");
break;
}
if (food_cal[i] < 0) {
printf("Food Cal input error");
break;
}
if (food_amount[i] < 0) {
printf("Food Amount input error");
break;
}
printf("\n%c %5.2f %5.2f",food_id[i],food_cal[i],food_amount[i]);
}
for (i=0;i<NUM_OF_FOOD;i++)
total_cal+=food_cal[i]*food_amount[i];
printf ("\nTotal amount of calories is %5.2f\n",total_cal);
for (i=1;i<NUM_OF_FOOD;i++)
most_fat_food_id = (food_cal[most_fat_food_id]<food_cal[i]) ? i : most_fat_food_id;
printf ("\nThe most fattening product is: %c with %5.2f calories",food_id[most_fat_food_id],food_cal[most_fat_food_id]);
return 0;
}
/*
enter the following data: food ID, Cal value and Amount eaten
example A 10 3
Enter product #0:A 1000 2
A 1000.00 2.00
Enter product #1:B 500 3
input error, input length was 1 excpexted 3
Total amount of calories is 2000.00
The most fattening product is: A with 1000.00 calories
*/
它只是跳過第三
不知道爲什麼......兩個人看了看號碼的輸入,看起來不錯,但還是有一個錯誤。
@Roger - 認錯 - 但是,請注意,在OP發佈了運行的例子,完美展示了自己的錯誤。 – KevinDTimm 2010-11-08 21:29:23
@Kevin:是的,我有,不幸的是,在使用一種形式般的消息,一般建議爲這 - 環節是users5 ..的後來的問題和別人的問題很有用。 – 2010-11-08 21:30:37
@Roger - 我會改變,如果你願意:) – KevinDTimm 2010-11-08 21:31:48