编写一个循环,将每个数组元素设置为其自身与下一个元素的总和,但最后一个元素保持不变。请注意索引不要超出最后一个元素。前任: 初始分数:10、20、30、40 循环后得分:30、50、70、40 第一个元素是 30 或 10 + 20,第二个元素是 50 或 20 + 30,第三个元素是 70 或 30 + 40。最后一个元素保持不变。 这是我需要帮助的家庭作业问题。 我遇到的问题是,如果bonusScores为负数,它针对我的代码使用的示例是-100、-200、-300、-400、-500。
include<stdio.h>
int main(void)
{
const int SCORES_SIZE = 4;
int bonusScores[SCORES_SIZE];
int i = 0;
bonusScores[0] = 10;
bonusScores[1] = 20;
bonusScores[2] = 30;
bonusScores[3] = 40;
/* Your solution goes here */
for (i = 0; i < SCORES_SIZE; i++)
{
if (( bonusScores[i] <= bonusScores[i +1] ) || (bonusScores[i] < bonusScores [i+1]))
{
bonusScores[i] = (bonusScores [i] + bonusScores[i+1]);
}
else
{
bonusScores[i] = bonusScores[i];
}
}
for (i = 0; i < SCORES_SIZE; ++i)
{
printf("%d ", bonusScores[i]);
}
printf("\n");
return 0;
}
最佳答案
您通过添加 if
使负数成为一个问题循环内的条件。这是多余的。您只需获取数组并对其进行转换,以便元素 i
代表a[i] + a[i+1]
在你的原始数组中。这不需要对标志进行任何特殊处理。
另外,请注意,在您的代码中,您引用的是元素 i + 1
当这可能是超出数组边界的元素时(假设 i = 3
)。当您修改代码以正确循环时,请务必避免在数组边界之外进行索引。
您可以通过在for
中使用适当的条件来完全避免检查。环形。不仅i
必须小于数组的大小,但是 i+1
也必须满足这个条件。
关于c - 让 for 循环处理负数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35903783/