筛选出奇数,并对其求和?

#include <stdio.h>
#define MAX N 10
int even(int n){
if(n%2==0){
return 1;
}else
return 0;
}
int OddSum(int List[],int N){
int i,sum;
for(i=0;i<=N;i++){
if(even(List[i]==0)){
sum += List[i];
}
}
return sum;
}
int even(int n);
int OddSum(int List[],int N);

int main(){
int List[MAXN],N,i;
scanf("%d",&N);
printf("Sum of ("));
for (i=0;i<N;i++)
scanf("%d",&List[i]);
if (even(List[i])==0)
printf("%d",List[i]);

printf(")=%d\n",OddSum(List,N));
return 0;

}

代码中的错误比较多,给修正一下,好好比较一下吧。

#include <stdio.h>
#define MAXN 10
int even(int n){
    if(n%2==0){
        return 1;
    }else
        return 0;
}
int OddSum(int List[],int N){
    int i,sum=0;                      //sum应该初始化为0
    for(i=0;i<N;i++){               //循环不能是i<=N,等于N是会越界
        if(even(List[i])==0){      //括号位置不对
            sum += List[i];
        }
    }
    return sum;
}

int main(){
    int List[MAXN],N,i;
    scanf("%d",&N);
    for (i=0;i<N;i++)
        scanf("%d",&List[i]);
    printf("Sum of (");  //这个printf放到输入之后
    for (i=0;i<N;i++)
        if (even(List[i])==0)
            printf("%d ",List[i]);  //每个奇数之间加个空格比较好
    printf(")=%d\n",OddSum(List,N));
    return 0;
}


oddsum函数里除了等号位置,for里面的判断语句应该是i<N
main里面的for应该把下面三句内容括号括起来

if(even(List[i])==0)
{
...
}

括号位置不要错了