C# 如果不使用c中的内置函数,如何获得投球手的最小和最大分数#
我被困在如何获得分数的最小值和最大值上,因为我们不允许在我们的作业中使用内置函数,我得到了平均工作状态,而这些是我作业中唯一缺少的部分C# 如果不使用c中的内置函数,如何获得投球手的最小和最大分数#,c#,max,min,C#,Max,Min,我被困在如何获得分数的最小值和最大值上,因为我们不允许在我们的作业中使用内置函数,我得到了平均工作状态,而这些是我作业中唯一缺少的部分 double game average = 0 for (int gameCounter = 1; gameCounter < gameScores.Length + 1; gameCounter++) { gameAverage += (gameScores[gameCounter - 1] / NUMBER_OF_GAMES);
double game average = 0
for (int gameCounter = 1; gameCounter < gameScores.Length + 1; gameCounter++)
{
gameAverage += (gameScores[gameCounter - 1] / NUMBER_OF_GAMES);
}
双局平均值=0
对于(int gameCounter=1;gameCounter
在游戏中循环,就像在平均值中循环一样,但在循环之前,有一个变量,如minScore
或maxScore
,初始化为1或其他值。然后在循环中检查分数是否小于或大于最小值或最大值。如果是,则更新最小值/最大值
大概是这样的:
int min = gameScores[0];
for (int gameCounter = 1; gameCounter < gameScores.Length + 1; gameCounter++)
{
if (gameScores[gameCounter] < min)
min = gameScores[gameCounter];
}
int min=gameScores[0];
对于(int gameCounter=1;gameCounter
只需将最小值和最大值存储为第一个值,然后将下一个值与当前值进行比较
double gameMin = Double.MaxValue;
double gameMax = Double.MinValue;
for (int gameCounter = 1; gameCounter < gameScores.Length + 1; gameCounter++)
{
gameMin = gameMin > gameScores[gameCounter - 1] ? gameScores[gameCounter - 1] : gameMin
gameMax = gameMax < gameScores[gameCounter - 1] ? gameScores[gameCounter - 1] : gameMax
gameAverage += (gameScores[gameCounter - 1] / NUMBER_OF_GAMES);
}
如果不在此处添加1,则以后不必减去1
另外,比较字符串的最佳实践是使用.equals()
因此:
通常,使用类似于
foreach(gameScores中的var score)
的代码在数组中循环比较容易,这些代码试图像你这样添加和减去索引。我不敢相信你的老师会让你使用goto
…假设我递给你一张保龄球记分卡,让你确定最小值和最大值。请仔细描述您在不使用计算机的情况下是如何做到这一点的。如果你能做到这一点,那么你就可以描述计算机应该如何做到这一点。当我们看你的代码时:今天将是养成良好习惯的好日子,这样你以后就不必打破它们了。(1) 我们在C中不使用叫喊蛇的形式。这应该是GameCount
或NumberOfGames
。(2) 这是非常奇怪的设置一个循环,其中计数器关闭1,然后从中减去1来纠正这一点。更正常的做法是从0循环到length,而不是从1循环到length+1,然后从索引中减去1。(3)代码看起来是错误的。我假设游戏分数[I]是一个整数,游戏数是一个整数,但是整数除以整数就是整数,而不是双精度。更常见的解决方案是首先计算和,然后将和转换为双精度,然后将和除以游戏数,得到精确的双精度。您现在所做的是在添加之前进行四舍五入,而在添加之前进行四舍五入意味着您添加了错误的值,因此总和也将是错误的,因此平均值也将是错误的。我想您的意思是循环中的gameCounter
?否则你每次都会出界谢谢你的帮助@DStanley,我刚刚从OP的问题中复制了代码,这个问题的作用是+1
,因为他们从1
开始循环。但是是的,如果你从0开始(像大多数人一样),你是对的。谢谢你对我的帮助it@Joshua您可以通过单击答案左上角的绿色复选标记来感谢他人。
for (int gameCounter = 0; gameCounter < gameScores.Length; gameCounter++)
bowler.Equals("Y")