问题遇到的现象和发生背景
编一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;
}
运行结果及报错内容
无法正常排序
我的解答思路和尝试过的方法
我想要达到的结果
程序运行正确