c++第二次作业

1  目前自己学习中存在的薄弱的知识点具体有哪些?每个薄弱的知识点都是如何获知的,每个薄弱的知识点需要列举具体的例子说明。(5分)

2  从第五章函数到第七章数组的函数题和编程题(主要是在PTA)中选出至少一道你觉得比较有挑战的题(已解决且不是奇奇的题)。写出解题报告包括:(1)题目大意;(2)解题思路;(3)代码思路,比如画出流程图;(4)核心技术总结;(5)解题过程中存在的问题,以及如何得到解决的。(5分)

 

1.     偶尔还会受java自动补全和提示的影响,对某些包和关键字记不太清楚,会打错名称。要加强练习,熟悉这些包的功能和应用。

2.(1)题目大意

找出不是两个数组共有的元素 

给定两个整型数组,本题要求找出不是两者共有的元素。

输入格式:

输入分别在两行中给出两个整型数组,每行先给出正整数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

 

(2)解题思路

  1. 设置三个数组a[i],b[i], list[i]存储初数组元素;
  2. 依次找出a[i]中不同于b[i]的元素存储在list[i]中,和b[i]中不同于a[i]的元素存储在list[i]中。
  3. 在数字存进list[ i ]前,确保list[ i ]中没有它。

 

(3)代码思路

#include<iostream>
#include <iomanip>
using namespace std;
struct info{
         char name[30];
         double price;
     }; 
int main(){
    int n,k;
    cin>>n;
    int a[n];
    for(int i=0;i<n;i++){
        cin>>a[i];
    }
    cin>>k;
    int b[k];
    for(int i=0;i<k;i++){
        cin>>b[i];
    }
    int list[n+k];
    int q=0;
    for(int i=0;i<n;i++){
        int jude=0;
        for(int j=0;j<k;j++){
            if(a[i]==b[j]){
                jude =1;
                break;
            }
        }
        if(jude==0){
            int x=0;
            for(int y=0;y<q;y++){
                if(list[y]==a[i]){
                    x=1;break;
                }
            }
            if(x==0){
                list[q]=a[i];
                q++;
            }
        }
    }
    
    for(int i=0;i<k;i++){
        int jude=0;
        for(int j=0;j<n;j++){
            if(b[i]==a[j]){
                jude =1;
                break;
            }
        }
        if(jude==0){
            int x=0;
            for(int y=0;y<q;y++){
                if(list[y]==b[i]){
                    x=1;break;
                }
            }
            if(x==0){
                list[q]=b[i];
                q++;
            }
        }
    }
    
    for(int i=0;i<q-1;i++){
        cout<<list[i]<<" ";
    }
    cout<<list[q-1];
    return 0 ;
    }

(4)核心技术总结

将两数组中不重复的数字存进第三个数组中,且该数组里不能出现重复的数字。

(5)解题过程中存在的问题,以及如何得到解决的。

会出现某数字在a数组中出现两次,但不在数组b出现,在输出不重复数字时,它只需输出一次。

解决方法:

  将两数组中不重复的数字放进第三个数组list中,且其不能与list中已有的数字重复。

 

posted @ 2018-12-08 19:41  lasia_LWL  阅读(180)  评论(0编辑  收藏  举报