這裡做一些c語言的語法的總結。
1.輸出數字型別
printf("%d\n
",2);
2.保留小數點後一位,示例為1 不是 l
printf("%.1f\n
",8.0/5.0);
3.整數值用 %d,實數用 %f 輸出。
4.開平方,需要引入 #include
sqrt(3)
5.scanf中的佔位符和變數的資料型別應一一對應,且每個變數前都需要加&符號。
6.輸入兩個實數(含小數):這裡是兩個l,即為 lf , 這裡要注意,輸入實數採用的是 「%lf 」 而不會 「 %f 」
scanf("%lf%lf
",&r,&h);
7.用const關鍵字宣告常數
constdouble pi = acos(-1.0);
8.要把25輸出為025,可以使用 %03d 即可。
printf("%03d\n
", m);
9.在c99中,double的輸出必須用 %f , 而輸入需要用 %lf
10. 怎麼輸出 \n , 可以 用「\\n」
11.怎麼輸出 %d , 可以用 「%%d」
12. 在定義變數時,最好盡量縮小變數定義的範圍。
13. 浮點數的運算有可能存在誤差。那麼怎麼避免呢?
為了減小誤差的影響,一般改成四捨五入,即 floor(x+0.5)。
14. 浮點運算可能存在誤差。在進行浮點數比較時,應考慮到浮點誤差。
15. 在大多數平台中,int都是32位整數,範圍是 -2147483648 ~ 2147483647 。要注意int型別溢位問題。
16. 要計算只包含加法,減法和乘法的整數表示式除以正整數n的餘數,可以在每步計算之後對n取餘,結果不變。
17. 可以使用time.h和clock()函式獲得程式執行時間。常數clocks_per_sec 和 作業系統,
請不要直接使用clock()的返回值,而應總是除以clock_per_sec。
printf("time used = %.2f\n
", (double)clock()/clocks_per_sec);
18.變數在未賦值之前的值是不確定的。
19. 使用檔案最簡單的方法是使用輸入輸出重定向
freopen("input.txt
","r
", stdin);
freopen(
"output.txt
","w
",stdout);
20.#ifdef 和 #endif 如果怎樣就執行
#define local...intmain()
21.如果要求用檔案輸入輸出,但是禁止使用重定向的方式,可以如下
#include#define inf 100000000intmain()
fprintf(fout,
"%d %d %.3f\n
",min,max,(double)s/n);
fclose(fin);
fclose(fout);
return0;
}
可以看出,先宣告變數 fin 和 fout, 把 scanf 改成 fscanf ,第乙個引數為 fin ;
把 printf 改成 fprintf,第乙個引數為 fout ,最後執行 fclose,關閉兩個檔案。
22.輸出精確到小數點c為的實數。
printf("%.*lf\n
",c,(double)a/(double)b);
而對下面用法,前面的*定義的是總的寬度,後面定義的是輸出個數,分別對應外面的引數m,n
printf("%*.*s\n
",m,n,ch);
23.一維陣列定義
int a[maxn]
24.陣列a可以被宣告在main裡面也可以在外面。只有在外面時,陣列a才可以開的很大;放在main函式裡面,陣列稍大就會異常退出。
25. 陣列不能夠進行賦值操作,如果要從陣列a複製k個元素到陣列b,可以這樣做:
memcpy(b,a,sizeof(int)*k)
當然,如果陣列a和b是浮點型的,複製時要寫成
memcpy(b,a,sizeof(double)*k)
使用memcpy函式,需要包含標頭檔案 string.h。
如果要把陣列a全部複製到陣列b中,可以這樣
memcpy(b,a,sizeof(a))
26. 把陣列清零
memset(a,0,sizeof(a));
27.二維陣列
int a[maxn][maxn];
28. 讀入乙個不含空格、tab和回車符的字串,存入字元陣列s
scanf("%s",s);
它遇到空白字元會停下來。
29.把數字輸入到字元陣列中
sprintf(buf, "%d%d%d%d%d
",abc,de,x,y,z);
30.判斷buf中的指定位置的字元是否包含在字元陣列s中,如果不包含則為null
if(strchr(s,buf[i])==null) ok = 0;
31.在乙個字串中查詢單個字元: strchr
32. strlen(s) 返回的是結束標記之前的字元個數。
33. 由於字串的本質是陣列,它也不是一等公民,只能用strcpy(a,b),strcmp(a,b), strcat(a,b)來執行賦值,比較,和連線操作。
34. 對於由空格的字串輸入,可以使用 fgetc(fin), 它讀取乙個開啟的檔案 fin,讀取乙個字元,然後返回乙個 int值。
如果要從標準輸入讀取乙個字元,可以用getchar,它等價於 fgetc(stdin)。
第二種方法是使用 fgets(buf, maxn,fin) 讀取完整的一行。
fgets(buf,maxn,fin) 將讀取完整的一行放在字元陣列 buf 中。應該保證 buf 能夠存放下檔案的一行內容。
fgets的標準輸入版 gets , gets沒有指明讀取的最大字元數。
gets已經被廢除了。
c語言中的 gets(s) 存在緩衝區溢位漏洞,不推薦使用。
while((c=getchar()) !=eof)
35. 常量陣列
char s = "1234567890
"
36.找字元在常量陣列中的位置
while((c=getchar()) !=eof )
37. isalpha 判斷字元是否是字母,類似的 isdigit , isprint 等,都是定義在標頭檔案 ctype.h
而 toupper, tolower 等可以用來轉換大小寫。
C 基礎系列
c 基礎系列 net framework平台體系結構 c 基礎系列 棧和託管堆 值型別和引用型別 裝箱和拆箱 c 基礎系列 覆蓋與過載 override overload c 基礎系列 抽象方法和虛方法的區別 c 基礎系列 深入剖析c 的多型 c 基礎系列 委託和事件 c 基礎系列 委託模型和事件模...
C 基礎入門系列 一 基本語法
1.1 基本型別 基本型別可以使用乙個或多個型別修飾符進行修飾 include using namespace std intmain 1.2 typedef 重新定義型別名 作用 可以使用 typedef 為乙個已有的型別取乙個新的名字。下面是使用 typedef 定義乙個新型別的語法 inclu...
C 基礎系列 C 中委託與事件 一
我們都知道,c 中有 介面 這個概念,所謂的 介面 就是定義一套標準,然後由實現類來具體實現其中的方法,所以說 介面,是一組類的抽象 同樣道理,我們可以將 委託 理解為 方法的抽象 也就是說定義乙個方法的模板,至於這個方法具體是怎麼樣的,就由方法自己去實現。我們知道介面的最大好處就是可以實現多型,同...