1. 程式人生 > >c++第二次作業

c++第二次作業

namespace -html ava 輸入 jude 給定 思路 目前 view

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中已有的數字重復。

c++第二次作業