IcarusCPU 2023-05-25 21:38 采纳率: 71.4%
浏览 198
已结题

C语言编写函数交换数组a和数组b中的对应元素

任务描述

本关任务:编写函数交换数组 a 和数组 b 中的对应元素,要考虑到数组 a 和数组 b 中数组元素的个数不同。

相关知识

编程要求

根据提示,在右侧编辑器 Begin-End 区间补充代码,完成三个子函数的定义,交换数组 a 和数组 b 中的对应元素,具体要求如下:

函数 inputarr()实现数组的输入,当遇到数字-1时,结束输入;
函数 swaparr()实现数组元素的交换;
函数 outputarr()实现数组元素的输出。
测试说明

平台会对你编写的代码进行测试:

测试输入:
91 1 42 32 9 57 6 33 2 88 -1
41 13 25 32 29 74 68 30 5 48 57 6 33 62 81 -1

预期输出:
41 13 25 32 29 74 68 30 5 48 57 6 33 62 81
91 1 42 32 9 57 6 33 2 88

初始代码


#include<stdio.h>
#define N 20
void inputarr (int *p, int *n);
void outputarr (int *p,int n);
void swap(int *a, int *b);
void swaparr(int *a, int n, int *b,int m);
int main()
{
    int i,n=0,m=0;
    int a[N],b[N];
    //printf("请输入数组a,以-1结束:\n");
    inputarr(a,&n);    
    //printf("请输入数组b,以-1结束:\n");
      inputarr(b,&m);
    swaparr(a, n, b, m);
    //printf("数组a中所有元素:\n");
    outputarr (a,m); 
    //printf("数组b中所有元素:\n");
     outputarr (b,n); 
     return 0;

}

/********** Begin **********/

    
    
/********** End **********/


我的代码


#include <stdio.h>
#define M 3
#define N 4

void input(int (*a)[N], int m, int n);
void output(int (*b)[N], int m, int n);
void outputarr(int array[], int n);
void fun(int x[][N], int *y, int m, int n);

int main()
{
    int a[M][N];
    int b[M * N];

    input(a, M, N);
    fun(a, b, M, N);
    output(a, M, N);
    outputarr(b, M * N);

    return 0;
}

void input(int (*a)[N], int m, int n)
{
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < n; j++)
        {
            scanf("%d", &a[i][j]);
        }
    }
}

void fun(int x[][N], int *y, int m, int n)
{
    for (int j = 0; j < n; j++)
    {
        for (int i = 0; i < m; i++)
        {
            y[j * m + i] = x[i][j];
        }
    }
}

void output(int (*b)[N], int m, int n)
{
    printf("二维数组:\n");
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < n; j++)
        {
            printf("%d ", b[i][j]);
        }
        printf("\n");
    }
}

void outputarr(int array[], int n)
{
    printf("一维数组:\n");
    for (int i = 0; i < n; i++)
    {
        printf("%d ", array[i]);
    }
    printf("\n");
}

错误,求解!

  • 写回答

3条回答 默认 最新

  • IcarusCPU 2023-05-27 14:14
    关注
    
    #include <stdio.h>
    #include <stdlib.h>
    
    void inputarr(int *a, int *n);
    void swaparr(int *a, int *n, int *b, int *m);
    void outputarr(int *a, int n);
    
    int main()
    {
        int a[100], b[100], n = 0, m = 0;
        inputarr(a, &n);
        inputarr(b, &m);
        swaparr(a, &n, b, &m);
        outputarr(a, n);
        outputarr(b, m);
        return 0;
    }
    
    void inputarr(int *a, int *n)
    {
        int num;
        int i = 0;
        scanf("%d", &num);
        while (num != -1)
        {
            a[i] = num;
            i++;
            scanf("%d", &num);
        }
        *n = i;
    }
    
    void swaparr(int *a, int *n, int *b, int *m)
    {
        int min = (*n < *m) ? *n : *m;
        for (int i = 0; i < min; i++)
        {
            int temp = a[i];
            a[i] = b[i];
            b[i] = temp;
        }
        
        if (*n < *m)
        {
            for (int i = min; i < *m; i++)
            {
                a[*n] = b[i];
                (b[i]=-1);
                (*n)++;
            }
            *m = *n;
        }
        else if (*n > *m)
        {
            for (int i = min; i < *n; i++)
            {
                b[*m] = a[i];
                a[i]=-1;
                (*m)++;
            }
            *n = *m;
        }
    }
    
    void outputarr(int *a, int n)
    {
        for (int i = 0; i < n; i++)
        {
           if(a[i]!=-1) printf("%d ", a[i]);
            
        }
        printf("\n");
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 6月4日
  • 已采纳回答 5月27日
  • 创建了问题 5月25日

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀