class Program
    {
        static int MaxValue(int[] intArray,out int maxIndex)
        {
            int maxVal = intArray[0];
            maxIndex = 0;
            for (int i = 1; i < intArray.Length; i++)
            {
                 
                if (intArray[i] > maxVal)
                    maxVal = intArray[i];
                    maxIndex = i;
            }
            return maxVal;
                   }
        static void Main(string[] args)
        {
            int maxIndex;
            
            int[] myArray ={ 1, 8, 3, 6, 2, 5, 9, 3, 0, 2,4,5,9 };
        
         
            Console.WriteLine("The maximum value in myArray is {0}", MaxValue (myArray ,out maxIndex ));
            Console.WriteLine("The first occurrence of this value is at element {0}", maxIndex+1 );
            Console.ReadKey();
                }
    }
}

解决方案 »

  1.   

    int[] myArray ={ 1, 8, 3, 6, 2, 5, 9, 3, 0, 2,4,5,9 }; 长度13的吗for (int i = 1; i < intArray.Length; i++)
    {   
          maxIndex = i;
    } 肯定是13吗
      

  2.   


    for (int i = 1; i < intArray.Length; i++) 
                { 
                    
                    if (intArray[i] > maxVal) 
                        maxVal = intArray[i]; 
                        maxIndex = i; //他不是13是什么啊,搞不懂你要干什么啊
                } 
    好好去学习一下排序啊,选择,昌泡,插入,归并
      

  3.   

    有两个以上最大值时这算法不对,并且C#数组的默认维下限是0,正确的MaxValue应该是6和12...如果你是照书抄的...很遗憾,你看的书有问题,换本好书看吧...
      

  4.   

                    if (intArray[i] > maxVal) 
                      {                     //少了这两括号了吧
                        maxVal = intArray[i]; 
                        maxIndex = i; 
                       }                     //少了这两括号了吧
      

  5.   

    代码中请注意一下错误部分:
                   if (intArray[i] > maxVal) 
                        maxVal = intArray[i]; 
                        maxIndex = i; 
    正确的应该是:
                   if (intArray[i] > maxVal) 
                 {
                        maxVal = intArray[i]; 
                        maxIndex = i; 
                 }
    原因:错误的写法导致意思错误
    if语句省略{}只会包含之后的一行代码。
    所以maxIndex = i;在循环中每次都会执行,
    所以结果为循环的最后索引,输出时maxIndex+1=13
      

  6.   

     if (intArray[i] > maxVal) 
                      {                    //少了这两括号了吧 
                        maxVal = intArray[i]; 
                        maxIndex = i; 
                      }                    //少了这两括号了吧