C语言程序设计指针

来源:百度知道 编辑:UC知道 时间:2024/06/25 01:14:12
(高手能不能适当添加点说明文字,我是初学C语言的,不理解C语言这个东西,只是要多看程序,但是好多都没说明,看的很困难。希望得到的是测试过能运行的代码,谢谢了!)

(填写中间空白处一段代码)
下列程序的功能是分别求出数组中所有奇数之和以及所有偶数之和。形参 n 给了数组中数据的个数,利用指针 odd 返回偶数之和。例如:数组中的值依次为:1,9,2,3,11,6;则利用指针 odd 返回奇数之和24;利用指针 even 返回偶数之和8。请在下面空白处实现这一功能的函数完善,并且调试运行出结果。
代码如下:(填写中间空白处一段代码)
#include <stdio.h>
#define N 20
void fun(int *a,int *n,int *odd,int *even)
{

}
void main()
{
int a[N]={1,9,2,3,11,6},i,n=6,odd,even;
printf("The original data is:\n");
for(i=0;i<n;i++);
printf("%5d",*(a+i));
printf("\n\n");
fun(a,n,&odd,&even);
printf("The sum of odd numbers:%d\n",odd);
printf("The sum of even numbers:%d\n",even);
}
运行结果:
对不起,空白处上面一段代码错了,正确的是这样的 ( 不是 *n 是 n ):
#include <stdio.h>
#define N 20
void fun(int *a,int n,int *odd,int *even)
{

#include <stdio.h>
#define N 20
void fun(int *a,int n,int *odd,int *even)
{ int i;
*odd=0;*even=0;//初始化奇偶的和
for(i=0;i<n;i++) //循环判断数组中的奇偶数并分别求和
{if(*a%2==1) *odd+=*a; //是奇数加
else *even+=*a; //是偶数加
a++;
}
}
void main()
{
int a[N]={1,9,2,3,11,6},i,n=6,odd,even;
printf("The original data is:\n");
for(i=0;i<n;i++)
printf("%5d",*(a+i)); //输出原数组
printf("\n\n");
fun(a,n,&odd,&even);
printf("The sum of odd numbers:%d\n",odd);
printf("The sum of even numbers:%d\n",even);
}

void fun(int *a,int *n,int *odd,int *even) 这里定义错了吧...第二个参数应该是int n吧.只有一个数值没必要用指针嘛.而且在你的main函数里调用的时候也是直接传值的fun(a,n,&odd,&even);
或者你不改fun函数的定义.把fun(a,n,&odd,&even);改成fun(a,&n,&odd,&even);也可以

我来写个 (发上来怎么也调不好格式..空格被过滤了..真恶心)
#include <stdio.h>
#define N 20
void fun(int *a,int n