沉迷摸鱼无法自拔 2022-05-18 00:00 采纳率: 70.6%
浏览 50
已结题

请问这种问题如何解决

问题遇到的现象和发生背景

编一C程序,它能读入两组整数(每组整数都以-9999为结束标记,个数都不大于1000),并以从小到大的次序输出既在第一组整数中也在第二组整数中的所有整数(同一个整数不能输出两次)。(输入时,两个相邻的整数用空格隔开)。

问题相关代码,请勿粘贴截图
#include<stdio.h>
#include<stdlib.h>

#define MAX_SIZE 1000
#define END -9999
int n, m;
int arrayN[MAX_SIZE], arrayM[MAX_SIZE];
int res[MAX_SIZE], index;
int cmp(const void *a, const void *b)
{
    return *(const int*)a - *(const int*)b;
}
void GetAns()
{
    int p1, p2;
    qsort(arrayN, n, sizeof(arrayN[0]), cmp);
    qsort(arrayM, m, sizeof(arrayM[0]), cmp);

    for (p1 = p2 = index = 0; p1 < n&&p2 < m;)
    {
        if (arrayN[p1] == arrayM[p2])
            res[index++] = arrayN[p1], ++p1, ++p2;
        else
            arrayN[p1] < arrayM[p2] ? ++p1: ++p2;
    }
}
int main()
{
    int x, i;
    printf("请输入第一组整数:");
    for(n=0;scanf_s("%d",&x)&&x!=END;arrayN[n++]=x)
    { }
    printf("请输入第二组整数:");
    for(m=0;scanf_s("%d",&x)&&x!=END;arrayM[m++]=x)
    { }
    GetAns();
    printf("排序结果为:");
    for (i = 0; i < index; printf("%d%c", res[i], "\n"[i + 1 == index]), ++i);
    return 0;
}

运行结果及报错内容

无法正常排序

img

我的解答思路和尝试过的方法
我想要达到的结果

程序运行正确

  • 写回答

4条回答 默认 最新

  • Duang~Lucky.Mr.Li 2022-05-18 09:54
    关注

    同学,你这代码没问题啊,别迷糊啊。
    看清楚题目要求哦,题目要求是:
    “并以从小到大的次序输出既在第一组整数中也在第二组整数中的所有整数(同一个整数不能输出两次)”
    你问题中测试的数据中本来就没有数据可以输出啊,哈哈哈,是不是突然觉得自己好傻啊
    骗我读了好久代码

    代码写的很漂亮,没有问题,
    非要挑毛病的话
    那就是最终的输出格式的问题了,不应该换行的,题目要求是数据之间隔空格就行

    你的代码写的好厉害的样子,特别是for()循环语句用的,贼漂亮,学到了学到了
    还有qsort()函数,用的也很巧妙,好厉害的样子,作为一个小白,很崇拜

    加油加油,一起努力
    如果有帮助的话,麻烦点个赞吧,谢谢奥

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 5月26日
  • 已采纳回答 5月18日
  • 创建了问题 5月18日

悬赏问题

  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法