求大神指教 C# 用foreach循环完成
循环录入5个人的年龄并计算平均年龄,如果录入的数据出现负数或大于100的数,立即停止输入并报错....
循环录入5个人的年龄并计算平均年龄,如果录入的数据出现负数或大于100的数,立即停止输入并报错.
展开
2个回答
展开全部
int[] Age = new int[5];
int index = 0;
foreach (int age in Age)
{
Age[index] = Convert.ToInt32(Console.ReadLine());
if (Age[index] < 0 || Age[index] > 100)
{
Console.WriteLine("输入错误");
break;
}
index++;
}
int sum = 0;
foreach (int age in Age)
{
sum += age;
}
Console.WriteLine("平均年龄为:" + sum / Age.Length);
Console.Read();
追问
求大神给加上注释~~~~~
追答
我完善了一下添加了一个flag变量,如果不符合规则就不输出平均分
bool flag = true; //记录是否符合规则
int[] Age = new int[5];//新建一个年龄数组,大小为5
int index = 0; //用于记录对应下标的变量
//foreach循环输入年龄
foreach (int age in Age)
{
Age[index] = Convert.ToInt32(Console.ReadLine());//获取用户输入数据
//不符合规则报错
if (Age[index] < 0 || Age[index] > 100)
{
Console.WriteLine("输入错误");
flag = false;
break;
}
//下标自加
index++;
}
if (flag)
{
int sum = 0;//统计总年龄变量
foreach (int age in Age)
{
sum += age;//循环统计总年龄
}
Console.WriteLine("平均年龄为:" + sum / Age.Length);//输出平均年龄
}
Console.Read();
展开全部
using System;
using System.Linq;
class Program
{
static void Main(string[] args)
{
int[] age = { 0, 1, 2, 3, 4 };
bool flag = true;
foreach (var i in age)
{
try
{
Console.WriteLine("请输入第{0}个人的年龄:", i + 1);
age[i] = Convert.ToInt32(Console.ReadLine());
}
catch (Exception ex)
{
Console.WriteLine("出现错误!" + ex.Message);
flag = false;
break;
}
if (age[i] < 0)
{
Console.WriteLine("年龄不能为负数!");
flag = false;
break;
}
else if (age[i] > 100)
{
Console.WriteLine("年龄不能>100!");
flag = false;
break;
}
}
if (flag)
{
Console.WriteLine("5个人的平均年龄为" + age.Sum() / 5 + "岁。");
}
Console.Read();
}
}
这道题其实不适合用foreach来做,有点怪异也比较勉强。上述代码用foreach实现了5个人年龄的输入和有效性判断,并在后面利用了Linq中对整型数组提供的扩展方法Sum()进行了求和,从来得到平均年龄,当然也可以再用一个foreach来遍历。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询