c语言 望高手指点

来源:百度知道 编辑:UC知道 时间:2024/06/22 15:22:33
试从主函数输入10个数据到数组中,编写对偶数项求和的子函数,求出数据的偶数项之和。
我编的:
int oqh(int x)
{ int a[10],i,s;
s=0;
for(i=1;i<=x;i+=2)
s=s+a[i];
return(s);
}

main()
{
int i,s;
int a[10];
for(i=0;i<10;i++)
scanf("%d",&a[i]);
s=oqh(10);
printf("s=%d\n",s);
getch();
}

得不到正确结果
请高手指点
能说明一下我错在哪里了吗? 谢谢

你主函数和oqh()函数中的两个a[i]是两个不同的东西
输入的数据存放在主函数的那个a中了,oqh()的那个没有被赋值过
所以,运行的结果是什么,不得而知

我修改后,把a也当作参数传入到oqh()函数中了

正确的如下,你对比一下:

#include <stdio.h>

int oqh(int a[], int x)
{
int i,s;

s=0;
for(i=1;i<x;i+=2)
s=s+a[i];
return (s);
}

main()
{
int a[10];
int i,s;

for(i=0;i<10;i++)
scanf("%d",&a[i]);

s=oqh(a,10);
printf("s=%d\n",s);
getchar();
}

你想用指针么?
你的主函数中的a[10]; 和子函数中的a[10]; 就没有联系 怎么算的出

#include <stdio.h>

int oqh(int a[])
{ int i,s;
s=0;
for(i=1;i<10;i+=2)
s=s+a[i];
return(s);
}

main()
{
int i,s;
int a[10]; /*定义数组的时候还默认了个a 这是个指针指向此数组地址的开头*/
for(i=0;i<10;i++)
scanf("%d",&a[i]);
s=oqh(a); /*将此地址传给子函数*/
printf(&