C語言筆記一(概念)
C語言結構特點
一,概念
- C語言識別符號只能是字母、數字、下劃線組成,且必須以字母或下劃線作為首字母。
- 庫函式是C語言本身就存在的函式,如格式化輸入函式scanf,格式化輸出函式printf,還有putchar等等,這些函式不需要定義,可以直接呼叫
- C語言是由函式構成的,函式是C語言的基本單位,一個C語言總是從主函式開始執行的,一個函式是由兩部分組成:函式的首部和函式體。
- C語言可以有零個或者若干個子函式。這些子函式可以是庫函式也可以是自定義函式
- 一個C語言源程式可以由一個或多個原始檔組成。
- 每個原始檔可以由一個或多個函式組成。
- 源程式有且僅有一個main函式,即主函式。
- 演算法:解決問題的方法和步驟。
二、註釋
- 單行註釋 //…
- 多行註釋
/*…*/
(/和*之間不能有空隔)
三.用當型求12345的乘積
四、進位制
-
十進位制:由0~9的數字組成。
-
八進位制:以0開頭,由0~7的數字序列構成,如0123表示八進位制,換成十進位制:
1x82 +2x81 +3x80 =83
-
十六進位制:以0x或0X開頭(這裡0是阿拉伯數字零),可以由數字0~9和字母A ~F或a ~f構成,A ~F字母表示10 ~15。例如,0x2F表示
2x161 +15x160 =47 即十進位制的47
八進位制 0123 | 十進位制1x82 +2x81 +3x80 =83 |
---|---|
十六進位制0x2F |
十進位制2x161 +15x160 =47 |
若要在函式中輸出轉換進位制,需要在定義時加反斜槓\ | | 如char a=’\x41’ 這裡x41是0x41即十六進位制,0要去掉 ,此時若putchar(a) 則是輸出十進位制的A |
五、指數
-
它由數字0~9、字母e或E和+、—組成,它的形式為 aEn,意為aX10n,其中a為十進位制整數或小數,n為十進位制整數。例如 2.5e3,表示2.5 x103,—3.5e—2 表示 —3.5x10—2。
-
注意:以指數形式表示實數時,a和n不能省**,n必須為整數。如:e5、 3e2.5都是不合法的。
-
以十進位制小數形式表示實數時,整數和小數部分可省略其中一個。如: .35
2. 在ASCLL中小寫字母比大寫字母多32,如a—A=32。
字串常量
是由一對雙引號括起來的字元序列,字串中可以包含任何字元、漢子等等,字串在機記憶體儲時,所佔位元組數等於字串常量中的字元個數加1,那加的1個位元組便是用於存放‘\0’(空字元,ASCLL碼為0),它是字串的結束標誌,例如“wei”在記憶體中儲存形式是:wei\0
,共佔了四個位元組。(字串常量可以是
O個或者多個
)符號常量
,即放在main函式上面的常量
,格式為:#define 識別符號 常量
#include <stdio.h> |
|
---|---|
#define PI 3.14 |
定義一個圓周率的符合常量 |
int main() |
這個符合常量在main函式之前 |
**優點:**如果這個常量在程式中多次出現,需要更改時,只需在符合常量這裡改,一改全改,**** |
– |
六、絕對值函式abs、fabs、labs
int abs(int x) |
適用於整數 |
---|---|
double fabs(double x) |
適用於浮點數 |
– | – |
long labs(long x) |
適用於長整型數 |
|abs(—10)等於10 | | fabs(—5.6)等於5.6 | | labs(—9999)等於9999 |
七、exp和pow函式
double exp (double x) |
表示e為底。引數為X的指數值為 ex |
---|---|
double pow (double x,double y) |
表示返回x的次冪X^y^ |
exp(2.0)等於e^2^ =7.389056 |
pow(2.0 ,3.0 )等於2^3^ =8.0 |
八、使用fflush (stdin); 來清除輸入緩衝區的內容。
int i;
char c; scanf (“%d”,&i);
scanf(“%c”,&c);
printf(“i=%d,c=%d”,i,c);
return o;
這個程式執行時,正常應該輸入兩個內容,第一個是整數,回車確認後,再輸入第二個內容。然而實際是,如果我們輸入100,
然後按回車鍵確認後,程式隨機結束執行,程式預設把回車鍵當成了一個輸入。打印出i=100,c=10。
出現c=10是因為第二個scanf是輸入%c,因為ASCll碼值10就是回車。為了避免這樣的情況,
當有多個輸入scanf時,可用fflush (stdin);來清除緩衝區的內容。
int i;
char c;
scanf (“%d”,&i);
fflush (stdin); //消除緩衝區內容
scanf(“%c”,&c);
printf(“i=%d,c=%d”,i,c);
return o;
九、字元輸入函式getchar。
#include<stdio.h>
int main()
{
char ch;
ch=getchar(); //getchar函式得到輸入字元,並賦值給字元變數ch
putchar(ch); //輸出字元
return 0;
}
十、算術運算子*、/、%、+、—
- 用%求餘時,兩個數都必須是整型資料,如下:
8%2 | 表示式的值為0 |
---|---|
5%3 | 表示式的值為2 |
5.5%3 | 編譯錯誤,運算元不能為實數,必須為整型資料 |
—5%4 | 表示式的值為—1還是1,具體看編譯器。有的編譯器顯示為1 |
- 整數除:兩個整數相除後的結果為商的整數部分,小數部分被捨棄,沒有進行四捨五入的操作。如:1/2的值為0,而不是0.5;再比如15/4的值為3。
- 實數除:只要相除兩個數中有一個為實數,則結果是實數。如:1.0/2=0.5, 15/4.0=3.75
- 資料型別轉換原則:低資料型別向高資料型別轉換。
十一、隨機函式srand和rand
- 注意:使用隨機函式時,必須在標頭檔案中包含宣告
#include<stdlib.h>
如圖1:
- srand函式以時間作為隨機數種子,每次重新整理到的數都會不同,現在是2,2,10,下次重新整理可能會是別的三個數。[提示:在使用srand函式時,若以時間作為隨機數種子,則需要頭部包含宣告
#include <time.h>
] - 如圖2:
- srand函式以數字1或者其他數字作為隨機數種子,每次儲存重新整理到的數都是一樣的。
十二、型別轉換
- (double)i——————————表示將i的值轉換成double型。
- (int)(x+y)————————將x+y的值轉換成int型。
- (double)1/2————————(double)江湖整數1轉成1.0(雙精度),1.0/2值為0.5。
- 整數除:若兩個數都是整數,則商為整數部分,如1/2=0而不是0.5。
- 實數除:兩個數其中一個為實數,則結果為實數,如1.0/2=0.5
十三、