C语言程序设计基础
C語言程序設計基礎
- 大綱
- 第一章 C語言程序設計概述
- 第一節 C語言程序設計基礎知識
- 1.1 C程序設計語言簡介
- 1.2 C程序設計語言(高級語言)
- 1.3 C語言程序結構
- 1.4 C語言程序的運行過程與運行環境
- 1.5 C語言程序設計過程
- 第二節 C語言基礎語法概念
- 2.1 數據類型
- 2.2 常量/變量
- 2.3 基本運算
- 2.4 數據轉換
- 第三節 C語言的基礎語法和算法基礎
- 3.1 C語言基礎語法
- 3.2 C語言庫函數
- 3.3 數據的輸入
- 3.4 數據的輸出
- 3.5 宏定義
- 3.6 返回語句
- 第四節 章存儲形式
- 1.C 語言最大的特點,是可以直接操作內存
- 第二章 程序結構
- 2.1 結構化程序:
- 2.2 順序結構:
- 2.3 選擇結構:
- 2.3.1 if 選擇結構
- 2.3.2 switch 多分支語句結構
- 2.4 循環結構:while do-while for(計數控制循環)
- 2.5 流程轉移控制語句
- 2.6 小結
- 第三章 數組
- 第四章 函數
- 第五章 模塊化程序設計
- 第六章 指針
- 第七章 結構體和共用體
- 第八章 文件
- 第九章 U b u n t u 和Linux 基礎
- 第十章 小結
大綱
第一章 C語言程序設計概述
第一節 C語言程序設計基礎知識
1.1 C程序設計語言簡介
?程序設計語言是用于編寫計算機程序的語言。
????程序設計語言又分為以下幾種:
??????機器語言 (由二進制 0、1組成)
??????匯編語言 (機器指令的符號化,類似于英語單詞標記某些字符)
??????高級語言 (面向過程C、面向對象C++、Java、Visual Basic)
??????非過程化語言
1.2 C程序設計語言(高級語言)
?(原型)A語言(ALGOL 60語言)
??????1963年劍橋大學將ALGOL 60語言發展為CPL
??????1967年劍橋大學 Matin Richards對CPL進行簡化產生 BCPL
??????1970年美國貝爾實驗室Ken Thompson 將 BCPL 進行修改,取名為B語言
??????1973年美國貝爾實驗室Dennis M.Ritchie 以B語言為基礎創造出C語言
??????1990年,ISO接受了C為ISO C的標準( ISO9899-1990 )
?C語言的特點:
??????高效、便捷、靈活、功能豐富、表達力強、移植性好
??????不需要了解CPU型號,也可以進行程序編制
1.3 C語言程序結構
#include<stdio.h> // #include< >表示預處理指令; stdio.h表示頭文件int main( ) // int main( ){ } 表示;main(主)函數,程序總是從main開始執行{ ? /* ... */ 用于注釋說明。 ? printf("Hello , C program! \n"); // { 函數 return 0返回語句 // 體 } return 0;}1.4 C語言程序的運行過程與運行環境
??????編輯: 源文件 1.c
??????編譯: 源文件 轉換 目標文件 1.obj
??????鏈接: 鏈接目標文件 轉換 可執行文件 1.exe
??????運行: 可執行文件 執行
??????調試: 可執行文件 調試
???.cpp 是 C++語言的源文件,而 .c 是 C語言的源文件,
???因為C++兼容C語言,所有可以用.cpp代替.c(不可逆)
1.5 C語言程序設計過程
程序設計組成部分:①確定數據結構;②確定算法;③編碼;④重新調試;⑤整理并提交報告。?算法:為解決特定問題,采取的確定且有限的步驟。
?算法具有以下特點:
??????????????????①有窮性; //步驟有限
??????????????????②確定性;//指令含義確切,有唯一確定含義
??????????????????③可行性; //操作可以依次有限次執行實現
??????????????????④有零個或多個輸入; //scanf 輸入次數大于等于再0
??????????????????⑤有一個或多個輸出; //printf 輸出次數大于等于1
第二節 C語言基礎語法概念
2.1 數據類型
----基本類型:不可再分為其他類型。(包含數值型、字符型)
----構造類型:由若干基本類型組成的新類型,可分解還原為若干基本類型(包含數組型、結構體型、共同體型、)
----指針類型:表述變量地址
----空 類型:void 標識返回值為空
----布爾類型:標識正確和錯誤,一般0標識錯誤,非0為正確
2.2 常量/變量
??????常量:在程序的運行過程中,其值不允許改變的數據對象,稱為常量。
??????整型常量:
????????????十進制整數:以正負號開頭,后接0~9。
????????????八進制整數:以正負號開頭,第一位數字為0,后接0~7。
????????????十六進制整數:以正負號開頭,前兩位接0x,后接09以及af(10~15)
??????實型常量:
????????????小數形式:有小數點。
????????????指數形:科學計數法表示,分為指數部分(E或e后接一個整數)和位數部分(整數或者小數)
??????字符型常量:
????????????符常量:‘a’ ‘A’ (字符常量占一個字節,’’,不屬于字符的一部分,A,a不同,,區分大小寫 'a’對應一個ascii值)
????????????字符串常量:“hello” (長度為5(n),占6(n+1)個字節,最后一個字節存放NULL字符,稱為空字符。)
??????變量:在程序的運行過程中,其值均允許改變的數據對象,稱為變量。
????????????變量值:存儲單元存放的數據。(變量值可以是整數、實數、字符)
????????????變量名:給變量值分配內存地址時的地址符號,一般取合法標識符作為變量名,兩者在一定程度上可以替代。
????????????標識符:由AZ、az、0~9、_ 組成,必須以字母和下滑線開頭,數字不能開頭,也不能有空格,不能包含運算符或者關鍵字。
????????????變量的使用:變量名一般取合法標識符作為變量名。定義變量可以在main函數或函數外或者形參定義。且定義是要求說明數據類型。
????????????變量初始化在C語言中很有必要,可以是在定義后,賦個變量一個值 。
32個關鍵字:
??????auto break case char const continue default
??????do double else enum extern float for
??????goto if int long register return short
??????signed static sizof struct switch typedef union
??????unsigned void volatile while
2.3 基本運算
?優先級:
??????其他運算符()、[ ]、. 、->
??????邏輯運算符 &&、|| 、!
??????算數運算符 +、- 、* 、/ 、%、++ 、–
??????關系運算符 > 、< 、== 、>= 、<= 、!=
??????賦值運算符 = 、+= 、-= 、*= 、%= 、&= 、|= 、^= 、>>= 、<<=
2.3.1關系運算
??????關系運算符:>、>=、<、<=、==、!=(前4中同優先級,后兩種同優先級)
2.3.2邏輯運算
??????邏輯運算符:&&、|| 、!
2.3.3位運算
??????位操作運算符:& 、| 、~ 、^ 、<< 、>>
2.3.4賦值運算
??????賦值運算符: = 、+= 、-= 、= 、%= 、&= 、|= 、^= 、>>= 、<<=
2.3.5算數運算符
??????算數運算符: +、- 、 、/ 、%、++ 、–
2…3.6其他運算
??????其他運算符:()、[ ]、. 、->
2.3.7條件運算
??????條件運算符:?、 :
2.3.8三目運算
??????三目運算符:?: eg:x= a>b? a:b( ); (比較a和b誰大,如果a大 ,執行 把a 給到x ,否則,把b給到x)
2.3.9特殊運算
??????特殊運算符:sizeof //計算數據大小
???????: //三目運算符
??????, //逗號運算符,多個變量使用
??????& 取址符 * 取值符 解引用 //地址運算符
??????-> . 結構體使用 -> 訪問結構體里的數據 . 訪問結構體數據的地址
2.4 數據轉換
2.4.1自動數據轉換
????????????將占空間少的數據(整型)轉換 成占空間多的數據(實型)(簡單順暢,無沖突)
2.4.2強制數據轉換
????????????將占空間多的數據(實型)轉換 成占空間少的數據(整型)(只保留整數小數棄掉,不是四舍五入)
????????????整型和整型運算結果取整型
????????????整型和實型運算結果一般為實型
????????????實型和實型運算,結果也為實型
第三節 C語言的基礎語法和算法基礎
3.1 C語言基礎語法
??????預處理指令 #include< >
??????頭文件 stdio.h (庫文件)
??????主函數 main( )
??????輸入語句 scanf(" %d,%d “,&a,&b);
??????輸出語句 printf(”%d+%d=%d",a,b,sum);
??????返回語句 return 0;
??????連續輸入需要加英文逗號隔開。
3.2 C語言庫函數
????????????C語言庫函數是把自定義函數放到庫里,是別人把一些常用到的函數編完放到一個文件
里,供程序員使用。程序員用的時候把它所在的文件名用#include<>加到里面就可以了(尖括號內填寫文件名),例如#include<math.h>。
3.3 數據的輸入
????????????輸入:這里的輸入指的是從鍵盤等外部設備輸入,C語言本身沒有輸入功能,需要借用C語言標準庫函數來實現。調用:#include<stdio.h>或#include"stdio.h"
scanf("%d",&number); 1. 控制串中的非空白符; 2. 格式串中可以修改控制域寬; 3. 可以輸入實型數據; 4. scanf格式串中的其他用法。5. 如果一次性輸入多個同種類型的數據,要注意使用符號分隔開6. scanf("%d, %d",&x,&y); scanf("可用逗號或者空格",必須用逗號); 分號內是啥就是啥7. printf("%d, %d",x,y); printf("可用逗號或者空格",必須用逗號); 分號內是啥就是啥??????格式轉換說明符用法
????????????%d或%i 輸出十進制整數
????????????%o 輸出八進制整數
????????????%x 輸出十六進制整數
????????????%c 輸出一個字符,空白字符(包含空格、回車、制表符)也作為有效字符輸出
????????????%s 輸出字符串,遇到的第一個空白字符(包含空格、回車、制表符)時結束
????????????%f或%e 輸出浮點數,或科學計數法,以小數或指數形式輸入均可
????????????%% 輸入一個白分號%
????????????%p 輸入指針(當前指針變量里面儲存地址)
3.4 數據的輸出
????????????輸出:這里的輸出指的是從顯示屏等外部設備輸出,C語言本身沒有輸出功能,需要借用C語言標準庫函數來實現。調用:#include<stdio.h>或#include"stdio.h"
printf("*******%d",number); 1. 字符寬度控制; 2. 精度控制; 3. L或者h; 4. 顯示位置默認為右看齊,若加上符號(-),則認為左對齊。??????格式轉換說明符用法
????????????%d或%i 輸出十進制整數
????????????%o 輸出八進制整數
????????????%x 輸出十六進制整數
????????????%c 輸出一個字符,空白字符(包含空格、回車、制表符)也作為有效字符輸出
????????????%s 輸出字符串,遇到的第一個空白字符(包含空格、回車、制表符)時結束
????????????%f或%e 輸出浮點數,或科學計數法,以小數或指數形式輸入均可
????????????%% 輸入一個白分號%
????????????%p 輸入指針(當前指針變量里面儲存地址)
3.5 宏定義
????????????在 C 語言中,允許用一個標識符來表示一個字符串,稱為:”宏“。
????????????宏分為 有參數和無參數兩種。
????????????無參宏的宏名后不帶參數,其定義的一般形式為:
????????????#define 標識符 字符串 (用“標識符”替代“字符串”)
? #define M (xyyz) (定義宏定義后,程序中所有的xyz都可以用M代替)
????????????#表示這是一條預處理命令(在C語言中凡是以#開頭的均為預處理命令)
3.6 返回語句
return 0;第四節 章存儲形式
1.C 語言最大的特點,是可以直接操作內存
????????????1.數據需要一定的內存空間來保存,位置隨機性
????????????2.所有使用到的內存空間,必須得經過申請,如果使用未經申請的內存就會出現內存錯誤 ,段錯誤。
數據的 原碼 反碼 補碼
char a = 5;//0000 0101 原碼
a = -5;//1000 0101 原碼
反碼(正數 反碼 = 原碼)
5 0000 0101
-5 1111 1010
數據存儲時,就是以補碼形式存儲,方便對于負數操作
-128 ---- 127
第二章 程序結構
2.1 結構化程序:
順序結構
選擇結構
循環結構
——————————————————————————
2.2 順序結構:
? ? ? ? ? 順序結構: 從上往下依次循環執行。
2.3 選擇結構:
2.3.1 if 選擇結構
單分支選擇if(){語句;}雙分支選擇if(){語句1;}else{語句2;}多分支(嵌套)選擇if(){語句1;}else if(){語句2;}else{語句3;}2.3.2 switch 多分支語句結構
//switch語句允許嵌套
switch(表達式) //switch表達式類型只能是整型或字符型 {case 常量表達式1: 語句1; break; //case后面必須接常量或者常量表達式,且唯一,要加:號case 常量表達式2: 語句2; break;case 常量表達式3: 語句3; break;case 常量表達式4: 語句4; break; //break跳出switch語句,不是跳出case,可要可不要default : 語句5; //最多只能有一個default,一般放在末尾}2.4 循環結構:while do-while for(計數控制循環)
while(表達式) {語句; }do {語句; }while(表達式);for(表達式1;表達式2;表達式3) {語句序列; }2.5 流程轉移控制語句
goto語句 //無條件轉向語句 goto 語句標號;>>>語句標號: 語句; break語句 //switch 中跳出語句 while do while for 提前終止循環 continue語句 //結束“本次”循環,只適用于switch do-while for ,注意區分break return語句 //返回值2.6 小結
模塊化結構:將一個大型程序分成若干個獨立功能模塊(函數),來減輕程序設計的困難程度。第三章 數組
第四章 函數
第五章 模塊化程序設計
第六章 指針
第七章 結構體和共用體
第八章 文件
第九章 U b u n t u 和Linux 基礎
第十章 小結
總結
- 上一篇: oracle 返回表的函数,oracle
- 下一篇: LInux:shell 彩色进度条实现(