|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
比较两组整数是否有相同的元素,不考虑元素的顺序,并忽略元素重复的情况,每组元素个数不超过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
由于这两个数组具有相同的元素,顺序打印第一行与第二行相同的元素
- #include <stdio.h>
- void getInts(int arr[], int len)
- {
- int i;
- for(i=0; i<len; i++)
- {
- scanf("%d", &arr[i]);
- }
- }
- 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[i]==arr2[j])
- {
- flag = 0;
- for(k=0; k<100; k++)
- {
- if(arr1[i]==result[k])
- {
- flag = 1;
- break;
- }
- }
- if(!flag) // 结果中没有该数则保存
- {
- result[n] = arr1[i]; // 以n为下标进行保存
- n++; // 该句运行后,最后n为相同元素的个数,也就是数组result的长度。
- }
- break;
- }
- }
- }
- return n;
- }
- void printInts(int result[], int resultLen)
- {
- int i;
-
- for(i=0; i<resultLen; i++)
- {
- printf("%d#", result[i]);
- }
- printf("\n");
- }
- int main(void)
- {
- int arr1[100], arr2[100], result[100]={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;
- }
复制代码
|
|