C語言基礎

2022-08-31 02:24:08 字數 3553 閱讀 2427

進製轉換:

十進位制轉二進位制:

求餘法:用2對資料求餘,然後再對商繼續求餘,直到商為0結束,過程中產生的餘數就是該資料的二進位制(逆序)。

求權法:資料 - 2^(n-1) 如果可以減 第n位就是1,否則是0。

練習1:輸入乙個正整數m,顯示該資料的n(>=2)進製,超過10的用字母顯示。

二進位制轉十進位制:每位的2^(n-1) 求和

10101100 128+32+8+4 172

注意:二進位制資料轉換成八或十六進製制是為了方便記錄二進位制資料。

二進位制轉八進位制:三位二進位制對應乙個八進位制。

二進位制 1 010 110 010 101 100

八進位制 1 2 6 2 5 4

十進位制 44204

二進位制轉十六進製制:由於計算機的發展八進位制不能滿足需要,因此引入十六進製制來記錄二進位制。

四位二進位制對應乙個十六進製制。

二進位制 1010 1100 1010 1100

十六進製制 a c a c

十進位制 44204

在c**中:以0開頭的是八進位制資料,以0x開頭的是十六進製制資料。

%x 以十六進製制形式顯示資料

%o 以八進位制形式顯示資料

原碼、反碼、補碼:

補碼:資料在記憶體儲存的二進位制。

正數的原碼就是補碼。

負數的補碼:

1、絕對值轉換成二進位制得到原碼

2、原碼按位求反得到反碼

3、反碼+1得到補碼

-127

01111111 原碼

10000000 反碼

10000001 補碼

補碼轉換成資料:

無符號補碼直接轉換成十進位制。

有符號最高位是0,說明是正數,也直接轉換成十進位制。

有符號且最高位是1:

1、補碼-1得到反碼

2、反碼按位求反得到原碼

3、原碼轉換成10進製加負號

11111111 補碼 有符號

11111110 反碼

00000001 原碼

-1注意:計算機中的資料都是有型別(儲存空間是固定的)

位運算子:

a & b 按位相與

01011010 0x5a

11000011 0xc3

--------

01000010 0x42

a | b 按位或

01011010 0x5a

11000011 0xc3

--------

11011011 0xdb

~a 按位求反

01011010 0x5a

10100101 0xa5

a ^ b

01011010 0x5a

11000011 0xc3

--------

10011001 0x99

a << n 把a補碼左移n位,左邊的丟棄,右邊補0

01011010 << 4

10100000

a >> n 把a補碼右移n位,右邊的丟棄,左邊補符號位

11000011 >> 4

11111100

練習2:輸入乙個整數,把它的4~7位設定1010,其它位置不變。

n & ~(f<<4) | 0xa0

練習3:輸入兩個整數,把a的4~7位設定為b的3~6位,其它位置不變。

a & ~(0xf0) | (b << 1 & 0xf0)

函式:一段具有某項功能的**,是c語言中管理**的單位。

把**封裝成乙個個函式,可以方便的管理和呼叫**。

函式分類:

標準庫函式:c語言標準為委員會為c語言以函式形式提供的一些基礎功能,被封裝在libc.so庫中,使用時需要包含標頭檔案,函式名(引數)即可以呼叫。

int isalnum(int c);

功能:當以是數字、字母字元返回真

int isalpha(int c);

功能:當c是字母時返回真

int isdigit(int c);

功能:當c是數字字元時返回真

int islower(int c);

功能:當c是小寫字母時返回真

int isupper(int c);

功能:當c是大寫字母時返回真

int abs(int num);

功能:返回num的絕對值

以下函式被封裝在libm.so庫檔案中。

double sqrt(double x);

功能:返回x的平方根

double pow(double x, double y);

功能:返回x的y次方

double floor(double arg);

功能:返回小於等於arg的最大整數

double ceil( double num );

功能:返回大於等於num的最小整數

double fabs(double arg);

功能:返回arg的給對值

void srand(unsigned seed);

功能:設定隨機種子

int rand(void);

功能:返回乙個隨機數

練習4:獲取10個[100,1001)的隨機數。

rand()%(b-a)+a

練習5:隨機出一組雙色球彩票號。

6紅:1~33

1藍:1~16

time_t time( time_t *time);

功能:返回自19701月1日 00:00:00 到當前時間過了多少秒。

int system(const char *command);

功能:呼叫系統命令

系統函式:是作業系統以函式介面形式提供的一功能,這些功能包括:

記憶體管理、訊號處理、檔案io、檔案管理、 程序管理、程序通訊、執行緒管理、執行緒同步、網路通訊。

第三庫函式:一些開源或收費的第三**。

glog 日誌記錄

json 序列化反序列化

md5 驗證

xml 配置檔案解析

自定義函式:為了更好的管理**、減少冗餘把**封裝成函式。

函式宣告:函式宣告的目的是為了告訴其它**函式的呼叫格式。

返回值型別 函式名(型別1 變數名1,型別2 變數名2,...);

1、c語言中函式名一般全部小寫,用下劃線分隔。

2、如果不需要引數建議寫void,不要空著。

3、如果不需要返回值就寫void。

隱式宣告:當呼叫函式時沒有定義,編譯器會猜測函式的格式,引數列表會根據呼叫時提供的資料(實參)猜測,返回值會猜成int型別。

函式定義:

返回值型別 函式名(型別1 變數名1,型別2 變數名2,...)

函式呼叫:函式名(實參);

返回值會放在呼叫的位置,可以立即顯示,也可以用變數記錄下來。

作業:1、實現乙個函式,判斷整數是否是素數,呼叫它顯示出100~1000之間的所有素數。

2、輸入兩個日期,計算這兩個日期相隔多少天。

3、實現乙個函式,判斷整數是否是回文數,呼叫它顯示出 1億~10億 以內所有的回文數。

4、計算出100的階乘。

5、輸出乙個整數,顯示出它的補碼。

c 語言基礎

三個訪問描述符 public private 和protected 都可以修飾類的資料成員和成員函式 public 可以可以被任何訪問,private 只能被該類的公,私成員函式,該類的友元函式或者友元類的成員函式訪問。protected 只能被該類的公,私成員函式和該類的派生類訪問。c 中除了,和...

c語言基礎

1.問題描述 從鍵盤輸入三個整數,分別存入x,y,z三個整型變數中,計算並輸出三個數的和以及平均值。輸入形式 從鍵盤輸入三個整數,整數之間以空格隔開。輸出形式 在螢幕上分兩行顯示結果 第一行為三個數的和,整數形式輸出 第二行為三個數的平均值,浮點數形式輸出,小數點後保留兩位小數。輸入樣例 3 2 3...

C語言基礎

找最大最小整數 2.問題描述 編寫乙個程式,使用者輸入若干整數,試找出其中的最大數和最小數。輸入形式 使用者在第一行待輸入資料個數,在第二行輸入資料。輸出形式 程式在下一行輸出資料的最大值和最小值 樣例輸入 589 62 96 74 52 樣例輸出 96 52 樣例說明 使用者第一次輸入的為資料個數...