关于将指针传进函数
#include<stdio.h>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==0)
{
*even=*even+*a;
}
else
{
*odd=*odd+*a;
}
*a++;
}
}
int main()
{
int n,i;
int *odd,*even;
printf("num:");
scanf("%d",&n);
int a;
printf("input:");
for(i=0;i<n;i++)
{
scanf("%d",&a);
}
fun(a,n,odd,even);
printf("数组a中所有奇数之和为%d\n",*odd);
printf("数组a中所有偶数之和为%d\n",*even);
}
这个程序哪里错了呀,看起来是因为地址没传进函数,指针初始化没指向东西,但不知道如何操作,于是来这里求助{:10_282:} 本帖最后由 jackz007 于 2022-11-29 21:37 编辑
#include<stdio.h>
void fun(int * a , int n , int * odd , int * even)
{
int i ;
for(i = * odd = * even = 0 ; i < n ; i ++) {
if(a % 2 == 0) * even += a ;
else * odd += a ;
}
}
int main(void)
{
int i , n , odd , even ;
printf("num : ") ;
scanf("%d" , & n) ;
int a ;
printf("input : ") ;
for(i = 0 ; i < n ; i ++) scanf("%d" , & a) ;
fun(a , n , & odd , & even) ;
printf("数组 a 中所有奇数之和为 %d\n" , odd) ;
printf("数组 a 中所有偶数之和为 %d\n" , even) ;
}
编译运行实况:
D:\\C>g++ -o x x.c
D:\\C>x
num : 15
input : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
数组 a 中所有奇数之和为 64
数组 a 中所有偶数之和为 56
D:\\C>
页:
[1]