為什么把max6=num[p]; 去掉,答案就是 何昆?
int p,k,max6;
? ? ? ? ? ? string[] name=new string[]{"吳松","錢東宇","伏晨","陳陸","周薇","林日鵬","何昆","關欣"};
? ? ? ? ? ? int[] num=new int[]{89,90,98,56,60,91,93,85};
? ? ? ? ? ? k=0;
? ? ? ? ? ? max6=num[1];
? ? ? ? ? ? for(p=1;p<num.Length;p++)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? if(num[p]>max6)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? //max6=num[p];
? ? ? ? ? ? ? ? ? ? k=p;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? Console.WriteLine("分數最高的是{0},分數是{1}", name [k],num[k]);
2017-06-17
你好,首先說下,數組下標是從0開始的,我看到你的代碼是把max6=num[1];所以才說了下,一般都是寫成max6=num[0],當然也許是手誤,不過在工作中,一個手誤可能導致了整個程序報錯,然后花費半天或者一天的時間來查找錯誤,這個是很多人掉過的坑。
再說下,運行結果為什么是何昆。其實,在整個項目中,max6的值 都是固定的,都是下標為1的對應的值,也就是“錢東宇”對應的90,在for循環中,本質是從新往后循環的和90相比較,因為”何昆”對應的93是最后一個比90大的值,所以最后就把“何昆”對應的下標賦值給了k,因此 結果就是 何昆。
最后說下,如果運行結果和自己所想的不同,但又不知道怎么回事的話,你可以進行 輸出顯示或者debug調試。輸出顯示就是把不確定的地方的值輸出來,這樣根據值判斷。在這個項目,就可以在for語句中加上輸出語句。
2017-06-17
max6=num[1]; ?//這行把max6固定就等于num[1]=90
?if(num[p]>max6)//你這個比較是拿變量num[p]跟常量max6比較。
max6=num[p];//這句的意思是當num[p]>max6時,會將num[p]的值付給max6。如果沒有這一句你就永遠跟90對比,只要比90大就會使k的值改變。
最后多嘴一句,你這個代碼有問題:max6=num[1];這句應該是這樣max6=num[0];因為數組中取第一個數應該a[0],a[1]是第二個數。不信你可以把第一個成績改成100.就會發現結果不對