【发布时间】:2016-03-09 22:16:44
【问题描述】:
编写一个循环,将每个数组元素设置为自身和下一个元素的和,除了最后一个元素保持不变。注意不要索引超出最后一个元素。前任: 初始分数: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;
}
【问题讨论】:
-
请提供预期输出和实际输出。
-
为什么标志很重要?为什么你的代码中有这些比较?整个算法应该是一个循环,里面有一个赋值。
-
对于第一组它有效。像 10, 20, 30, 40 输出是 30,50,70,40。但是,当它使用 -100、-200、-300、-400、-500 时。它应该显示 -300 -500 -700 -900 -500 但我的只显示原始输入。我没有算法,因为它是只需要代码的在线教科书