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

    xiaoxiao2021-03-26  41

    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("]",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);

    转载请注明原文地址: https://ju.6miu.com/read-661914.html

    最新回复(0)