#include <stdio.h>
int main (int argc, const char * argv[])
{
static struct item
{
char code;
float price;
}
table[] =
{
{'a', 3.29},
{'b', 2.99},
{'c', 0.59},
{'d', 1.59},
{'e', 2.39}
};
char item_code[2];
int quantity;
int i;
do {
printf("Enter item code: ");
scanf("%1s", item_code);
if (*item_code != '.') {
for (i=0; i< sizeof(table)/sizeof(struct item)
&& table[i].code != *item_code; i++);
if (i < sizeof(table)/sizeof(struct item)) {
printf("Enter quantity: ");
scanf("%d", &quantity);
printf("\nUnit price = %.2f, total price = %.2f.\n\n\n",
table[i].price, quantity * table[i].price);
}
else
printf("\nItem code %c does not exist. \n\n\n", *item_code);
}
} while (*item_code != '.');
printf("Thank you.\n");
return 0;
}
我是新手。我无法理解上述程序中的第二个“for循环”。为什么sizeof被使用?每次循环执行时,“i”的值是什么? 谢谢。无法理解sizeof
只有一个nitpick:数组_do_知道他们的长度。在许多情况下,数组_decay_指向的数组的指针不知道指向数组的第一个元素的长度。但从技术上讲,他们不再是那种情况下的阵列:-) – paxdiablo 2011-12-20 04:50:21
恩,说,谢谢。 :) – sarnold 2011-12-20 06:12:01