程式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...