鱼C论坛

 找回密码
 立即注册
查看: 3680|回复: 2

C入门菜鸟求助

[复制链接]
发表于 2022-9-7 17:28:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
已知两个数组,找出相同元素,请问我这段代码要怎么修改呢?(希望是在原基础上帮忙修改,如果有其他方法的完整代码也可以,谢谢大家!)
#include<stdio.h>
#define M 10
#define N 9
int find_same(int a[M],int b[N])
{
        for(int i=0;i<M;i++)
        {
                for(int j=0;j<N;j++)
                {
                    if(a[i]==b[j])
            {
                   printf("%d",a[i]);
                    }       
                    else if(a[i]<b[j])       
                   {
                             a[i++];
                   }
              }
      }
        return 0;
}
int main()
{
        int a1[M]={2,5,5,5,6,7,9,10,11,11};
        int b1[N]={2,2,3,5,5,7,7,8,10};
        printf("%d",find_same(a1,b1));
        return 0;

}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-9-7 21:11:17 | 显示全部楼层
本帖最后由 傻眼貓咪 于 2022-9-7 21:13 编辑

  1. #include <stdio.h>
  2. #define M 10
  3. #define N 9

  4. void foo(int A[M], int B[N]) {
  5.     int arr[256] = { 0 };
  6.     for (int i = 0; i < M; ++i)
  7.     for (int j = 0; j < N; ++j) {
  8.         if (!arr[A[i]] && (A[i] == B[j])) {
  9.             printf("%d ", A[i]);
  10.             arr[A[i]] = 1;
  11.         }
  12.     }
  13. }

  14. int main(void) {
  15.     int
  16.         A[M] = { 2, 5, 5, 5, 6, 7, 9, 10, 11, 11 },
  17.         B[N] = { 2, 2, 3, 5, 5, 7, 7, 8, 10 };

  18.     foo(A, B);
  19.     return 0;
  20. }
复制代码
  1. 2 5 7 10
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-10 12:56:20 | 显示全部楼层
  1. #include<stdio.h>
  2. #define M 10
  3. #define N 9
  4. void find_same(int a[M],int b[N])
  5. {
  6.     for(int i=0;i<M;i++)
  7.     {
  8.         for(int j=0;j<N;j++)
  9.         {
  10.            if(a[i]==b[j])
  11.            {
  12.                printf("%d ",a[i]);
  13.                break; //a[i]已经一样的了,直接结束看下一个
  14.            }
  15.         //          else if(a[i]<b[j])      
  16.         //      {
  17.         //          a[i++]; //这没啥用,只是让i+1而已,甚至导致循环跳了一下
  18.         //       }
  19.           }
  20.     while (a[i]==a[i+1]) i++; //因为给的数组是按顺序排的,一样的在一起,用加i的方法跳过相同给的
  21.     }
  22. }

  23. int main()
  24. {
  25.         int a1[M]={2,5,5,5,6,7,9,10,11,11};
  26.         int b1[N]={2,2,3,5,5,7,7,8,10};
  27.         find_same(a1,b1);
  28.         return 0;

  29. }
复制代码


小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-23 14:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表