C 我在数组中使用if-else-inside for循环求奇数和时遇到了一个问题

C 我在数组中使用if-else-inside for循环求奇数和时遇到了一个问题,c,for-loop,sum,C,For Loop,Sum,我写了一个程序,输入十个数字,分别对奇数和偶数求和,对偶数求和都很好,但对于奇数,它给出了其他值 我试着用不同的for循环来表示偶数和奇数,这也是给另一个值 #include<stdio.h> int main() { int i, a[10]; int Even_Sum = 0, Odd_Sum = 0; for(i =1; i <=10; i++) { printf("Insert number %d: ",i); scanf("%

我写了一个程序,输入十个数字,分别对奇数和偶数求和,对偶数求和都很好,但对于奇数,它给出了其他值

我试着用不同的for循环来表示偶数和奇数,这也是给另一个值

#include<stdio.h>

int main()
{
 int i, a[10];
 int Even_Sum = 0, Odd_Sum = 0;




 for(i =1; i <=10; i++)
 {
      printf("Insert number %d: ",i);
      scanf("%d", &a[i]);
 }

 for(i = 1; i <=10; i ++)
 {
   if(a[i] % 2 == 0)
   {
    Even_Sum = Even_Sum + a[i];
   }
   else
   {
    Odd_Sum = Odd_Sum + a[i];
   }
 }

 printf("\n The Sum of Even Numbers in this Array = %d ", Even_Sum);
 printf("\n The Sum of Odd Numbers in this Array = %d ", Odd_Sum);
 return 0;
}

数组总是以0开头;因此,您的范围应该是0到9

for(i = 0; i < 10; i++)
 {
      printf("Insert number %d: ",i);
      scanf("%d", &a[i]);
 }

 for(i = 0; i < 10; i++)
 {
   if(a[i] % 2 == 0)
   {
    Even_Sum = Even_Sum + a[i];
   }
   else
   {
    Odd_Sum = Odd_Sum + a[i];
   }
 }

不要忘记数组索引是以零为基础的。也就是说,一个包含10个元素的数组将具有0到9(包括0到9)的有效索引;i<10;i++并查看,是否获得了预期的输出。顺便说一句:始终检查scanf的返回值,以查看转换是否成功,并适当处理错误的输入。与您的问题无关,默认情况下,输出到printf写入的流stdout是行缓冲的。这意味着当有换行符时,缓冲区被刷新并实际写入终端。通过打印前导换行符,可以刷新前一行。当前行实际上不会写入终端,因此根据代码,输出可能不会显示。它将使程序的最后输出与命令行shell的提示一起运行。因此,我建议您使用尾随换行符。那么,如何获得数组的逆序?要反向迭代数组,请考虑一下for循环。。。现在,从最低索引开始,迭代到最高索引。你将如何扭转这种局面?如果你有问题,那是另一个问题的主题。
for(i = 0; i < 10; i++)
 {
      printf("Insert number %d: ",i);
      scanf("%d", &a[i]);
 }

 for(i = 0; i < 10; i++)
 {
   if(a[i] % 2 == 0)
   {
    Even_Sum = Even_Sum + a[i];
   }
   else
   {
    Odd_Sum = Odd_Sum + a[i];
   }
 }