第1章C語言概述
1 #include<stdio.h> //編譯預處理命令 2 int factorial (int n); //函數聲明 3 int main(void) //主函數 4 { 5 int n; //變量定義 6 scanf("%d",&n); //輸入一個整數 7 printf("%d\n",factorial(n)); //調用函數計算階乘 8 return 0; 9 } 10 int factorial (int n) //定義計算n!的函數 11 { 12 int i,fact=1; 13 for(i=1;i<=n;i++) //註意i<n與i<=n 14 fact=fact*i; 15 return fact; 16 }
#include<stdio.h> //編譯預處理命令 int factorial (int n); //函數聲明 int main(void) //主函數 { int n; //變量定義 scanf("%d",&n); //輸入一個整數 printf("%d\n",factorial(n)); //調用函數計算階乘 return 0; } int factorial (int n) //定義計算n!的函數 { int i,fact=1; for(i=1;i<=n;i++) //註意i<n與i<=n fact=fact*i; return fact; }
第1章C語言概述
1.1一個C語言程序
【例1-1】求階乘問題。輸入一個正整數n,輸出n!
1.2程序與程序設計語言
程序設計語言提供表示數據與處理數據的功能,要按照語法規則來編寫程序;
1.2.1程序與指令
程序是0、1組成的序列,該指令碼序列能夠被計算機所識別;
1.2.2程序設計語言的功能
1.數據表達
數據類型就是對某些具有共同特點的數據集合的總稱,包括數據類型的定義域及運算操作;
程序設計語言提供基本數據類型以及構造復雜類型(數組、結構等);
基本數據類型:整型、實型、字符型等,兩種主要形式:常量(Constant)和變量(Variable);
可以構造新的具體數據類型:數組(Array)、結構(Structure)、文件(File)、指針(Pointer)等;
2.流程控制(語句級控制)
在結構化程序設計方法中,將復雜程序劃分為若幹個相互獨立的模塊(語句、段程序、函數);
三種基本控制結構:順序、分支(選擇結構)和循環
(1)順序控制結構:按照自然順序執行各個模塊;
(2)分支控制結構:判斷條件是否滿足,選擇執行相應的模塊;
(3)循環控制結構:檢測是否符合條件,重復執行相應的模塊;
3.單位級控制
函數的定義與調用控制:將程序劃分為子程序,由函數實現各個功能,直接調用函數,可以傳遞零個或多個參數,函數被調用的結果將返回給調用函數;
1.2.3程序設計語言的語法
1."單詞"(字符序列組合)
(1)標識符:由字母、數字和下劃線組成,其中第一個字符必須是字母或下劃線;
系統預定義標識符(保留字、關鍵字),主要與數據類型和語句有關;
用戶自定義標識符,包括程序中定義的變量名、數據類型名、函數名和符號常量名;
(2)常量:也有數據類型,如整型常量、實型常量;
(3)運算符:表示對各種數據類型數據對象的運算,有運算優先級;
(4)分隔符:如#、[、]、;、(、)等;
2.C語言的主要語法單位
(1)表達式:由運算符與運算對象的組合,可含多種數據類型的運算符;
(2)變量定義:類型名 變量名; 如 int i;
(3)語句:程序最基本的執行單位,主要有表達式語句、分支語句、循環語句、復合語句四類;
(4)函數定義與調用
a.函數定義:編寫一系列語句來規定其所完成的功能,主要有函數頭和函數體。其中,函數頭包括函數名、函數返回值類型、參數類型,函數體則是一個程序模塊,規定了函數所具有的功能;
b.函數調用:通過傳遞函數的參數並執行函數定義所規定的程序過程,以實現相應功能;
例如:函數max求兩個整數(作為參數)的較大值(作為返回值)
int max(int a,int b) //函數頭:函數類型 函數名(函數參數列表)
{ //函數體開始
int x; //函數中要用到的臨時變量
if(a>b) x=a; //判斷a、b的大小,將x賦值為較大者
else x=b;
return x; //結束函數調用並返回x
} //函數體結束`
(5)輸入與輸出:調用系統庫函數printf()和scanf();
1.2.4程序的編譯與編程環境
1.程序的編譯
由編譯程序(編譯器)對原程序進行詞法分析,然後進行語法與語義分析,最後生成可執行的代碼;
2.編程環境
集成開發環境(IDE)是用於提供程序開發環境的應用程序,包括代碼編輯器、編譯器、調試器和圖形用戶界面等工具,集成了代碼編寫功能、分析功能、編譯功能、調試功能等一體化的開發軟件服務套。
1.3C語言的發展歷史與特點
(1)C語言是一種結構化語言
函數是C語言程序的基本模塊,程序的許多操作可有不同功能的函數組裝而成;以及完整的控制語句和構造數據類型,使程序流程與數據描述也結構化;
(2)C語言語句簡潔緊湊,使用方便靈活
只有32個保留字和9種控制語句,可用宏定義和文件包含等預處理語句;
(3)C語言程序易於移植
C語言將與硬件有關的因素從語言主體中分離出來,通過庫函數或其他實用程序來實現;
(4)C語言具有強大的處理能力
結構、指針、地址、位運算等功能,具有匯編語言的特點;
(5)生成的目標代碼質量高,運行效率高
1.4實現問題求解的過程
問題:求1~100間所有偶數的和。
1.問題分析與算法設計
求累加和的基本方法:設置一個變量並初始化為0,在指定範圍內尋找滿足條件的數做累加 sum=sum+i;
這個累加過程要反復做,用循環控制語句來實現,在循環過程中:
a.需要判斷 i 是否滿足問題要求的條件(偶數):分支控制語句;
b.需要對循環次數做控制,通過 i 值的變化進行控制:將 i 初始化為1,每循環一次加1,直到100結束;
2.編輯源程序sum.c
3.編譯生成目標程序sum.obj
通過編程環境提供的庫函數進行連接,形成可執行程序sum.exe
4.運行與調試:設置斷點並觀察變量;
第1章C語言概述