《C语言名题精选百则》

题目:已知两个整数数组f[]与g[],他们的元素都已经从小到大排列,而且数组中的元素各不相同。例如,f[]中可能偶1,3,4,7,9,而g[]中有3,5,7,8,10.

           请写一个程序,算出这两个数组彼此之间有多少组相同的数据。

 

 

这题比较简单,直接上程序了:

 

 

#include <stdio.h>

int eqcount(int *f, int m, int *g, int n);


int main(int argc, char *argv[])
{

    int f[5] = {1,2,3,4,6};
    int g[6] = {1,2,4,5,6,8};
    int count = eqcount(f, 5, g, 6);

    printf("%d\n", count);

    return 0;
}

int eqcount(int *f, int m, int *g, int n)
{
    int index_f = 0;
    int index_g = 0;
    int count = 0;

    while(index_f &lt; m && index_g &lt; n)
    {
        if(f[index_f] == g[index_g])
        {
            index_f++;
            index_g++;
            count++;
        }
        else if(f[index_f] &lt; g[index_g])
        {
            index_f++;
        }
        else
        {
            index_g++;
        }
    }

    return count;
}

 

参考答案和我的程序差不多,就不赘述了。