㈠知識點總結
①一維陣列
一般格式 型別 陣列名[元素個數];
陣列是一組具有相同型別的變數的集合。應用陣列將一組數儲存在記憶體的一片連續區域中,使用乙個統一的名字來標識 這組同型別的資料,這個名字稱為資料名。構成陣列的每個資料項稱為陣列元素,c程式通過陣列的下標實現對陣列元素的訪問。
c語言的下標都是從0開始的。
②二維陣列
一般格式:型別 陣列名[第一維長度][第二維長度]
第一維的長度代表陣列每一列的元素 個數,第二維的長度代表陣列每一行的元係個數。
注意,陣列第二維的長度宣告永遠都不能省略
③向函式傳遞一維陣列和二維陣列
陣列元素和基本型變數一樣,既可出現在任何合法的c表示式中,也可用作函式引數。
若要把乙個陣列傳遞給乙個函式,那麼只要使用不帶方括號的陣列名作為函式實參呼叫函式即可
注意:陣列作函式形參時,陣列的長度可以不出現在陣列名後面的方括號內 ,通常用另乙個整型形參來指定陣列的長度。
④字元型別和字元陣列
字元型別為由乙個字元組成的字元常量或字元變數。
字元常量定義:
const
字元常量=『字元』
字元變數定義:
char字元變數;
字元型別是乙個有序型別,字元的大小順序按其ascii**的大小而定。
字元陣列是指元素為字元的陣列。字元陣列是用來存放字串行或字串。
字元陣列的定義格式
字元陣列定義格式同於一般陣列,所不同的是陣列型別是字元型,第乙個元素同樣是從ch1[0]開始,而不是chl[1].具體格式如下:
[儲存型別] char陣列名[常量表示式1]...例如:
char chl[5]; //陣列chl是乙個具有5個字元元素的一維字元陣列
char ch2[3][5]; //陣列ch2是乙個具有15個字元元素的二維字元陣列
(1)用字元初始化陣列例如:
char chrl[5]={'a','b','c','d','e'}
(2)用字串初始化陣列
用乙個字串初始化乙個一 維字元陣列,可以寫成下列形式:char chr2[5]=" abcd ";對二維字元陣列來講,可在放若干個字串。
⑤資料排序
⒈選擇排序
(1)基本思想:每一趟從待排序的資料元素中選出最小(或最大)的乙個元素,順序放在待接序的數列的最前直到全部待排序的資料元素排完。
歸納上述排序過程,具體實現步驟如下:①讀入資料存放在a陣列中在a[1]~a[n]中選擇值最小的元素,與第1位置元素交換,則把最小值元素放入]中①在[2]~a[n]中選擇值最小的元素,與第2位置元素交換,則把最小值元素放入④直到第n-1個元素與第n個元素比較排序為止程式實現方法:用兩層迴圈完成演算法,外層迴圈i控制當前序列最小值存放的陣列位置,迴圈:控制從計+1到n序列中選擇最小的元素所在位置k。
2.氣泡排序
氣泡排序的思想:以n個人站隊為例,從第1個開始,依次比較相鄰的兩個是否逆對(高在前,矮在後),若逆序就交換這兩人,即第個和第2個比,若序就交換兩人,接著第1個和第3個比,若逆序就交換兩人,接著第3個和第4個比,若序就交換兩人,直到-1和n比較,經過一輪比較後,則把最高的人排到最後,即將最高的人像冒泡一樣逐步冒到相應的位置,原n個人的排序問題,轉換為n-1個人的排序問題,第二輪從第1個開始,依次比較相鄰的兩個人是否逆序對,若逆就交換兩人,直到n-2和n-1比較,如此進行n-1輪後,隊列為有序的佇列從上述分析中可以看出,每進行一輪的比較後,個數的排序規模就轉化為n-1個數的排序規模。
3.插入排序
插入排序思想:回憶一下打牌時抓牌的情景,為了方便打牌,抓牌時一般一邊抓牌一邊3.插入排序按花色和大小插入恰當的位置,當抓完所有的牌時,手中的牌便是有序的,這種排序方法即當讀入乙個元素時,在已經排序好的序列中,搜尋它正確的位置,再放入讀入的元素但不該忽略乙個重要的問題:在插入這個元素前應當先將它後面的所有元素後移一位,以播入排序。保證插入位置的原元素不被覆蓋。
㈡典型例題
12:倒置排序
總時間限制: 1000ms 記憶體限制: 32767kb
描述將一些整數按倒置值排序後輸出. 所謂倒置,是指把整數各位倒過來構成乙個新數,例如:13倒置成了31.
輸入第一行的整數n表示後面列出的組數。每組數的第乙個整數n表示後面將有n個整數。(每組資料量不超80)
輸出將每組數按倒置值進行排序輸出.其每組數的結果佔一行.
樣例輸入
24 83 13 24 36
4 99 100 123 12345
樣例輸出
13 83 24 36
100 99 123 12345
#include
int a[81],c[81];
using namespace std;
int main()
{ int n,n,b,s,i,j,k;
cin>>n;
for(i=1;i<=n;i++)
cin>>n;
for(j=1;j<=n;j++)
s=0;
cin>>b;
a[j]=b;
while(b!=0)
s=s*10+b%10;
b/=10;
c[j]=s;
for( j=1;j<=n-1;j++)
for( k=1;k<=n-j;k++)
if(c[k]swap(c[k],c[k+1]);
swap(a[k],a[k+1]);
for(j=n;j>=1;j--)
cout㈢總結通過這段時間的學習,學到了更多解決問題的方法,但題目也越來越難,有的題連思路都沒有。但是再在做這些難題的過程中,可以發現自己之前沒能注意的的問題,慢慢進步,相信我會慢慢的,一步步的學會寫程式。
陣列課程筆記
本章圍繞計算平均分 最高分 成績排序與查詢等學生成績管理問題,重點介紹向函式傳遞一維陣列和二維陣列的方法。主要內容如下 1 陣列型別,陣列的定義和初始化,以及對陣列名特殊含義的理解 2 向函式傳遞一維陣列和二維陣列 3 排序 查詢 求最大最小值等常用方法 為什麼使用陣列?利用輸入和迴圈語句儲存大量同...
陣列課程筆記
一。知識點整理 1 陣列是一組具有相同型別的變數的集合,它是一種構造資料型別。使用乙個統一的名字來標識這組資料,這個名字叫陣列,構成陣列的每個資料項稱為陣列元素。2 通過陣列的下標,實現對陣列元素的訪問,下標的個數稱為陣列的維數。注意,c語言的陣列下標都是從零開始。3 程式中直接使用的常數稱為幻術,...
四。陣列課程筆記
陣列課程筆記 一。知識點彙總 1.在c語言中,陣列 i 屬於構造資料型別。乙個陣列可以分解為多個陣列元素,這些陣列元素可以是基本資料型別或是構造型別。因此按陣列元素的型別不同,陣列又可分為數值陣列 字元陣列 指標陣列 結構陣列等各種類別。2.陣列說明的一般形式為 型別說明符 陣列名 常量表示式 其中...