求两组整数的并集
最后以从大到小顺序输出将第一组和第二组整数合并(在两组整数中都出现的整数只出现一次)
帮忙看看 哪里出错 感激不尽
#include<string.h>
int main()
{
char a[20],b[20];
char c[20];
int i,j,t;
for(i=0;i<20;i++)
scanf("%d",&a[i]);
for(j=0;j<20;j++)
scanf("%d",&b[j]);
for(i=0;i<20;i++)
{for(j=0;j<20;j++)
if(a[i]!=b[j]&&a[i]>0)
strcpy(c,a);
}
for(j=0;j<20;j++)
{for(i=0;i<20;i++)
if(b[j]!=a[i]&&b[j]>0)
strcpy(c,b);
}
for(i=0;i<20;i++)
{for(j=1;j<19;j++)
if(c[j]<c[i])
{t=c[j];
c[j]=c[i];
c[i]=t;}
}
c[i]='\0';
puts(c);
}
for循环属实是看不懂
for(循环变量赋初值;循环条件 ;循环变量增值 )
{
}
for(i=0;i {for(j=0;j for(j=0;j {for(i=0;i 都是什么玩意,用工具栏上的“代码片”格式化好了再提问!!!
或者你可以直接参考我之前的回答
https://ask.csdn.net/questions/237898
#include <stdio.h>
#include <string>
void arrunion(int a[], int b[], int r[], int an, int bn, int * n)
{
*n = an;
memcpy(r, a, an * sizeof(int));
for (int i = 0; i < bn; i++)
{
bool f = true;
for (int j = 0; j < an; j++)
{
if (r[j] == b[i]) { f = false; break; }
}
if (f) { r[*n] = b[i]; *n = *n + 1; }
}
}
int main()
{
int a[20],b[20];
int c[40];
int i,j,t;
for(i=0;i<20;i++)
scanf("%d",&a[i]);
for(j=0;j<20;j++)
scanf("%d",&b[j]);
int n = 0;
arrunion(a, b, c, 20, 20, &n);
for(i=0;i<n;i++)
{
for(j=0;j<n-1;j++)
if(c[j]<c[j+1])
{
t=c[j];
c[j]=c[j+1];
c[j+1]=t;
}
}
for (int i = 0; i < n; i++)
printf("%d ", c[i]);
return 0;
}
原来代码太乱,我给你写个标准库的,放心用
#include "pch.h"
#include <set>
#include <vector>
#include <iostream>
#include <iterator>
#include <algorithm>
using namespace std;
int main(void)
{
int i = 0;
set<int> s1;
set<int> s2;
const int COUNT = 20;
for (i = 0; i < COUNT; i++)
{
cout << "input first array[" << i << "]=" << endl;
int nTmp = 0;
cin >> nTmp;
s1.insert(nTmp);
}
for (i = 0; i < COUNT; i++)
{
cout << "input second array[" << i << "]=" << endl;
int nTmp = 0;
cin >> nTmp;
s2.insert(nTmp);
}
vector<int> ANS;
set_union(s1.begin(), s1.end(), s2.begin(), s2.end(), inserter(ANS, ANS.begin()));
for (auto it : ANS)
cout << it << endl;
return 0;
}
代码写的够乱的,给你改了一下看看吧:
#include <stdio.h>
#include <string.h>
int main()
{
int a[20], b[20];
int c[40];
int i, j, t = 0;
for (i = 0; i<20; i++) scanf("%d", &a[i]);
for (j = 0; j<20; j++) scanf("%d", &b[j]);
memcpy(c, a, sizeof(a));
memcpy(c + 20, b, sizeof(b));
for (j = 0; j < 40; j++)
for (i = 0; i<40 - j - 1; i++)
if (c[i]>c[i + 1])
{
t = c[i]; c[i] = c[i + 1]; c[i + 1] = t;
}
for (i = 0; i < 40; i++)
printf("%d", c[i]);
printf("\n");
}
int main()
{
char a[20],b[20],c[20];
int i,j,t;
printf("请输入2个字符串:\n");
gets(a);
gets(b);
strcat(a,b);
for(i=0;i<strlen(a);i++)
{
for(j=i+1;j<strlen(a);j++)
{
if(a[i]<a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
puts(a);
}