注册 登录
编程论坛 C# 论坛

for循环问题

白色的天 发布于 2014-02-28 12:46, 761 次点击
程序代码:

string str;//声明一个字符串来接收输入信息
            int cj, n = 0;//声明变量,cj表示成绩,n表示输入成绩个数
            int max = 0, min = 0, sum = 0;//分别表示最高分、最低分、总分
            float avg;//平均分
            for (n = 1; n <= 5;   n++)//预设最多输入5个成绩个数
            {
                Console.WriteLine("请输入课程分数:       " );
                str = Console.ReadLine();//接受输入成绩
                if (str.Trim() == null) continue;//若输入的是空字符串将进入下一次循环
                cj = int.Parse(str);//转换成整数,若str为空或非数值字符将出错
                if(cj<0||cj>100)//输入负数或大于100时结束输入
               
                    break;
               
              
                if (n == 1)//输入第一个成绩时max、min就等于该成绩
               
                    max = min = cj;
               
                else
                {
                    if (cj > max)
                    { max = cj; }//若cj比最高分还高时,该cj就是最高分
                   else if (cj < min)//若cj比最低分还低时,它就是最低分
                    { min = cj; }
               
                }
                sum += cj;//成绩累加到总分中
            }
            avg = n > 0 ? (float)sum / n : 0;//若至少有一个有效成绩就计算平均分,否则平均分为0
            Console.WriteLine("共输入了{0}个成绩",n);
            if(n>0)
            {
                Console.WriteLine("最高分为{0}",max);
                Console.WriteLine("最低分为{0}",min);
                Console.WriteLine("平均分为{0}",avg);
            
            }
            Console.ReadLine();

但是出现了这样的一个问题:看图片就是知
只有本站会员才能查看附件,请 登录
8 回复
#2
wp2319572014-02-28 13:09
你明输入5个数据  但是按6个计算平均数
你不觉得代码有问题?
另  你既然有设计最大值最小值什么的
那你的测试数据就应该不一样才行啊!
#3
做好每一天2014-02-28 14:48
表示不是高手,帮忙顶一下。。。。。。
#4
a345462014-02-28 18:13
新手报到,正在学C#,感觉好复杂,应该有简单的方法吧,输入5次,算平均分却除以6,肯定有问题
#5
白色的天2014-02-28 21:32
回复 楼主 白色的天
我就是这个问题,但是我尝试了小半天,我改了,学习的不好,请教啊
#6
TonyDeng2014-03-01 22:21
這程序要實現什麽目的?
#7
白色的天2014-03-03 21:08
回复 6楼 TonyDeng
只是计算一下输入的成绩
#8
__Frank2014-03-23 14:14
一开始是int n=0,但是for循环里是i=1开始。试试改成for(i=0;i<5;i++)
#9
步向巅峰2014-03-24 13:21
关于for循环的语句执行顺序你没搞明白,n++是在for循环结束的时候执行,也就是说,当你程序中的n=5时,判断n<=5为true,执行循环,循环结束执行n++,此时n=6,
1