發新話題

[問題] 請問"假設某一公司有五種產品"這題陣列題

請問"假設某一公司有五種產品"這題陣列題

01 /* hw9_13d.c */
02 #include <stdio.h>
03 #include <stdlib.h>
04 int main(void)
05 {
06 int i,sum[5]={0},max=sum[0],max_index=0;
07 int sale[3][5]={{33,32,56,45,33},{77,33,68,45,23},
08 {43,55,43,67,65}};
09
10 printf("產品A 的銷售總金額為");
11 for(i=0;i<3;i++)
12 sum[0]+=sale[0]*12;
13 printf("%3d 元\n",sum[0]);
14
15 printf("產品B 的銷售總金額為");
16 for(i=0;i<3;i++)
17 sum[1]+=sale[1]*16;
18 printf("%3d 元\n",sum[1]);
19
20 printf("產品C 的銷售總金額為");
21 for(i=0;i<3;i++)
22 sum[2]+=sale[2]*10;
23 printf("%3d 元\n",sum[2]);
24
25 printf("產品D 的銷售總金額為");
26 for(i=0;i<3;i++)
27 sum[3]+=sale[3]*14;
28 printf("%3d 元\n",sum[3]);
29
30 printf("產品E 的銷售總金額為");
31 for(i=0;i<3;i++)
32 sum[4]+=sale[4]*15;
33 printf("%3d 元\n",sum[4]);
34
35 for(i=0;i<5;i++)
36 if(max<sum)
37 {
38 max=sum;
39 max_index=i;
40 }
41 printf("銷售總金額最多的是產品%c\n",max_index+65);
42 system("pause");
43 return 0;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
問題:36行的判別式。我如果改成找最少的產品,將程式碼的max全都換成min,
在判別式改成
if(min>sum)
{
min=sum;
min_index=i;
}
為何答案會變成不是正確的答案

TOP

答案是不是始終都是65??

是的話,那就是程式跑的過程沒有進入你改的迴圈
if(min>sum)
{
min=sum;
min_index=i;
}

因為min一開始你給他 0 ,你後來也沒讀取一個數給他
而0不可能大於其他正數,除非是負數
結果就沒進入迴圈
你可以在迴圈加入一行輸出,看看有沒有進入迴圈就知道了

你在要判斷的for迴圈前面,新增 min = sum[0];
讓 min 是第一個所輸入的總金額,不要是 0 ,這樣應該就可以了

而原本的 max < sum , 就算 max 是 0 也沒差,因為會跑進去判斷的迴圈。

TOP

發新話題

本站所有圖文均屬網友發表,僅代表作者的觀點與本站無關,如有侵權請通知版主會盡快刪除。