调用形参为数组的函数的程序

这篇博客介绍了如何编写两个函数,一个用于将1位整数组成的数列拼接成不超过2位的整数,并统计出现次数,另一个计算数组中奇数和偶数的和。通过指针传递结果,强调了处理数组参数和避免重复数据的方法。

1、 编写函数int stat(int a[],int n,int c[][2])。a指向的数组中保存了由n个1位整数组成的数列(n为偶数)。函数从前至后依次将a数组中每两个相邻元素拼成一个不超过2位的整数,从而生成有n/2个元素组成的整数数列;统计该数列中不同整数各自出现的次数,并将统计结果保存到c指向的二维数组中。函数返回不同整数的个数。

#include <stdio.h>

void stat(int a[],int n,int c[][2]);

int main()
{
int n;
        int a[100];
int c[20][2];
int i,j;

printf("Please input a num: ");
scanf("%d",&n);

        printf("Please input %d nums: \n",n);
for(i = 0;i < n;i++)
{
scanf("%d",&a[i]);
}

stat(a,n,c);


    return 0;
}

void stat(int a[],int n,int c[][2])
{
    int i,k;
int j = 0;
int count = 1;
int num = 0;

for(i = 0;i < n;i+=2)      //算出合并后新的数据
{
c[j++][0] = a[i] * 10 + a[i+1];
}


for(i = 0;i < (n/2 - num);i++)     // 计算数据出现的次数
{
for(j = i + 1;j < (n/2 - num);j++)
{
            if(c[i][0] == c[j][0])
{
count++;
num++;
                for(k = j;k < n/2 - 1;k++)   // 去除数组中重复的数据
{
c[j][0] = c[j+1][0];
c[j][1] = c[j+1][0];
}
}
}
c[i][1] = count;
count = 1;
}

for(i = 0;i < n/2 - num;i++)   //  输出最后的结果
{
for(j = 0;j < 2;j++)
{
printf("%5d",c[i][j]);
}
printf("\n");
}
}

注意:(1)去除数组中重复数据的方法    (2)调用参数为一维或二维数组的方法


2、编写函数fun(int *a, int n, int *odd, int *even),功能是:求出数组a[]中所有奇数之和以及所有偶数之和。并利用指针odd返回奇数之和,利用指针even返回偶数之和。 例如:a[]的值依次为:1,9,2,3,11,6;则利用指针odd返回奇数之和24;利用指针even 返回偶数之和 8。

#include <stdio.h>

void fun(int * a,int n,int * odd,int * even);

int main()
{
    int a[100];
int n;
int i;
int * odd;
int * even;

printf("Please input a num: ");
scanf("%d",&n);
printf("Please input %d nums:\n",n);
for(i = 0;i < n;i++)
{
scanf("%d",&a[i]);
}


fun(a,n,odd,even);
    return 0;
}

void fun(int * a,int n, int * odd,int * even)
{
int sum_odd = 0;
int sum_even = 0;
int i;

for(i = 0;i < n;i++)
{
        if(a[i] % 2 == 0)
{
            sum_odd += a[i];
}
        else
sum_even += a[i];
}
odd = & sum_odd;
even = & sum_even;

printf("odd=%d    even=%d\n",*odd,*even);
}

注意:odd = & sum_odd;  printf("odd=%d    even=%d\n",*odd,*even);  fun(a,n,odd,even);

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值