第3章 陣列與字串

2021-07-07 08:13:01 字數 2403 閱讀 1652

程式3.1 逆序輸出(讀入一些整數,不超過100個,逆序輸出到一行中)

#include #define maxn 105   //常常難以精確計算出需要的陣列大小,陣列一般會比宣告的稍大一點,會更保險

int buf[maxn]; //因為區域性變數存放在堆疊段中,若放在函式體內可能會導致棧溢位,一般在全域性部分宣告較大的陣列

int main()

在標頭檔案中定義了函式memcpy和memset

#include#include int main()

; memset(a, 1, sizeof(a)); //memset是對每個位元組賦值,而int有4位元組(32位),則每個元素為00000001000000010000000100000001,即16843009

memcpy(b, a, sizeof(int) * 4); //是將a的前4個元素賦值給b;若需要全部賦值,則用memcpy(b, a, sizeof(a))

for(int i = 0; i<5; i++)

printf("%d ",a[i]);

printf("\n");

for(int i = 0; i<5; i++)

printf("%d ",b[i]);

return 0;

}

程式3.2 開燈問題(編號為1~n的n盞燈,剛開始燈全部關閉,第1個人將按下所有的燈,第2個人按下編號為2的倍數的燈,第3個人按下編號為3的倍數的燈……一共有k個人,問最後哪些燈是開著的)

演算法分析:先用乙個陣列a[maxn],其中a[1],a[2],……a[n]分別表示1~n的燈是否開著,最初給陣列全部初始化為0,之後當有人按下燈後,令a[i] = !a[i](之後a[i]為0或者1),最後根據if(a[i])來判斷輸出。

#include#include #define maxn 1010

int a[maxn];

int main()

} int first = 1;

for(int i = 1; i <= n; i++)

else printf(" %d", i);

} }printf("\n");

return 0;

}

蛇形填數:(在n*n方陣中填入1,2,……,n*n,要求填成蛇形,起點是在右上角(1, n)處)

演算法分析:用乙個int a[maxn][maxn]生成乙個整型的二維陣列並初始化為0,「筆」的軌跡是下,左,上,右的迴圈,朝乙個方向走,直到遇到邊界(大於n或者小於1或者已經被賦值的點)時停止走,走的同時給陣列賦值。直至走到第n*n步。。。

#include #include #define maxn 20

int a[maxn][maxn];

int main()

for(x = 1; x <= n; x++)

printf("\n");

} return 0;

}

豎式問題(輸入數字集合,找出所有形如abc*de的算式,使得其對應完整的豎式內,所有數字都屬於此數字集合,輸出所有豎式,要求豎式前帶有序號,之後有個空行,並輸出解的總數)

演算法分析:用字串形式輸入數字集合方便後續查詢,嘗試所有的abc和de,判斷是否滿足條件,可先將abc,de,abc*d,abc*e以及abc*de用sprintf放入乙個字串中,再對此字串的每個字元用strchr進行查詢,看是否全部位於數字集合類。

#include #include char set[20], buf[100];

int main()

} }printf("the number of solutions = %d\n", kase);

return 0;

}

補充:在標頭檔案中,printf是輸出到螢幕,sprintf是輸出到字串,fsprintf是輸出到檔案中,sprintf的用法如下:

#include int main()

對於一維陣列的scanf("%s", s);和二維陣列中第i行的輸入scanf("%s", s[i]);,和輸入單個變數一樣,遇到空白(空格,換行及退格)時讀取輸入,字串本質是陣列,可以用strcpy(a, b),strcmp(a, b),strcat(a, b)來進行操作。陣列中需多預留1位元組來儲存字串。」\"以及「"」都可以表示雙引號。

例題3.1 tex中的引號(將普通文字的雙引號格式" "變為tex格式的雙引號格式`` 』』)

例題3.2 wertyu (將手放在鍵盤上,稍不注意就會往右錯一位,如想輸入q就會變成輸入w等,要求將錯誤的輸入還原成正確的輸入)

例題3.3 回文詞

例題3.4 猜數字遊戲的提示

第5章 陣列與字串

5.1 陣列array 5.1.1 陣列的概念 語法 型別陣列名 型別陣列名 元素個數 不能定義長度為 0的陣列,即 裡不能是 05.1.2 記憶體中的陣列 獲得陣列的尺寸 即元素的個數 int n sizeof a sizeof int 5.1.3 陣列的初始化 初始化時,右值由 括起一組初始值列...

第3章 字串 向量和陣列

using 宣告語句 編譯器從操作符左側所示作用域尋找右側那個名字 using namespace name 注 標頭檔案中不能有using宣告,標頭檔案中的內容會拷貝到所引用它的檔案中去,會引起名字衝突 標準庫型別string 表示可變長的字串行。包含在string標頭檔案 string的初始化方...

第3章 字串向量和陣列

1 標頭檔案不應該包含using宣告 2 直接初始化string str or string num,char 拷貝初始化 string str str2 3 getling cin,line 讀取一行直到遇到第乙個換行符讀取並丟棄換行符 4 如果一條語句中有size 函式,就不用int避免混用 5...