using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//某班有M名同学,本学期开了N门课,期末考试后,要统计每个学生的平均分,
//请编写程序代码实现该功能,要求对于每个学生要输入学号和N门课的成绩。namespace ConsoleApplication10
{
    class Program
    {
        static void Main(string[] args)
        {
            int M, N;
            Console.WriteLine("请输入学生人数M和科目数目N:");
            M = Convert.ToInt32(Console.ReadLine());
            N = Convert.ToInt32(Console.ReadLine());
            int i, j;
            int sum = 0;
            double ave;
            for (i = 0; i < M; i++)
            {
                int num;
                Console.WriteLine("请输入第{0}个学生的学号:", i + 1);
                num = Convert.ToInt32(Console.ReadLine());
                for (j = 1; j <= N; j++)
                {
                    int[,]cj = new int[i,j];
                   
                    Console.WriteLine("请输入学号为{0}的同学的成绩:", num);
                    cj[i,j] = Convert.ToInt32(Console.ReadLine());                      sum = sum + cj[i,j];
                }
                    
                    ave = sum / N;
                    Console.WriteLine("学号为{0}的同学的平均分为;", ave);
            }
            Console.Read();
        }
    }
}
请问着色的地方有什么问题?除此之外,还有其他的问题吗?愿闻其详。

解决方案 »

  1.   


    for (j = 1; j <= N; j++)
      {
      int[,]cj = new int[i,j];
        
      Console.WriteLine("请输入学号为{0}的同学的成绩:", num);
      cj[i,j] = Convert.ToInt32(Console.ReadLine()); sum = sum + cj[i,j];
      }没看出来你new这个二维数组cj有啥用,它只起了一个int的作用。 
    另外访问cj[i,j]访问越界了。
    再有就是i为0时,new一个数组会有问题。
    还有一个,Convert.ToInt32() 不能解析为int时会抛异常
      

  2.   


      class Program
      {
      static void Main(string[] args)
      {
      int M, N;
      Console.WriteLine("请输入学生人数M和科目数目N:");
     try
    {
      M = Convert.ToInt32(Console.ReadLine());
      N = Convert.ToInt32(Console.ReadLine());
    }
    catch
    {
       Console.WriteLine("请输入数字");
    }  int i, j;
      int sum = 0;
      double ave;
      int[,]cj = new int[N,M];
      for (i = 0; i < M; i++)
      {
      int num;
      Console.WriteLine("请输入第{0}个学生的学号:", i + 1);
      num = Convert.ToInt32(Console.ReadLine());
      for (j = 1; j <= N; j++)
      {    
      Console.WriteLine("请输入学号为{0}的同学的成绩:", num);
     try
    {
        cj[i,j] = Convert.ToInt32(Console.ReadLine());
    }
    catch
    {
       Console.WriteLine("请输入数字");
    }
    sum = sum + cj[i,j];
      }
        
      ave = sum / N;
      Console.WriteLine("学号为{0}的同学的平均分为;", ave);
      }
      Console.Read();
      }
      }
      

  3.   

    问题一堆,看不下去了。namespace ConsoleApplication10
    {
      class Program
      {
      static void Main(string[] args)
      {
      Console.WriteLine("请输入学生人数M和科目数目N:");
      int M = Convert.ToInt32(Console.ReadLine());
      int N = Convert.ToInt32(Console.ReadLine());
      for (int i = 0; i < M; i++)
      {
      Console.WriteLine("请输入第{0}个学生的学号:", i + 1);
      int num = Convert.ToInt32(Console.ReadLine());
      int sum = 0;
      for (int j = 0; j < N; j ++)
      {
         Console.WriteLine("请输入学号为{0}的同学的成绩:", num);
         int c = Convert.ToInt32(Console.ReadLine()); 
         sum = sum + c;
      }
        
       Console.WriteLine("学号为{0}的同学的平均分为{1}", num, sum * 1.0 / N);
      }
      Console.Read();
      }
      }
    }
      

  4.   

    你这不仅仅是着色的地方有问题,如果你想用数组保存学生的学号和对应的成绩,
    应该声明一个长度为M*N的数组,即int[,]cj=new int[M,N];而Console.Read();是一行不必要的代码。给你的代码稍做修改,如下:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    //某班有M名同学,本学期开了N门课,期末考试后,要统计每个学生的平均分,
    //请编写程序代码实现该功能,要求对于每个学生要输入学号和N门课的成绩。namespace ConsoleApplication10
    {
        class Program
        {
            static void Main(string[] args)
            {
                int M, N;
                Console.WriteLine("请输入学生人数M:");
                M = Convert.ToInt32(Console.ReadLine());
                Console.WriteLine("请输入学生科目数目N:");
                N = Convert.ToInt32(Console.ReadLine());
                int i, j;
                int sum;
                double ave;
                int num;
                for (i = 0; i < M; i++)
                {
                    sum = 0;
                    Console.WriteLine("请输入第{0}个学生的学号:", i + 1);
                    num = Convert.ToInt32(Console.ReadLine());
                    for (j = 0; j < N; j++)
                    {
                        int[,] cj = new int[M, N];
                        Console.WriteLine("请输入学号为{0}的同学的第{1}门成绩:", num,j+1);
                        cj[i, j] = Convert.ToInt32(Console.ReadLine());
                        sum = sum+cj[i,j];
                    }
                    Console.WriteLine("学号为{0}的同学的总分是{1}分",num, sum);
                    ave = sum / N;
                    Console.WriteLine("学号为{0}的同学的平均分为;{1}分", num,ave);
                    Console.WriteLine();
                }
            }
        }
    }