C语言,输入一个整数n,然后输入n个数,计算并输出n个数中奇数之和

来源:百度知道 编辑:UC知道 时间:2024/05/26 18:37:56
C语言编程,输入一个整数n,然后输入n个数,计算并输出n个数中奇数之和
我自己编了一个
#include"stdio.h"
void main()
{
int n,s=0,i;
scanf("%d",&n);
int a[n];
scanf("%d",&a[n]);
for(i=1;i<=n;i++)
if(a[i]%2!=0)
s=s+a[i];
else
continue;
printf("%d",s);
}
但是结果是错误的,不知道为什么,望高人指点并给出正确程序,谢谢

1.编译不通过
数组定义时,不能使用变量,即使变量已赋值,所以int a[n];是错的
解决方法,你可以直接定义一个大的数组,比如 int a[100],然后再用n限制输入的个数
2.数组下标是从0~n-1,所以你的for(i=1;i<=n;i++)是错的
应该是for(i=0;i<=n-1;i++)
3.数组元素不能整体赋值,所以你不能只用一句scanf语句
应该利用for循环,循环输入
---------------------------------------------------
程序修改如下:
#include"stdio.h"
void main()
{
int n,s=0,i;
int a[100];
printf("请输入个数:");
scanf("%d",&n);
printf("请输入数据:");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n;i++)
if(a[i]%2!=0)
s=s+a[i];
else
continue;
printf("和为:%d\n",s);
}
----------------------------------
希望楼主好好对比一下,加油!

a[n]是从0到n-1的数组,i的值设错了

scanf("%d",&a[n]); 里面应该是a【n-1】吧,注意存在a[0]哦

数组越界