赞
踩
给定两个整型数组,本题要求找出不是两者共有的元素。
输入格式:
输入分别在两行中给出两个整型数组,每行先给出正整数 N(≤ 20),随后是 N 个整数,其间以空格分隔。
输出格式:
在一行中按照数字给出的顺序输出不是两数组共有的元素,数字间以空格分隔,但行末不得有多余的空格。题目保证至少存在一个这样的数字。同一数字不重复输出。
输入样例:
10 3 -5 2 8 0 3 5 -15 9 100
11 6 4 8 2 6 -5 9 0 100 8 1
输出样例:
3 5 -15 6 4 1
来源:
来源:PTA | 程序设计类实验辅助教学平台
链接:https://pintia.cn/problem-sets/13/exam/problems/502
提交:
题解:
#include<stdio.h> int main(void) { int M; int num1[20]; scanf("%d", &M); for (int i = 0; i < M; i++) { scanf("%d", &num1[i]); } int N; int num2[20]; scanf("%d", &N); for (int j = 0; j < N; j++) { scanf("%d", &num2[j]); } int num3[40]; int index = -1; // 找出 num1 中特有的元素,即在 num1 中存在但 num2 中不存在的元素 for (int i = 0; i < M; i++) { // 记录 num1[i] 在 num2[] 中是否存在:[1]不存在 [0]存在 int flag = 1; for (int j = 0; j < N; j++) { if (num1[i] == num2[j]) { flag = 0; break; } } if (flag == 1) { num3[++index] = num1[i]; } } // 找出 num2 中特有的元素,即在 num2 中存在但 num1 中不存在的元素 for (int i = 0; i < N; i++) { // 记录 num2[i] 在 num1[] 中是否存在:[1]不存在 [0]存在 int flag = 1; for (int j = 0; j < M; j++) { if (num2[i] == num1[j]) { flag = 0; break; } } if (flag == 1) { num3[++index] = num2[i]; } } // 去除 num3[] 中的重复元素 for (int i = 0; i <= index; i++) { for (int j = 0; j <= index; j++) { // 同一个元素,继续去重 if (i == j) { continue; } if (num3[i] == num3[j]) { // 后续元素前移 for (int k = j; k < index; k++) { num3[k] = num3[k + 1]; } // 数组长度减 1 index--; } } } for (int i = 0; i <= index; i++) { printf("%d", num3[i]); // 数字间以空格分隔,但行末不得有多余的空格 if (i != index) { printf(" "); } } return 0; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。