为什么数组元素的总和最终会打印出相同的值?

时间:2017-04-17 07:06:33

标签: c arrays loops while-loop

#include <stdio.h>
#include <stdlib.h>


int main()
{int array1[10],i=0,sum=0;

while(i<10)
{scanf("%d",&array1[i]);
i=i+1;
}
while(i<10)
{sum=sum+array1[i];i=i+1;
}

printf("sum =%d",sum);
   return 0;
}

代码编译得很好但是在运行它时不会产生任何结果,它总是打印0。

3 个答案:

答案 0 :(得分:3)

问题出在第二个循环中。在进入i循环体时,检查while的值。

  

您需要重置i的值。否则,第二个循环不会执行。执行第一个循环后,i保持值10,除非更改,否则第二个while循环条件的计算结果为false,因此循环体不会执行,只留下{{ 1}}到它的初始化值。

那就是说,

    对于托管环境,
  • sum最好为int main()
  • 在使用扫描值之前,请务必检查int main(void)的返回值是否成功。

答案 1 :(得分:0)

在第一次循环后初始化i = 0。在第一个循环结束时,i的值为10,因此它不会进入第二个循环。因此打印0.

#include <stdio.h>
#include <stdlib.h>


int main()
{
    int array1[10],i=0,sum=0;

    while(i<10)
    {
        scanf("%d",&array1[i]);
        i=i+1;
    }

    i=0;          // Notice this line
    while(i<10)
    {
        sum=sum+array1[i];i=i+1;
    }

    printf("sum =%d",sum);
    return 0;
}

答案 2 :(得分:0)

在第二个循环中,变量i未初始化为0。

#include <stdio.h>
#include <stdlib.h>


int main()
{int array1[10],i=0,sum=0;

while(i<10)
{scanf("%d",&array1[i]);
i=i+1;
}
/*After the execution of 1st while loop i has 10 in it, that needs to be set to 0 for next loop execution, for this use case.

 If it is not mandatory to use while loop, try with **for loop**, it is far simple for this use case. */

for( i=0; i<10; i++) //while( i<10)
{sum=sum+array1[i];//i=i+1;
}

printf("sum =%d",sum);
   return 0;
}

另外还有一个循环,这使您的代码更简单

int main()
{int array1[10],i,sum=0;

for( i=0; i<10; i++){
   scanf("%d",&array1[i]);
   sum=sum+array1[i];
}

printf("sum =%d",sum);
   return 0;
}