这个代码该怎么写呀?
比较两组整数是否有相同的元素,不考虑元素的顺序,并忽略元素重复的情况,每组元素个数不超过100。例如:2 5 10 17 10 8 5 10 12
与下列一组整数:
12 8 10 17 5 2
相同。
【输入形式】
首先输入第一组整数的个数,再输入第一组整数,以空格分割;然后输入第二组整数的个数,再输入第二组整数,以空格分割。
【输出形式】
打印两组整数中相同的元素,顺序以第一组的整数输入顺序为准,如果没有相同元素,打印"No Answer"
【输入样例】
9
2 5 10 17 10 8 5 10 12
6
12 8 10 17 5 2
【输出样例】
"#"代表空格
2#5#10#17#8#12#
【样例说明】
输入两组整数
2 5 10 17 10 8 5 10 12
12 8 10 17 5 2
由于这两个数组具有相同的元素,顺序打印第一行与第二行相同的元素 从第一个数组的元素开始遍历呗 比相同
相同就打印 然后 continue
#include <stdio.h>
void getInts(int arr[], int len)
{
int i;
for(i=0; i<len; i++)
{
scanf("%d", &arr);
}
}
int matchInts(int result[], int arr1[], int arr2[], int len1, int len2)
{
int i, j, k, n, flag;
n = 0; // 相同个数
// i j 2个循环对比2行的整数
for(i=0; i<len1; i++)
{
for(j=0; j<len2; j++)
{
// 相等则进行保存,在保存的同时在结果中比对该数是否已在存
if(arr1==arr2)
{
flag = 0;
for(k=0; k<100; k++)
{
if(arr1==result)
{
flag = 1;
break;
}
}
if(!flag) // 结果中没有该数则保存
{
result = arr1; // 以n为下标进行保存
n++; // 该句运行后,最后n为相同元素的个数,也就是数组result的长度。
}
break;
}
}
}
return n;
}
void printInts(int result[], int resultLen)
{
int i;
for(i=0; i<resultLen; i++)
{
printf("%d#", result);
}
printf("\n");
}
int main(void)
{
int arr1, arr2, result={0};
int len1, len2, resultLen=0;
scanf("%d", &len1);
getInts(arr1, len1);
scanf("%d", &len2);
getInts(arr2, len2);
resultLen = matchInts(result, arr1, arr2, len1, len2);
if(resultLen!=0)
{
printInts(result, resultLen);
}
else
{
printf("No Answer\n");
}
return 0;
}
页:
[1]