c語言中提供了一組標準函式,用來解決常見問題
每個標準函式有自己的名字
為了使用這個標準函式需要把 stdio.h 檔案的內容合併到原始檔中
為了使用標準函式需要編寫函式呼叫語句
\n 表示換行,可以把後面的內容列印在下一行中
可以採用佔位符列印編寫程式的時候還不知道的數字
%d 佔位符和整數型別字配對
佔位符的個數必須和數字的個數一致
程式的所有相關資料都被放置在記憶體裡
變數對應了記憶體中的某個儲存位置,通過變數可以操作對應的儲存位置中的數字
為了使用變數必須首先在程式中使用變數宣告語句來宣告它
在變數宣告語句中要指定變數的名稱(不同變數的名稱不同)
乙個變數只能用來儲存一種型別的資料,在變數宣告語句中還要指定對應資料的型別
賦值語句用來向變數對應的儲存位置中放置資料
使用賦值操作符 = 編寫賦值語句
賦值操作符左邊必須是乙個左值,(通常是變數)
賦值操作符右邊必須是乙個可以當做數字使用的東西
賦值語句中左右兩個的東西如果型別不一致則結果不是字面所描述的結果
在程式中把變數直接當數字使用就可以從變數中拿出數字
變數只要沒有被賦值則裡面的內容不會改變
變數名在程式中既可以當變數使用也可以當數字使用,有環境決定
同型別的變數可以使用一條變數宣告語句宣告
變數宣告的時候可以直接賦值,這叫做變數的初始化
所有變數都應該初始化
變數的一種常見的使用方式就是使用乙個變數表示一組數字
程式設計思路:
1.找到解決問題的過程中涉及的所有數字
2.對所有這些數字進行分組(可以使用乙個變數表示的所有數字分成一組)
3.為每組數字宣告乙個變數
4.使用程式設計語句推動所有變數按照各自的規律變化
scanf 標準函式可以從鍵盤讀乙個數字並
為了使用 scanf 標準函式需要包含 stdio.h 檔案
記憶體中的每個儲存位置都有乙個專門的編號(位址)
可以使用儲存位置的位址來表示儲存位置
可以在變數名的前面加上符號 & 來獲得變數對應儲存位置的位址
scanf 標準函式要求必須使用儲存位置的位址來表示這個儲存位置
要使用佔位符表示儲存位置所能儲存的資料型別
scanf 標準函式可以一次讀多個資料
scanf 標準函式呼叫語句中雙引號的內容是對使用者輸入格式的要求
輸入緩衝區的工作原理可能導致一次錯誤輸入造成後面的所有讀取工作失敗。。。
使用如下兩條語句可以把輸入緩衝區中的錯誤資料丟棄
scanf("%*[^\n]");
scanf("%*c");112
1231234
12345
前10個列印在螢幕上
1 1 2 3 5 8 13 21 ...
編寫程式計算使用者給定數字的相反數
練習:矩形長寬使用者給定,求面積
不同資料型別的數字可能有重疊
char 是一種字元型別 由256個不同的字元構成,例如 'a' , '+' , '?'
每個字元資料有乙個對應的整數數字(不同字元對應的數字不同)
每個字元資料有兩個不同的身份,分別是字元和數字
ascii 碼表列出字元和數字之間的對應關係
所有字元資料等分成兩組,每組 128 個
其中一組兩個身份間的對應關係在所有計算機上都一樣
這組字元的數字身份是從 0 到 127
另外一組兩個身份之間的對應關係在不同計算機上不一樣
這組字元的數字身份可以是 -1 到 -128 也可能是 128 到 255
無符號字元型別也是一種資料型別
無符號字元型別的名稱是 unsigned char
這個型別同樣由 256 個字元構成,這些字元的數字身份固定從 0 到 255
ascii 碼表中所有小寫英文本元連續排列,'a' 的數字身份最小,'z' 的數字身份最大
大寫英文本元之間同樣符合以上規律
阿拉伯數字字元之間也符合上述規律
\r回車符
\n 換行符
\t製表符 (後面的對齊)
\\代表 \
\'代表 '
\"代表 "
abcd \r ef 輸出結果 efcd \r 輸出移動到開始,覆蓋了 ab
短整數型別是一種資料型別
短整數型別一共包括 65536 個不同的整數,範圍從 -32768 到 326767
無符號短整數型別用 unsigned short 表示 範圍從0 到 65535
長整數型別用 long 或 long int 表示 一共包含 2 的 32 次方個不同的整數,
範圍從 -2 的 32 次方到 2 的 31次方減一
無符號長整數型別用 unsigned long 或 unsigned long int 表示
範圍從 0 到 2 的 32 次方減一
在我們使用的計算機環境下整數型別(int)和長整數型別完全一樣
以上所有整數型別的數字範圍是逐漸擴大的
浮點型別用來表示帶小數點的型別,分為單精度浮點數和雙精度浮點數
單精度浮點型別用 float 表示
雙精度浮點型別用 double 表示
程式中在整數數字後面加 u 表示這個數字的型別是無符號整數型別,例如 8u
在浮點數後面加 f 表示這個數字的型別是 float, 例如 5.8f
程式中沒有特別說明型別的浮點數預設型別是 double
資料型別和佔位符之間的對應關係
char -- %c (字元身份) 或 %hhd (數字身份)
unsigned char -- %c 或 %hhu
short -- %hd
unsigned short -- %hu
long -- %ld
unsigned long -- %lu
int -- %d
unsigned int -- %u
float -- %f (保留小數點後面無效的0) 或 %g (不保留)
double -- %lf 或 %lg (區別同上)
%nd 要求列印結果必須佔 n 個位置
%-nd 要求列印結果佔 n 個位置,並且從最左邊的位置開始列印
%0nd 用字元 0 填充空的位置
%n.mf 表示整個數字佔 n 個位置,其中小數點後面的部分佔 m 個位置
不同型別之間的差異由它們在記憶體中所佔空間的大小來決定
記憶體中所有儲存位置的大小是一樣的,我們把他們稱為位元組
乙個變數所對應的儲存位置是由多個連續的位元組構成的
每個位元組有自己的位址,不同位元組位址不同
所有位址從 0 開始遞增變數的位址就是它所對應的位元組中最前邊那個位元組的位址
sizeof 關鍵字可以用來計算乙個變數或乙個資料型別佔多少個位元組
printf("sizeof(char)是%d",sizeof(char));
char (unsigned char) -- 1 個位元組
short(unsigned short) -- 2 個位元組
long(unsigned long) -- 4 個位元組
int (unsigned int) -- 4 個位元組
float -- 4 個位元組
double -- 8 個位元組
sizeof 語句可以計算乙個公式結果的大小 sizeof(4 + 6) 結果為4 int型,佔4位
sizeof 語句中對變數所做的修改都不會發生 sizeof(char = 5) char 不會被賦值為5
使用一組 0 或 1 表示數字的方法叫做二進位制
計算機內部的所有數字都是採用二進位制表示的
二進位制和十進位制只是表示數字的不同方式,
任何數字既可以用二進位制表示也可以用十進位制表示
二進位制數字中每個位置有個編號,最右邊的位置編號是 0,向左依次遞增
二進位制數字中某個數字上的 1 所對應的十進位制描述方式是 2 的位置編號次方
二進位制數字中相鄰的兩個 1 所代表的數字之間有倍數關係
二進位制轉換十進位制的方法 :
對二進位制數字的每個數字單獨轉換,最後把所有轉換結果求和
十進位制轉二進位制的方法
對十進位制數字除以二取餘倒著寫就可以得到對應的二進位制表示方式
計算機內部採用二進位制補碼記錄數字
所有非負數的原碼和補碼是一致的
每個位元組可以採用八個二進位制數字來表示
八進位制和十六進製制是二進位制的兩種簡化方法
把乙個數字的二進位制表示方式從右向左每三個數字分成一組,每一組使用乙個 0 到 7 之間的數字替換就得到了八進位制
八進位制中每個數字只有八種不同的可能
可以直接在程式中使用八進位制的方式表示數字,這時需要在數字的前邊加 0
八進位制對應的佔位符是 %o
把二進位制表現形式從右向左每四個數字分成一組,每組使用 0 到 9 和 a 到 f 之間的內容表示就得到了十六進製制
可以在程式中使用十六進製制方式表示數字,必須在前面加 0x
%x 和 %x 都可以作為十六進製制的佔位符使用,
%x 做佔位符的時候數字中的所有字元都是小寫的,%x 則都是大寫的
練習
把0到255之間的數轉化為二進位制
把使用者給定的秒轉換為如下格式列印 hh:mm:ss
C語言基本知識3
一 程式設計規範 軟體程式設計規範作用 增強程式可讀性 增強 復用性 增強 維護性 軟體程式設計規範總則 排版注釋 識別符號命名 二 函式引數順序點 函式呼叫過程中,變數值發生變化的位置 點 稱為函式引數 順序點 順序點一般位於 1 語句結束時值改變 k 2 k k k 2 等運算子 3 函式引數傳...
C 基本知識
內聯函式 在c 98的標準下為63個關鍵字 1.普通的命名空間 namespace n1 n1為命名空間的名稱 2.命名空間可以巢狀 namespace n2 namespace n3 3.同乙個工程中允許存在多個相同名稱的命名空間,編譯器最後會合成同乙個命名空間中。1.加命名空間名稱及作用域限定符...
c 基本知識
1.類 包含某一物體的基本屬性的抽象。2.物件 具體指某乙個物體。實實在在存在的東西。3.建構函式 負責類建立物件的函式。如果類沒有宣告建構函式,c 編譯器會提供預設的無參的建構函式。這個函式只負責建立物件,不負責物件初始化工作。4.析構函式 負責釋放物件,記憶體的 5.變數訪問修飾符 public...