c - 让 for 循环处理负数

标签 c arrays loops

编写一个循环,将每个数组元素设置为其自身与下一个元素的总和,但最后一个元素保持不变。请注意索引不要超出最后一个元素。前任: 初始分数: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/

相关文章:

c++ - Windows 构建系统 : How to build a project (from its source code) which doesn't have *. sln 或 Visual C++ 项目文件 (*.vcproj)

c - do-while 循环只迭代一次月供

jquery - 将鼠标悬停在 :nth div, 上显示:第 n 个 div

c++ - 为什么*ptr在printf中?

c - 使用C逐字节读取文件

c - 如何在 C 中的多个方法调用之间保留指针

javascript - 我如何完成这个按钮阵列以使其工作?

java - 打印与数组中的数字匹配的字符串

尝试使用指针打印值时 c 程序失败

while 循环中的逗号运算符