三、結構體
四、總結
因眾多學長學姐已經詳細出過集訓的答案,故在此不做補充,謹提供課堂筆記以作參考。(大一新生一枚,所寫內容不夠嚴謹,望多多包涵互相進步)
首先我們需要知道c++對c語言是100%的相容,即c語言我們所學的在c++裡都可以用。
**c++的標頭檔案和輸入輸出:**
1.萬能標頭檔案(放在第一行)
#include
此句一寫即可以呼叫其他所有的函式,無需再寫其他標頭檔案,如:
#include
但標頭檔案後要緊跟記憶體的呼叫
using
namespace std;
2.輸入輸出與換行
輸入:cin>>
輸出:cout<<
換行:
cin>>x;
cout<3.備註
a.c++的輸入輸出不限型別,即無論單雙精度或是整型均可統一輸入輸出。
b.輸出時仍以printf(「%f」,x)的形式輸出小數(方便表達,c++不易)。
否則需要採用格式控制符
setprecision(n)控制;或者是流物件的成員函式
precision(n)為此我們簡便仍以c語言表達。
c.c語言的輸入輸出比c++的速度快了近三分之一。
(這一點在後續的**提交超時中體現的十分明顯)
d.定義變數時可以直接寫在內部,如:
for(int i=0;i<10;i++)
後續這個變數我們仍然可以使用,此處僅在for語句內起作用。
e.連續的輸入:while(cin>>n)
即可。
二維陣列本質上是以陣列作為陣列元素的陣列,即「陣列的陣列」。
格式:型別說明符 陣列名[常量表示式1][常量表示式2];
如:int a[10][2]
表示10行2列。
要求:定義時,可以省略第一維的大小,但第二維的大小不可省略。
二維陣列行優先。
a.二維陣列的初始化可以按行分段賦值,也可以按行連續賦值。
以a[2][2]為例:下標從1開始
按行分段賦值為:
int a[2]
[2]=,};
按行連續賦值為:
int a[2]
[2]=
;
這兩種賦初值的結果是完全相同的。
從a[1][1]-a[1][2]-a[2][1]-a[2][2]
b.可以只對部分元素賦初值,未賦初值的元素自動取 0 。
int a[3]
[3]=
,,};
賦值後各元素的值為:
1 0 0
2 0 0
3 0 0
c.例題乙份
二維矩陣最大值(林大oj951)在儲存和處理大批量資料時,一般會使用陣列來實現,但是每乙個資料的型別及含義必須一樣。如果需要把不同型別、不同含義的資料當作乙個整體來處理,如 1000 個學生的姓名、性別、年齡、體重、成績等,怎麼處理呢?【問題描述】 有乙個n × m 的矩陣,要求找出其中最大元素所在的行號和列號,以及該元素之值。
【輸入格式】 多組輸入,每組第一行有2個正整數n和m(2<=n,m<=10),接下來有n行m列的資料a(ij),(1<=a(i,j)<=100);
【輸出格式】 在一行內輸出最大元素所在的行號和列號,及該元素的值。
【輸入樣例】
2 2
100 2
3 18
【輸出樣例】
1 1 100
【問題分析】
定義乙個二維陣列 a[11][11] 儲存矩陣,用迴圈巢狀來讀入,讀入時更新最大值,並記錄最大值的下標。
【核心**】
#include
using
namespace std;
intmain()
}}
cout<
" "<
" "<
}return0;
} ```
c++ 提供了結構體(struct)來解決這類問題。
c++ 中的結構體是由一系列具有相同型別或不同型別的資料構成的資料集合,也叫結構。
使用結構體,必須要先宣告乙個結構體型別,再定義和使用結構體變數。結構體型別的宣告格式如下:
struct 型別名;(一定要注意此處有個;)
定義結構體變數格式如下:
struct 結構體型別名 變數名列表;
struct studenr stu1;
也可以把結構體型別宣告和變數定義合在一起,格式如下:
struct 型別名 變數名;
struct student
stu1,stu2;
//變數名列表
結構體變數具有以下特點:
a.可以對結構體變數的整體進行操作。
例如:swap(a[i],a[j])
b.可以對結構體變數的成員進行操作。
引用結構體變數中成員的格式為:
結構體變數名. 成員名
c.結構體變數的初始化法與陣列類似。
d.例題乙份
學生資訊所謂結構體陣列,是指數組中的每個元素都是乙個結構體。【問題描述】 輸入乙個學生的資訊,包括姓名、性別、年齡、體重,再輸出這些資訊。
【輸入格式】
一行,依次是學生的姓名、性別、年齡、體重。
【輸出格式】 一行,依次是姓名、性別、年齡、體重(體重保留一位小數)。
【輸入樣例】
zhangsan m 20 90.5
【輸出樣例】
zhangsan m 20 90.5
【核心**】
在實際應用中,結構體陣列常被用來表示乙個擁有相同資料結構的群體,比如乙個班的學生、乙個車間的職工等。
例如:
結構體陣列的輸入輸出在初學時讓人頭大!!
為此我特地標明出來:
#include
using
namespace std;
struct sa
data[
100]
;int
main()
以上即為我的整理
其中我認為至關重要的是結構體的應用,剛剛學完後的做題初期會有很大的問題,而這需要我們保持耐心多次練習,相信最終我們都能熟練應用。
以上內容參考:林大acm寒假集訓第一講
資料結構(一)二維陣列與稀疏陣列轉換
1 建立二維陣列 int array new int 10 10 array 3 2 4 array 4 3 5 for int row array system.out.println 將二維陣列轉換成稀疏陣列的思想 1 先遍歷二維陣列得到非零資料的個數 int sum 0 for int i 0...
樹狀陣列一(二)維區間修改與求和
首先考慮樹狀陣列的一維區間修改與求和 把數列差分,那麼對l和r的區間加就可以變成l位置的加和r 1的減 設差分陣列為t 修改前陣列為a 修改後陣列為b 那麼修改後的答案 an s i lrb l i l ra i b i r i 1 r 1 i l ra i b i i lr a i ia i 提前...
結構體的二維陣列實現
csdn toc 結構體二維陣列 問題提出 假設現在我們要進行乙個隨機迷宮設計 要求 迷宮隨機產生 迷宮各個單元相互連通但又不至於所有房間之間的牆全部去除。注意 在開始解決這個問題之初,我們應該考慮如果我們要使用結構體來對單個迷宮單元進行屬性劃分 那麼,我們就需要使用二維結構體陣列 表示迷宮矩陣 在...