用array - C语言显示和计算值的和



我正在做作业,但是我卡住了。在我输入显示这个表之后。我需要过滤选择。请看看下面我的代码,它是未完成的,但我不知道如何显示基于他们的优先级值。例如,当我选择显示优先级为1的项目的总成本时,它应该是76600.90;但是我的代码只显示了第一项的值。而且总和也显示错了;它显示了5个项目的摘要。请帮忙解释一下这个问题。非常感谢。

Item |Priority |Financed |  Cost   |
--1--|---1-----|---n-----| 59900.15|
--2--|---3-----|---y-----| 100000.00|
--3--|---2-----|---n-----| 45700.25 |
--4--|---1-----|---y-----| 16700.75 |
--5--|---3-----|---n-----|7800.55   |
-------------------------$230101.70

代码:

do {
printf("nHow do you want to forecast your wish list?n"
" 1. All items (no filter)n"
" 2. By priorityn"
" 0. Quit/Exitn");
printf("Selection: ");
scanf(" %d", &selection);
if (selection == 1) {
printf("n====================================================n");
printf("Filter:   All itemsn");
printf("Amount:   $%10.2lfn", sum);
printf("Forecast: %d years, %d monthsn",
((int)(sum / netIncome) / 12),
(((int)(sum / netIncome) % 12) + 1));
printf("====================================================n");
} else
if (selection == 2) {   
sum == 0;
printf("nWhat priority do you want to filter by? [1-3]: ");
scanf(" %d", &priority[i]);           
printf("n====================================================n");
printf("Filter:   by priority (%d)n", priority[i]);
if (priority[i] == 1) {
for (i = 0; i < item && priority[i] == 1; i++) {
printf("%3d  %5d    %5c    %11.2lfn",
i + 1, priority[i], finance[i], cost[i]);
sum += cost[i];
}
printf("Amount:   $%10.2lfn", sum);
printf("Forecast: %d years, %d monthsn",
((int)(sum / netIncome) / 12),
(((int)(sum / netIncome) % 12) + 1));
printf("====================================================n");
}
} else
if (selection < 0 || selection > 2) {
printf("nERROR: Invalid menu selection.n");
}
} while (selection != 0);

您的for循环的条件是i < item && priority[i] == 1。循环将在它看到任何优先级不是1的项时终止。

即使您只想打印出priority == 1的项,您仍然希望遍历数组中的所有项。所以你的代码应该看起来像这样:

sum = 0;
printf("nWhat priority do you want to filter by? [1-3]: ");
scanf(" %d", &priority[i]);           
printf("n====================================================n");
printf("Filter:   by priority (%d)n", priority[i]);
if (priority[i] == 1)
{
for (i = 0; i < item; i++)
{
if (priority[i] == 1)
{
printf("%3d  %5d    %5c    %11.2lfn", i + 1, priority[i], finance[i], cost[i]);
sum += cost[i];
}
}
printf("Amount:   $%10.2lfn", sum);
printf("Forecast: %d years, %d monthsn", ((int)(sum / netIncome) / 12), (((int)(sum / netIncome) % 12) + 1));

printf("====================================================n");
}

(并且,正如评论者指出的那样,您还应该确保将sum重置为sum = 0而不是sum == 0。)

最新更新