没看题目...直接拷贝下来改的,不过你这while判断的添加确实停不下来
回复 11楼 sbwl
不是停不下来。是你们还不知道怎么停。windows下输入(回车 Ctrl+Z 回车),Linux我忘了(可以百度一下)...这时候程序才能得到我说的的那个表示“输入结束”的信号。
做练习题很少会用到这个sanf()!=EOF 的判断。
#include<stdio.h> #include<stdlib.h> int cmp(const void * a, const void * b) { return *(int *)a - *(int *)b; } int main() { int a[100], an, b[100], bn, n, i, j; for(scanf("%d", &n); n--; puts("")) { for(scanf("%d", &an), i = 0; i < an; scanf("%d", &a[i++])); for(scanf("%d", &bn), i = 0; i < bn; scanf("%d", &b[i++])); qsort(a, an, sizeof(int), cmp); qsort(b, bn, sizeof(int), cmp); for(i = j = 0; i < an && j < bn && a[i] != b[j]; a[i] < b[j] ? i++ : j++); if(i < an && j < bn) printf("%d", a[i]); for(i++, j++; i < an && j < bn; a[i] < b[j] ? i++ : a[i] > b[j] ? j++ : (printf(" %d", a[i]), i++, j++)); } return 0; }
[此贴子已经被作者于2016-8-22 20:43编辑过]