【发布时间】:2017-04-02 03:44:50
【问题描述】:
我需要在 C 中创建一个代码,该代码读取一对数字的列表,第一个数字是产品编号(介于 1 和 和 由输入确定的产品总数之间),第二个数字是从 1-10 评分并将其存储在二维数组中。数组中从 1 开始的行是产品编号,第 1-10 列是评级。第 11 列是星级总数,第 12 列是评分总数。我必须使用 scanf 读取值,当 scan()!=2 时,循环应该停止并生成报告。
报告应为每个产品列出每个值的评分数量(即 2 个 5 星评分、17 个 10 星评分等)以及平均评分。
我认为我的逻辑正确并且我的代码可以编译,但是当我尝试生成报告时它不断返回错误。任何线索可能是什么问题?
这是我目前的代码:
int productStar[][13] = {0};
int i = 0;
int product = 0;
int stars = 0;
int howMany = 0;
int ratings = 0;
float avg = 0;
int sum = 0;
printf("How many unique products?\n");
scanf("%d", &howMany);
printf("Please enter product # and stars\n");
while(1)
{
scanf("%d %d", &product, &stars); /* Reads in two values; first is product number, second is rating */
if (scanf("%d %d", &product, &stars) != 2) /* kills the loop */
{
printf("Hi from the inside\n");
break;
}
productStar[product][stars] += 1; /* adds tally to specific product rating */
productStar[product][11] += stars; /* increments total number of stars; used later to find avg */
productStar[product][12] += 1; /* increments how many ratings */
}
for (int product = 0; product <= howMany; ++product)
{
for (int stars = 0; stars <= 10; ++stars)
{
avg = productStar[product][11]/productStar[product][12];
printf("Product %d Information:\n", product);
printf("1 star: %d\n", productStar[product][1]);
printf("2 star: %d\n", productStar[product][2]);
printf("3 star: %d\n", productStar[product][3]);
printf("4 star: %d\n", productStar[product][4]);
printf("5 star: %d\n", productStar[product][5]);
printf("6 star: %d\n", productStar[product][6]);
printf("7 star: %d\n", productStar[product][7]);
printf("8 star: %d\n", productStar[product][8]);
printf("9 star: %d\n", productStar[product][9]);
printf("10 star: %d\n", productStar[product][10]);
printf("Average rating: %2.2f out of 10 (%d ratings total).\n", avg, ratings);
printf("--------------------\n");
}
}
for (product = 0; product <= howMany; ++product)
{
sum += productStar[product][12];
/* Sum of all ratings */
}
printf("%d product ratings evaluated in all.\n\n", sum);
return 0;
}
【问题讨论】:
-
所有
printf("1 star: %d\n", productStar[product][1]);行都可以在 for 循环中只替换为一个。 -
你得到什么样的错误信息?我认为这可能与您的
int productStar[][13] = {0};初始化有关...