JMpro 2024-08-02 11:58 采纳率: 57.1%
浏览 6
已结题

C语言一维数组元素删除

C语言元素的删除
输入
第一行为一个整数T,表示有T组数据。
每组数据有三行:
第一行是一个整数M ,表示原队伍有M个人;
第2行有M个以空格隔开的整数,即原队伍中每个人的面试编号;
第三行为DavidDeng的面试编号N。
保证没有相同号码,保证M不大于10000
就是删除Deng的编号
输出
DavidDeng离开后队伍的面试编号序列。

#include <stdio.h>
void delete_elem(int arr[],int delete_e,int n);
int main()
{
    int t,i,m,id_deng,j;
    scanf("%d",&t);
    for ( i = 0; i < t; i++)      //t groups
    {
        scanf("%d",&m);
        int arr[m];
        scanf("%d",&id_deng);
        for ( j = 0; j < m; j++)
        {
            scanf("%d",&arr[j]);
        }
        delete_elem(arr,id_deng,m);
        for ( j = 0; j < m-2; j++)
        {
            printf("%d ",arr[j]);
        }
        printf("%d\n",arr[m-2]);
    }
    return 0;
}
void delete_elem(int arr[],int delete_e,int n)
{
    int r=delete_e,j,k,temp;
    for ( j = 0; j < n; j++)
    {
        if (arr[j]==r)
        {
            for (k=j; k < n-1; k++)
            {
                arr[k] = arr[k+1];
            }
        }
    }
}

问一下这个代码哪里错了?听劝!

  • 写回答

1条回答 默认 最新

  • fengbizhe 2024-08-02 13:36
    关注

    你的代码中这一段写反了,应该先获取arr数组元素,再获取id_deng

    
    scanf("%d",&id_deng);
            for ( j = 0; j < m; j++)
            {
                scanf("%d",&arr[j]);
            }
    

    其他地方没问题

    #include <stdio.h>
    void delete_elem(int arr[],int delete_e,int n);
    int main()
    {
        int t,i,m,id_deng,j;
        scanf("%d",&t);
        for ( i = 0; i < t; i++)      //t groups
        {
            scanf("%d",&m);
            int arr[m];
            for ( j = 0; j < m; j++)
            {
                scanf("%d",&arr[j]);
            }
            scanf("%d",&id_deng);
            delete_elem(arr,id_deng,m);
            for ( j = 0; j < m-2; j++)
            {
                printf("%d ",arr[j]);
            }
            printf("%d\n",arr[m-2]);
        }
        return 0;
    }
    void delete_elem(int arr[],int delete_e,int n)
    {
        int r=delete_e,j,k,temp;
        for ( j = 0; j < n; j++)
        {
            if (arr[j]==r)
            {
                for (k=j; k < n-1; k++)
                {
                    arr[k] = arr[k+1];
                }
            }
        }
    }
    
    
    

    (「・ω・)「嘿

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月20日
  • 已采纳回答 8月12日
  • 创建了问题 8月2日

悬赏问题

  • ¥15 paddle库安装时报错提示需要安装common、dual等库,安装了上面的库以后还是显示报错未安装,要怎么办呀?
  • ¥20 找能定制Python脚本的
  • ¥15 odoo17的分包重新供应路线如何设置?可从销售订单中实时直接触发采购订单或相关单据
  • ¥15 用C语言怎么判断字符串的输入是否符合设定?
  • ¥15 通信专业本科生论文选这两个哪个方向好研究呀
  • ¥50 我在一个购物网站的排队系统排队,这个排队到号后重新定向到目标网站进行购物,但是有技术牛通过技术方法直接跳过排队系统进入目标网址购物,有没有什么软件或者脚本可以用
  • ¥15 ios可以实现ymodem-1k协议 1024字节传输吗?
  • ¥300 寻抓云闪付tn组成网页付款链接
  • ¥15 请问Ubuntu要怎么安装chrome呀?
  • ¥15 视频编码 十六进制问题