C语言题目8
//有两个集合A={a,b,f,d,e} B={g,b,h,d,e,e} 合并为一个集合C, C中的元素是递增排列的,并且无重复元素。 //这道题也可以拼接两个集合到一个集合,然后排序消重。 #include"stdio.h" int getmin(char k[], int n) { int min = -1; int i; for(i=0; i<n; i++) { if(k[i] != '#') { min = i; } } if(min != -1) { for(i=0; i<5; i++) { if((k[i] == '#') || i == min) { continue; } if(k[i] < k[min]) { min = i; } else if(k[i] == k[min]) { k[i] = '#'; } } } return min; } int main() { char a[5] = {'a','b','f','d','e'}; char b[6] = {'g','b','h','d','e','e'}; char c[12] = {}; int i = 0; int j = 0; int mina; int minb; int k = 0; int flaga = 0; int flagb = 0; while(1) { mina = getmin(a,5); minb = getmin(b,6); if((mina != -1) && (minb != -1)) { if(a[mina] < b[minb]) { c[k] = a[mina]; a[mina] = '#'; k = k+1; } else if(a[mina] == b[minb]) { c[k] = a[mina]; a[mina] = '#'; b[minb] = '#'; k = k+1; } else { c[k] = b[minb]; b[minb] = '#'; k = k+1; } } else if((mina == -1) && (minb != -1)) { c[k] = b[minb]; b[minb] = '#'; k = k+1; } else if((mina != -1) && (minb == -1)) { c[k] = a[mina]; a[mina] = '#'; k = k+1; } else { c[k] = '#'; break; } } i = 0; while(i<12) { if(c[i] == '#') { printf("\n"); break; } else { printf("%c ", c[i]); i = i+1; } } }