当前位置:编程学习 > C#/ASP.NET >>

求修改~c#编for循环语句,求数学平均成绩!~~

问题:用·c#编一个程序,定义一个有5个元素的数组,使用for循环语句,从键盘上输入5名同学的数学成绩,分别求出最高分和最低分,并且求出5名同学的数学平均成绩。
 我的代码是:

using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;

 namespace ConsoleApplication13
 {
     class Program
     { 
       
         static void Main(string[] args)
         { 
           int [] nums; 
           nums=new int [5];//定义有5个元素的数组
         
           int a;
           int b;
           int c;
           int d;
           int e;
          
             Console.Write("第一位同学的成绩为:");//输入成绩
           nums[0] = int.Parse(Console.ReadLine());//读取成绩
          Console.Write("第二位同学的成绩为:");
           nums[1] = int.Parse(Console.ReadLine());
           Console.Write("第三位同学的成绩为:");
           nums[2] = int.Parse(Console.ReadLine());
           Console.Write("第四位同学的成绩为:");
           nums[3] = int.Parse(Console.ReadLine());
           Console.Write("第五位同学的成绩为:");
           nums[4] = int.Parse(Console.ReadLine());
             
           a = nums[0];
           b = nums[1];
           c = nums[2];
           d = nums[3];
           e = nums[4];

           for (int i = 0; i < 5; i++)
           { 
            Console.WriteLine("成绩最高分:{0}", e > (d > (c > (a > b ? a : b) ? c : (a > b ? a : b)) ?
           d : (c > (a > b ? a : b) ? c : (a > b ? a : b))) ? e : (d > (c > (a > b ? a : b) ? c : (a > b ? a : b)) ? d : (c > (a
           > b ? a : b) ? c : (a > b ? a : b))));//成绩最高分

          Console.WriteLine("成绩最低分:{0}", e < (d < (c < (a < b ? a : b) ? c : (a < b ? a : b)) ?
           d : (c < (a < b ? a : b) ? c : (a < b ? a : b))) ? e : (d < (c < (a < b ? a : b) ? c : (a < b ? a : b)) ? d : (c < (a
           < b ? a : b) ? c : (a < b ? a : b))));//成绩最低分

          int z = (a + b + c + d + e) / 5;
           Console.WriteLine("5名同学的数学平均成绩为:{0}", z);//平均成绩
          }
         } 
     }
 }




想问一下,这个有没有错。还可不可以简化呀~~?  --------------------编程问答-------------------- int z = nums.Sum() / nums.Length;
Console.WriteLine("5名同学的数学平均成绩为:{0}", z);//平均成绩
--------------------编程问答--------------------

double avg = nums.Average();
int max = nums.Max();
int min = nums.Min();
--------------------编程问答--------------------
 int[] nums;
            nums = new int[5];//定义有5个元素的数组
            Console.Write("第一位同学的成绩为:");//输入成绩
            nums[0] = int.Parse(Console.ReadLine());//读取成绩
            Console.Write("第二位同学的成绩为:");
            nums[1] = int.Parse(Console.ReadLine());
            Console.Write("第三位同学的成绩为:");
            nums[2] = int.Parse(Console.ReadLine());
            Console.Write("第四位同学的成绩为:");
            nums[3] = int.Parse(Console.ReadLine());
            Console.Write("第五位同学的成绩为:");
            nums[4] = int.Parse(Console.ReadLine());          
            double avg = nums.Average();
            int max = nums.Max();
            int min = nums.Min();
            Console.WriteLine("成绩最高分:{0}", max);
            Console.WriteLine("成绩最低分:{0}", min);
            Console.WriteLine("5名同学的数学平均成绩为:{0}",avg);//平均成绩
--------------------编程问答--------------------


static void Main(string[] args)
{
    int[] a = new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    var x = GetMaxAvg(a);
    Console.WriteLine("{0}, {1}, {2}", x.Item1, x.Item2, x.Item3);

    Console.ReadKey();
}
public static Tuple<T, double, T> GetMaxAvg<T>(T[] array)
{
    double average = array.Average(elem => Convert.ToInt32(elem));
    return new Tuple<T, double, T>(array.Max(), average, array.Min());
}
--------------------编程问答--------------------
引用 楼主 u013099623 的回复:
问题:用·c#编一个程序,定义一个有5个元素的数组,使用for循环语句,从键盘上输入5名同学的数学成绩,分别求出最高分和最低分,并且求出5名同学的数学平均成绩。
 我的代码是:

using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;

 namespace ConsoleApplication13
 {
     class Program
     { 
       
         static void Main(string[] args)
         { 
           int [] nums; 
           nums=new int [5];//定义有5个元素的数组
         
           int a;
           int b;
           int c;
           int d;
           int e;
          
             Console.Write("第一位同学的成绩为:");//输入成绩
           nums[0] = int.Parse(Console.ReadLine());//读取成绩
          Console.Write("第二位同学的成绩为:");
           nums[1] = int.Parse(Console.ReadLine());
           Console.Write("第三位同学的成绩为:");
           nums[2] = int.Parse(Console.ReadLine());
           Console.Write("第四位同学的成绩为:");
           nums[3] = int.Parse(Console.ReadLine());
           Console.Write("第五位同学的成绩为:");
           nums[4] = int.Parse(Console.ReadLine());
             
           a = nums[0];
           b = nums[1];
           c = nums[2];
           d = nums[3];
           e = nums[4];

           for (int i = 0; i < 5; i++)
           { 
            Console.WriteLine("成绩最高分:{0}", e > (d > (c > (a > b ? a : b) ? c : (a > b ? a : b)) ?
           d : (c > (a > b ? a : b) ? c : (a > b ? a : b))) ? e : (d > (c > (a > b ? a : b) ? c : (a > b ? a : b)) ? d : (c > (a
           > b ? a : b) ? c : (a > b ? a : b))));//成绩最高分

          Console.WriteLine("成绩最低分:{0}", e < (d < (c < (a < b ? a : b) ? c : (a < b ? a : b)) ?
           d : (c < (a < b ? a : b) ? c : (a < b ? a : b))) ? e : (d < (c < (a < b ? a : b) ? c : (a < b ? a : b)) ? d : (c < (a
           < b ? a : b) ? c : (a < b ? a : b))));//成绩最低分

          int z = (a + b + c + d + e) / 5;
           Console.WriteLine("5名同学的数学平均成绩为:{0}", z);//平均成绩
          }
         } 
     }
 }
想问一下,这个有没有错。还可不可以简化呀~~? 

没事可以看看Linq --------------------编程问答--------------------  四楼的



引用 4 楼 youzelin 的回复:


static void Main(string[] args)
{
    int[] a = new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    var x = GetMaxAvg(a);
    Console.WriteLine("{0}, {1}, {2}", x.Item1, x.Item2, x.Item3);

    Console.ReadKey();
}
public static Tuple<T, double, T> GetMaxAvg<T>(T[] array)
{
    double average = array.Average(elem => Convert.ToInt32(elem));
    return new Tuple<T, double, T>(array.Max(), average, array.Min());
}



这个赶脚比较高端。红色部分的代码不太懂呀~~ --------------------编程问答--------------------
三楼滴前辈。很简洁呢。不过能不能加个for循环给我看看。虽然感觉这题可以不用for循环,不过题目有要求呢!!哈哈,thanks~~ --------------------编程问答--------------------
 Console.WriteLine("输入5位同学的成绩,并求其最大值、最小值和平均值");
            double[] nums = new double[5];
            for (int i = 0; i <5; i++)
            {
                Console.Write("请您输入第{0}位同学的成绩为:", i + 1);
                nums[i] = double.Parse(Console.ReadLine());
            }
            double avg = nums.Average();
            double max = nums.Max();
            double min = nums.Min(); 
            double min1 = Min(nums);
            Console.WriteLine("成绩最低分:{0}", min);
            double max1 = Max(nums);
            Console.WriteLine("成绩最高分:{0}", max);
            double average1 = Average(nums);
            Console.WriteLine("5名同学的数学平均成绩为:{0}", avg);
            Console.ReadKey();    
--------------------编程问答-------------------- 重发:
  Console.WriteLine("输入5位同学的成绩,并求其最大值、最小值和平均值");
            double[] nums = new double[5];
            for (int i = 0; i <5; i++)
            {
                Console.Write("请您输入第{0}位同学的成绩为:", i + 1);
                nums[i] = double.Parse(Console.ReadLine());
            }
            double avg = nums.Average();
            double max = nums.Max();
            double min = nums.Min(); 
            Console.WriteLine("成绩最低分:{0}", min);          
            Console.WriteLine("成绩最高分:{0}", max);            
            Console.WriteLine("5名同学的数学平均成绩为:{0}", avg);
            Console.ReadKey();    
--------------------编程问答-------------------- 我给你重新出了个题目,参见 http://bbs.csdn.net/topics/390667929

数据行不要假定什么5行,可能100行业可能1000行。我相信那样审题,你就不会去写上a、b、c等等1000个变量了。 --------------------编程问答-------------------- 这应该是老师布置的作业, --------------------编程问答-------------------- 不用你那么麻烦的。
int[] a = new[] { 97, 86, 92, 88, 87 };
            int max = a.Max();//97
            int min = a.Min();//86
            double average = a.Average();//90
            Console.WriteLine("最高成绩:{0},最低成绩:{1},平均成绩:{2}", max, min, average);
--------------------编程问答-------------------- 路过的过来看看我的帖子,help

http://bbs.csdn.net/topics/390669195 --------------------编程问答-------------------- 额,就是老师布置的。偶是大一的,刚学c#。哈哈。谢谢各位的帮忙呀。
想问一下要怎么才能积分呀!我的分要完了,就问不了问题了!please 提供积分方法~thanks very much! --------------------编程问答-------------------- List<int> list = new List<int>();
for (int i = 0; i < 5; i++)
{
    Console.WriteLine("请输入分数:");
    list.Add(int.Parse(Console.ReadLine()));
}
int[] scores = list.ToArray();
Console.WriteLine("平均={0},最大={1},最小={2}.", cores.Average(), scores.Max(), scores.Min());
引用 14 楼 u013099623 的回复:
额,就是老师布置的。偶是大一的,刚学c#。哈哈。谢谢各位的帮忙呀。
想问一下要怎么才能积分呀!我的分要完了,就问不了问题了!please 提供积分方法~thanks very much!


结贴给分会返回你积分的。 --------------------编程问答--------------------
我结不了帖。。。。。。。。那要怎么办~? --------------------编程问答--------------------
引用 16 楼 u013099623 的回复:

我结不了帖。。。。。。。。那要怎么办~?


是当前用户的贴么?是不是你用别的马甲登录的? --------------------编程问答--------------------
引用 17 楼 caozhy 的回复:
Quote: 引用 16 楼 u013099623 的回复:


我结不了帖。。。。。。。。那要怎么办~?


是当前用户的贴么?是不是你用别的马甲登录的?


就是我自己呀?怎么回事 --------------------编程问答-------------------- 你老师来了~~ --------------------编程问答--------------------
引用 19 楼 u011590779 的回复:
你老师来了~~

额,一大早的。别吓人啦~~ --------------------编程问答-------------------- 那就再问一题:
用c#编写一基于Windows From的程序,实现对C盘根目录文件夹的遍历,打印文件夹信息。
并新建一文件夹,在文件夹中创建一文本文件。
这个题目我还不太懂,求解析呀!~ --------------------编程问答-------------------- http://bbs.csdn.net/topics/390669195 
这个帖子,我看不懂。。。。。。还没到能看懂的水平呀。 --------------------编程问答--------------------
引用 21 楼 u013099623 的回复:
那就再问一题:
用c#编写一基于Windows From的程序,实现对C盘根目录文件夹的遍历,打印文件夹信息。
并新建一文件夹,在文件夹中创建一文本文件。
这个题目我还不太懂,求解析呀!~
就是
1、读取C#根目录下所有的目录及各目录下所有文件,并将所有文件夹打印出来
2,通过程序建立一个文件夹,同时在建好的文件夹中建立一个文件

--------------------编程问答-------------------- 主要掌握:
File------实用类,提供许多静态方法,用于建立、移动、删除、和复制文件。
Directory------实用类,提供许多静态方法,用于建立、移动、删除和复制目录。
FileInfo------表示磁盘上的物理文件,具有可以处理此文件的方法,要完成对文件的读写工作,就必须创建Stream对像。
DirectoryInfo------表示磁盘上的物理目录,具有可以处理此目录的方法


--------------------编程问答--------------------

static void Main(string[] args)
{
    double min, max, avg;
    CalcMaxMinAvg(new double[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }, out max, out min, out avg);
    Console.WriteLine("MIN = {0}, MAX = {1}, AVG = {2}", min, max, avg);
    Console.ReadKey();
}
public static void CalcMaxMinAvg(double[] scores, out double max, out double min, out double avg)
{
    max = double.MinValue; 
    min = double.MaxValue;
    double sum = 0D;

    foreach (var score in scores)
    {
        if (max < score) max = score;
        if (min > score) min = score;
        sum += score;
    }
    avg = sum / scores.Length;
}
--------------------编程问答-------------------- 学生成绩管理系统!!我做过哈哈 --------------------编程问答--------------------
引用 15 楼 caozhy 的回复:
List<int> list = new List<int>();
for (int i = 0; i < 5; i++)
{
    Console.WriteLine("请输入分数:");
    list.Add(int.Parse(Console.ReadLine()));
}
int[] scores = list.ToArray();
Console.WriteLine("平均={0},最大={1},最小={2}.", cores.Average(), scores.Max(), scores.Min());
Quote: 引用 14 楼 u013099623 的回复:

额,就是老师布置的。偶是大一的,刚学c#。哈哈。谢谢各位的帮忙呀。
想问一下要怎么才能积分呀!我的分要完了,就问不了问题了!please 提供积分方法~thanks very much!


结贴给分会返回你积分的。


别人都说了是大一的,
大一绝对不建议学linq.
事实上我都不建议大一就学c#,
应该学c++,玩转了c++
再上java c#都容易的多,也更好理解底层.
而且楼主老师也要求了 
要用for循环的.
--------------------编程问答-------------------- 别人都说了是大一的,
大一绝对不建议学linq.
事实上我都不建议大一就学c#,
应该学c++,玩转了c++
再上java c#都容易的多,也更好理解底层.
而且楼主老师也要求了 
要用for循环的.



学什么我们自己什么也不懂,学校安排的~那是java  c#容易还是c++捏。我可以去自学 --------------------编程问答--------------------
引用 28 楼 u013099623 的回复:
别人都说了是大一的,
大一绝对不建议学linq.
事实上我都不建议大一就学c#,
应该学c++,玩转了c++
再上java c#都容易的多,也更好理解底层.
而且楼主老师也要求了 
要用for循环的.



学什么我们自己什么也不懂,学校安排的~那是java  c#容易还是c++捏。我可以去自学


这个还是看你们老师的安排,学校排课,自有他的道理,不是乱来的.

c++其实就是多了一些内存管理方面的东西,你现在学c#,那就好好学c#吧.
但要注意,算法要自己实现.
比如楼上提到的linq,还有SortDirection,array的一些求和,排序算法其实是c#里面封装好的一些方法,
这些你别管,都自己想办法实现. --------------------编程问答-------------------- 用excel 简单明了


--------------------编程问答--------------------
Console.Write("第一位同学的成绩为:");//输入成绩
           nums[0] = int.Parse(Console.ReadLine());//读取成绩

你这个代码,分数只能是整数吧啊,不能为小数的吧,就像60.5这样的有小数的数字会出错吧 --------------------编程问答--------------------
引用 31 楼 u012945814 的回复:
Console.Write("第一位同学的成绩为:");//输入成绩
           nums[0] = int.Parse(Console.ReadLine());//读取成绩

你这个代码,分数只能是整数吧啊,不能为小数的吧,就像60.5这样的有小数的数字会出错吧


用int不对么?int是整数呀。还是uint?正整数捏。还有byte,无符号字节型整数? --------------------编程问答--------------------
引用 32 楼 u013099623 的回复:
Quote: 引用 31 楼 u012945814 的回复:

Console.Write("第一位同学的成绩为:");//输入成绩
           nums[0] = int.Parse(Console.ReadLine());//读取成绩

你这个代码,分数只能是整数吧啊,不能为小数的吧,就像60.5这样的有小数的数字会出错吧


用int不对么?int是整数呀。还是uint?正整数捏。还有byte,无符号字节型整数?

我觉得应该用浮点数,成绩应该可能有小数吧,就像77.5,88.5之类的分数的吧 --------------------编程问答-------------------- 楼主明明说了使用for循环,你们这是在误人子弟 --------------------编程问答--------------------
引用 32 楼 u013099623 的回复:
Quote: 引用 31 楼 u012945814 的回复:

Console.Write("第一位同学的成绩为:");//输入成绩
           nums[0] = int.Parse(Console.ReadLine());//读取成绩

你这个代码,分数只能是整数吧啊,不能为小数的吧,就像60.5这样的有小数的数字会出错吧


用int不对么?int是整数呀。还是uint?正整数捏。还有byte,无符号字节型整数?

成绩可以是小数啊 --------------------编程问答-------------------- 学生咩!!!! --------------------编程问答--------------------
引用 9 楼 wind_cloud2011 的回复:
重发:
  Console.WriteLine("输入5位同学的成绩,并求其最大值、最小值和平均值");
            double[] nums = new double[5];
            for (int i = 0; i <5; i++)
            {
                Console.Write("请您输入第{0}位同学的成绩为:", i + 1);
                nums[i] = double.Parse(Console.ReadLine());
            }
            double avg = nums.Average();
            double max = nums.Max();
            double min = nums.Min(); 
            Console.WriteLine("成绩最低分:{0}", min);          
            Console.WriteLine("成绩最高分:{0}", max);            
            Console.WriteLine("5名同学的数学平均成绩为:{0}", avg);
            Console.ReadKey();    


这个应该弄个double类型的集合,然后while循环(有可能不知道学生数量),按enter键跳出循环。 --------------------编程问答--------------------
引用 21 楼 u013099623 的回复:
那就再问一题:
用c#编写一基于Windows From的程序,实现对C盘根目录文件夹的遍历,打印文件夹信息。
并新建一文件夹,在文件夹中创建一文本文件。
这个题目我还不太懂,求解析呀!~


就是让把C盘下的所有文件夹显示出来;
然后在新建一个文件夹,在新建的文件夹里边在创建一个文件;

--------------------编程问答-------------------- 算法都写给你了。你只需要加几个 Console.WriteLine() / ReadLine() 而已。
这些都不是 key point。 --------------------编程问答-------------------- 同意楼上!!! --------------------编程问答-------------------- 数组中的最大值
int FindMaximumNumber(int array[],int size)  
{  
   int max=array[0];  
   for(i=1;i<size;i++)  
   {  
      if(array[i]>max)  
      max = array[i];  
   }  
   return max;  
}  --------------------编程问答-------------------- 个人认为如果是VC的题,楼主方法绝对算是不错的,可是C#的话可以直接Average,Max,Min,但若真这么写这题也就没有意义了,如果自己实现个Average,Max,Min的扩展方法应该是最好的答案 --------------------编程问答--------------------
引用 37 楼 porenasckx 的回复:
Quote: 引用 9 楼 wind_cloud2011 的回复:

重发:
  Console.WriteLine("输入5位同学的成绩,并求其最大值、最小值和平均值");
            double[] nums = new double[5];
            for (int i = 0; i <5; i++)
            {
                Console.Write("请您输入第{0}位同学的成绩为:", i + 1);
                nums[i] = double.Parse(Console.ReadLine());
            }
            double avg = nums.Average();
            double max = nums.Max();
            double min = nums.Min(); 
            Console.WriteLine("成绩最低分:{0}", min);          
            Console.WriteLine("成绩最高分:{0}", max);            
            Console.WriteLine("5名同学的数学平均成绩为:{0}", avg);
            Console.ReadKey();    


这个应该弄个double类型的集合,然后while循环(有可能不知道学生数量),按enter键跳出循环。

是题目要求,是学生作业,哈哈 --------------------编程问答-------------------- 你们这些屌丝  就看是一个女头像,  这么积极。。。    伸手党越来越多, CSDN  越来越**了
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,