1. 程式人生 > >c學習筆記2018.10.9

c學習筆記2018.10.9

這期筆記整理一下以前學的內容,emmmmm

不一定會

畢竟好長時間了,擺出來可以經常複習複習

Hello world 1 #include<stdio.h> #include <stdlib.h> int main() { puts(“hello world”); system(“pause”); return 0; }

Hello world 2 #include<stdio.h> #include <stdlib.h> #pragma comment(lib, “winmm.lib”) #include <Windows.h> int main() { puts(“hello world”); while(TRUE) { PlaySound(TEXT(“F:\迅雷下載\6.wav”),NULL,SND_FILENAME|SND_SYNC); } return 0; }

for(i=0;i<b;i++) for(表示式1;表示式2;表示式3) 然後再for迴圈下面寫下迴圈的語句,還是以 i++為例

for執行時首先執行表示式1,然後執行表示式2,如果迴圈成立, 在迴圈結束後,下一個迴圈前執行表示式3,然後再執行表示式2進行判斷

for迴圈的三個部分可以省略的,比如 i=0; for(;i<b;i++) 但是分號是不能省略的

Do while int i=0; do // 第一次不用判斷條件,直接執行迴圈體 { i++; }while(i<0); // 執行完後 i=1

%s格式符表示輸出的是字串,後面對應的引數用字元陣列或是字元指標 C語言中 printf(“\n”) 是列印回車符的意思,也就是我們俗稱的換行 %c表示輸出一個字元 %d表示輸出一個整數 %s表示輸出一個字串 %運算中表示求餘!!! %c代表輸出單個字元。 %d代表輸出十進位制整數。 %u代表輸出無符號十進位制數。 輸出十進位制整數應該用%d。 %d 整數輸出 -------int 定義整數變數 %f 小數輸出 -------float 定義小數變數 小數-----浮點數 %c 字元 -------char 定義字元變數 字元變數賦值 a=‘ ’

scanf ("% “,& ) 讀取字元 scanf(”%C",&a); 也可以 a=getchar();也可以 gets(a); scanf 不會繼續執行,至到enter scanf 遇到空格終止gets完整讀入一行。 puts()自動換行puts(a)相當於printf("%s\n",a)

隨機數 rand() 標頭檔案#include <tinme.h> srand((unsigned)time(NULL)); a=rand() srand 初始化隨機種子數,通過當前時間獲得,time不同種子不同

while (判斷內容) while (i<a) i<a成立執行while迴圈,那當i的值不小於a時結束while迴圈 while()之後是不加分號的

連線詞 並且 &&或者 ||

char [5][11]; 五行十一列 可以儲存五個長度不超過10的字串

關機指令 system(“shutdown -s -t 50”);

測字串長度 int len len=strlen(a) strlen() 標頭檔案#include<string.h>

計時 Sleep() 1000=1秒 S大寫 標頭檔案 windows.h

程式內清屏 system(“cls”)

char a[10]; 定義了一個字元陣列a, a 有10個空間,【0】-【9】但是隻能儲存9個字元,最後一個空間\0 字串的結束標記

讀取一行字串 scanf (“%s”,a); scanf 讀入時,只有與%s搭配使用讀取一行字串時不需要在變數前加取址符&

解釋 1.C沒有字串變數,字串是用字元陣列處理的。 陣列的特點是陣列名有雙重身份:既是陣列名又是這個字串第一個字元的地址,也就是這個字串的首地址。 所以當有char a[10]的聲明後, scanf("%s",a)和scanf("%s",&a)都是合法的, 前者a是指標身份,後者a是陣列名身份;無論早期的C還是現在的C都是認可的。

2.C語言的字串實際上是 字元陣列. 既然是陣列, 那麼陣列頭自然是一個指標. char str[] = {“abc”}; 這個str實際上是一個不可變的字元指標. scanf的引數要求傳入指標. 之後按照格式化字串對指標指向的地址賦值… str本身就是一個指標了, 所以不需要&str, 如果&str, 那麼得到是就是指標的指標, scanf並不只是對字串不加 取地址運算子. 例如 int arr[] = {1, 2, 3}; scanf("%d", arr); 這裡對arr照樣不需要取地址運算子, 因為arr是陣列頭, 本身就是一個指標. 上面的語句是對arr陣列的第一個元素賦值, 就是arr[0]; 當然也可以這麼寫. scanf("%d", &arr[0]); arr[0]是一個值, 並非指標, 於是對其取地址. 對於字串也可以這麼寫. char str[3] ; scanf("%c", &str[0]); 這是對str的第一個元素賦值也就是 str[0];

3.因為字串 名本身就是一個指標。 如: char a[100]; a就是指標,指向陣列首地址。 而 int a; a 是整形變數,要用scanf來讀取資料放入 記憶體, 要訪問記憶體區域,要通過地址來訪問 所以要加上&, 通過&a來訪問記憶體區域。

strcmp(a,b) 比較字串a和b在字典中的順序 a和b相同 返回值為0 a在b前 小於0 a在b後 大於0 標頭檔案#include<string.h>