Blue_Zx 2024-10-06 12:34 采纳率: 68.2%
浏览 4
已结题

为什么k=1和sum=0这两个语句放在for循环里和循环外得到的结果不同啊

为什么k=1和sum=0这两个语句放在for循环里和循环外得到的结果不同啊?

#include <stdio.h>
#define n 4
int main()
{
    int i,k,m;
    float sum;
    for(i=1;i<=50;i++)
    { k=1;
      sum=0;
        while(k<=n)
        {
            printf("Please input the achivement:");
            scanf("%d",&m);
            sum=sum+m;
            k++;
        }printf("%d--%f\n",i,sum/n);

    }
    return 0;
}


  • 写回答

1条回答 默认 最新

  • 一轮明月照丘壑 2024-10-06 12:35
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    在这个程序中,变量 ksum 的初始化位置决定了它们在循环中的行为方式。当你将 k=1sum=0 放在 for 循环内部时,每次循环迭代都会重置这两个变量的值。这意味着每次新的循环开始时,都会从 k=1 开始计数,并且 sum 会被重置为 0。这样,你的程序会针对每次循环的输入计算一个新的累加值。

    如果将 k=1sum=0 放在 for 循环外部初始化,则在第一次循环时,它们会被正确初始化。但在后续的循环中,它们将保持其之前迭代中的值。换句话说,每次 for 循环开始时不会重置 ksum 的值,而是使用它们在上次循环结束时的值。因此,你会得到一个累积的累加结果,而不是针对每次循环输入的新累加结果。这就是为什么在循环内外初始化这两个变量会得到不同结果的原因。

    为了得到预期的结果(即每次循环都基于新的输入重新计算累加值),你应该将 k=1sum=0 放在 for 循环内部。你的代码已经这样做了,所以它会按预期工作。如果你想要累积的结果(即在整个循环过程中累加输入),则可以将这些初始化语句放在 for 循环外部。但请注意,这会影响你的程序输出。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月14日
  • 已采纳回答 10月6日
  • 创建了问题 10月6日