|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目描述
输入两行整数(每行不超过40个整数,整数之间以逗号分隔,每组整数中元素可能重复),合并两行整数,去掉在两行整数中都出现的整数,并按从小到大顺序排序输出。
输入
两行整数,每行不超过40个整数,整数之间以逗号分隔,每组整数中元素可能重复
输出
一行整数,以逗号分隔,合并两行整数,去掉在两行整数中都出现的整数,并按从小到大顺序排序输出
样例输入 复制
9,3,5,12,7,-3,-18,22
22,17,4,3,5,5,-4,12
样例输出 复制
-18,-4,-3,3,4,5,7,9,12,17,22
#include <stdio.h>
#include <string.h>
int main(void)
{
int a[2][80];
int i,j;
//输入
for (j = 0;j < 2;j++){
int ch = ',';
for (i = 0;i < 40;i++){
while (ch == ',' && scanf("%d",&a[j][i]))
ch = getchar();
}
}
int b[80];
int len1 = sizeof(a[0]) / sizeof(int);
int len2 = sizeof(a[1]) / sizeof(int);
//将两个数组合并为一个数组
for (i = 0;i < len1-1;i++){
b[i] = a[0][i];
}
for (i = 0;i < len2-1;i++){
b[i+len1] = a[1][i];
}
//开始删除相同元素
int len = (sizeof(b) / sizeof(b[0]));
for (i = 0;i < len-1;i++){//遍历整个数组
for (j = i+1;j < len-1;j++){//寻找相同元素
while (b[i] == b[j]){//删除相同元素
for (int n = j;n < len-1;n++){
b[n+1] = b[n];
}
len--;
}
}
}
//对b数组进行从小到大排序
for (i = 0;i < len-1;i++){
for (j = 0;j < len-1;j++){
if (b[j] < b[j+1]){
int tmp =b[j];
b[j] = b[j+1];
b[j+1] = tmp;
}
}
}
//输出
for(i = 0;i < len-1;i--){
printf(i == 0 ? "%d" : ",%d",b[i]);
}
return 0;
}
请问一下该程序错在哪里呀? |
|