c++第二次作業
阿新 • • 發佈:2018-12-08
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)解題思路
- 設置三個數組a[i],b[i], list[i]存儲初數組元素;
-
依次找出a[i]中不同於b[i]的元素存儲在list[i]中,和b[i]中不同於a[i]的元素存儲在list[i]中。
- 在數字存進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++第二次作業