




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第一章C語言概述第二章數據類型、運算符與表達式第三章最簡單的C程序設計第四章邏輯運算和判斷選取控制第五章循環控制第六章數組第八章編譯預處理第九章指針第十章結構體與共用體第十二章文件的基本操作第十三章位運算第一章C語言概述第一代:機器語言==〉是一種CPU機器語言。由數
字0、1組合而成。
優點:機器可直接執行,速度快。
缺點:程序長,難記,難理解,不易查錯。第二代:匯編語言==〉用助記符描述的指令系統。
如:MovAx,[bp+4] pushd1,
優點:比機器語言較易理解,執行速度快。
缺點:難度大,非專業人士難以掌握。一、程序設計語言的發展§1.1C語言簡介第三代:面向過程的高級語言==〉或稱算法語言。如:
Fortran,Basic,Pascal,C等等。
優點:靈活,易于理解,容易查錯。
缺點:對大型程序而言維護性較差,對“擬定”好的
程序難以擴充,修改(所謂牽一而動百)。第四代:非過程化的高級語言==〉是一種面向對象的設計
語言,如:C++,Java等等。
優點:靈活、易于理解、維護、修改、擴充。
缺點:掌握難度較大。第五代:可視化多媒體程序設計工具。具有面向對象的思
想,如:VisualC++,VisualBasic,Delphe等等。二、C語言發展過程1.1960年出現了Algol60語言,但該語言主要面向問題,與硬件較遠,故英國劍橋大學推出了CPL(CombinedProgrammingLanguage)2.1967年,MatinRichards對CPL進行改進、簡化、推出了BCPL(BasicCombinedProgrammingLanguage)3.1970年,美國貝爾實驗室KenThomson以BCPL為基礎,再次簡化推出了B語言,并寫了第一個UNIX系統。4.1972年美國貝爾實驗室D.M.Ritchie在B語言基礎上設計出了C語言,并用其將UNIX系統全部改寫并實現。5.經進一步改進,至1977年出現了與具體機器無關的C編譯文本,從而使C語言廣泛應用,各種機器皆可使用。6.1978年,美國BrainW.Kernighan與Dennis.M.Ritchie聯合出版一書《TheCProgrammingLanguage》成為ANSIC之基礎。7.1983年,美國標準化協會(ANSI)制定了ANSIC。注:以ANSIC為基礎:
不同機器有不同版本,尤其是函數均應參考
相應的機器。特別說明:
C語言的編譯環境有多種如:TurboC,BorlandC,MicrosoftC等§1.2C語言的特點2簡潔、緊湊、方便、表達能力強
32個關鍵字,9種控制語句,主要用小寫字母。1.應用面廣
C語言是一種過程化的語言。
既可編寫系統軟件(如:DOS、UNIX);
又可編寫應用軟件。3.運算符豐富(共有34種運算符。)
除了最基本的+、-、×、÷、%等運算外,還將括號、賦值、類型強制轉換等均作為運算符。4.數據類型豐富,結構化程度高除基本類型外,有指針,結構體、共同體等類型。5.語法嚴格,靈活
如:數據類型可相互通用:整型、字符型通用。6.可與機器硬件打交道
直接訪問內存地址,具有“高”、“低”級語言的功能。7.生成目標代碼質量高,執行效率高。8.語言簡潔,可移植性好
可移植性優于匯編語言?!?.3簡單的C程序介紹
為了更好、更快地掌握C程序,我們先看幾個C語言程序:例1:
#include<stdio.h>main(){printf("Hello!\nThisisaCprogram\n");}運行結果:
Hello! ThisisaCprogram.例2:/*Exampleforaddprogram*/ #include<stdio.h>main() {inta,b,sum;/*這是定義變量*/
a=123;b=456;/*給變量賦值*/sum=a+b;/*求兩個數之和*/printf("a+b=%d\n",sum);}運行結果:
a+b=579例3:
/*ExampleforFunctionprogram*/
#include<stdio.h>
main()/*主函數*/
{inta,b,c;/*定義變量*/
scanf(“%d,%d”,&a,&b);/*輸入變量a和b的值*/
c=max(a,b);/*調用max函數,將得到的值賦給c*/
printf(“max=%d”,c;)/*輸出c的值*/
}intmax(x,y)
{intx,y;/*對形參x、y作類型定義*/
intz;/*max函用到的變量z,也要加以定義*/
z=y;
if(x>y)z=x;
return(z);/*將z的值返回,通過max帶回調用處*/
}通過實例,初步看到C的程序結構:1.
預處理部分:
#include<stdio.h>2.
C程序全部由一個一個的函數構成。至少有且僅有一個主函數main()也稱為主程序,其內容在其后的一對花括號{}內,其它函數可被主函數調用或相互調用。其它函數可為C函數庫中函數,也可為用戶定義的函數。3./*…………….*/為注釋部分。5.{}是程序段的括號4.
;是語句的結束符6.
函數的執行一定從main()開始。建議:
為便于閱讀,養成良好的程序書寫風格。1、每一對{}上下對齊;
2、每一對{}都對應于段首和段尾;
3、每一行只寫一條語句;
4、每一對{}內的語句左對齊;
5、不同的語句段采用縮進格式以示區別;
6、關健語句要有注釋。幾種供參考的書寫風格:第二章數據類型、運算符與表達式§2.1.數據類型
著名計算機科學家沃思提出:
程序=數據結構+算法例如:學生各科成績及總分排隊問題。成績的存放–––以數組形式
排隊方法––––算法在此,存放數據的方式直接反映了一種程序語言的數據表達能力。數據的存儲方式又稱之為:數據類型。
C語言對程序中要用到的每一個變量
都要事先指定它的數據類型!為什么要指定數據類型?1.不同類型的數據在內存中占據不同長度的存儲區。2.不同類型的數據取值范圍不同。3.不同類型的數據有不同的操作。C語言的數據類型豐富,有:1.基本類型2.構造類型3.指針類型4.空類型整型字符型浮點型單精度雙精度數組結構體共用體枚舉短整型長整型§2.2常量與變量2.2.1常量和符號常量常量程序運行過程中不能被改變的量。一般的數據顯式寫法均表示常量。如程序中:
20整型常量
15.8浮點型常量
'a'字符常量例:#definePRICE30main(){intnum,total;num=10;total=num*PRICE;printf("total=%d",total);}符號常量用一個符號表示一個常量符號常量(一般用大寫,以區分變量)此程序中PRICE
為常量符號,它的值為302.2.2變量變量
程序執行過程中可以改變它的值。變量包括變量名和變量值。變量名
用標識符命名,對應一定數量的內存存貯單元,其單元數視變量類型而定。標識符的作用可用來作為變量名、常量名、函數名、類型名、文件名等。標識符
由字母、數字、下劃線組成且由字母或下劃線開頭的字符串。2.2.3標識符如:_sum,sum,stu_name,price等為合法的標識符。建議:采用具有一定意義的英文單詞、縮寫作為標識符注意:1.C語言區分大小寫2.標識符的長度一般不超過8個字符如:Price和price,系統會認為是兩個不同的標識符。具體情況視不同系統而定。在C語言中,變量須先定義,后使用
變量一旦被定義,其類型便確定即可在編譯時為其分配相應數量的單元。
若沒有定義變量直接寫成:
student=_num30;
則編譯時會指出未定義錯誤。如:intstudent_num/*變量定義*/student_num=30;是合法的。§2.3整型數據2.3.1整型常量整型常量
(或稱整型常數)C語言提供了三種形式的整型常量:
十進制如:256,308,-120等以數字0開頭表示的整數例:0235,0146,-012等.0235=2×82+3×8+5=15710
0146=1×82+4×8+6=10210-012=-(1×8+2)=-1010十六進制以"0x"開頭的整型數
如:0x16,0x28八進制2.3.2整型變量一、分類:分為四種:基本型、短整型、長整型、無符號型1.基本型:用“int”定義,占2個字節(16位)。
2.短整型:用“shortint”或“short”定義,占2個字節(16位)。注意:int
與shortint
是等價的。3.長整型:用“long”或“longint”定義,占4個字節(32位)。4.無符號型: 用“unsigned”定義
不存放符號,數據不帶符號數。 無符號整型:“unsignedint”
無符號短整型:“unsignedshortint”
無符號長整型:“unsignedlongint”注意:如無指定,則為有符號數。
提醒:各數據的取值范圍:int,shortint,——32768(或32767)~longint,——2147483648~7unsignedint,unsignedshortint,——0~65535unsignedlongint,——0~上述各種類型的取值范圍有所不同,與機器和編譯環境有關。二、定義方法
整型變量分別以下列方式定義1.
基本整型:
inta,b,c;
或:inta;
intb,c;2.
短整型
shortinta,b,c;
或:shorta,b,c;3.
長整型
longint或longa,b,c;4.
無符號型
unsigneda,b,c;unsignedshorta,b,c;unsignedlonga,b,c;例1:#include<stdio.h>
main()
{inta,b,c,d;/*指定a,b,c,d為整型變量*/
unsigndu;/*指定u為無符號整型變量*/
a=12;b=–24;u=10;
c=a+u;d=b+u;
printf("a+u=%d,b+u=%d\n",c,d);
}運行結果為:
a+u=22,b+u=–14
思考:若有語句:u=a+b;情況會怎樣?涉及到的問題:數據類型轉換。
提示:例2:#include<stdio.h>
main()
{inta,b;/*指定a,b為整型變量*/
unsigndu;/*指定u為無符號整型變量*/
a=65536;/*超出a的充許范圍*/
b=32;
u=a+b;
printf("a=%d,u=%d\n",a,u);
}運行結果為:
a=0,u=–32例3:#include<stdio.h>
main()
{inta,b;/*指定a,b為整型變量*/
unsigndc;/*指定u為無符號整型變量*/
a=32768;/*超出a的范圍*/
b=32;
c=a+b;
printf("a=%d,c=%a\n",a,c);
}運行結果為:
a=32768,a+b=32736三、關于整型常量
程序中出現的整型常數,系統按以下規則分配變量(內存單元)或賦值給相應變量1.
當常數(量)在–32768~32767之間,則可賦給int,shortint變量。2.
若超越,而在–2147483648~2147483647之間,則可賦給longint變量。3.
若int,shortint長度相同,則二者皆可賦值。4.
一個非負整數<65535則可賦給unsignedint。5.
一個常數后加'l',或'L',表示長整數.如123l.主要用于函數調用時形、實參數傳遞?!?.4實型數據2.4.1實型常量有二種表示形式
1.十進制形式如:0.126,523.64等2.指數形式對于較大或較小的數,可用指數形式
0.00001261.26E–512600001.26E+6或1.26e+6
分為單精度型(float)與雙精度型(double)。如:floatx,y,z;(單精度)
doublea,b,c;(雙精度)
一般地:
單精度占4字節內存單元;
雙精度占8字節內存單元.
2.4.2實型變量注意:
不同機器對實型變量的有效數字長度的限制
如:pc機,單精度一般為7位,雙精度15位單精度數值:
±3.4×(10–38~1038)雙精度數值:
±1.7×(10–308~10308)例1:/*exp6.c*/ #include<conio.h> main() {floata,b,c,d; a=123456.666; b=1234567.777; c=12345678.888; d=123456789.999; printf("a=%f\nb=%f\nc=%f\nd=%f\n",a,b,c,d); }運行結果:
a=123456.664062b=1234567.750000c=12345679.000000d=123456792.000000例2:/*exp4.c*/ #include<stdio.h> #include<conio.h> main() {floata,b,c; clrscr();
a=3.4*10e1; b=3.4*10e37; c=3.4*10e38; printf("a=%f\nb=%f\nc=%f\n",a,b,c); getch(); }運行結果:a=340.000000b=000000000000000000000.0(整數位為39位)c=+INF例3:
/*exp5.c*/ #include<stdio.h> #include<conio.h> main() {floata,b,c; clrscr();
a=3.4e1; b=3.4e37; c=3.4e38; printf("a=%f\nb=%f\nc=%f\n",a,b,c); getch(); }運行結果:a=34.000000b=00000000000000000000.00c=000000000000000000000.0(整數位為39位)§2.5字符型數據用一對單引號括起來的單個字符。
如:'a','A',二者不一樣.2.5.1字符常量注意:下面兩種字符不能作為單引號中間的字符。
1、單引號本身:‘
2、反斜杠:\以"\"開頭后接一個字符或n個字符代表了一種特殊字符常量。–––轉義字符。如:\n––換行,\r––回車其它如下表:字符形式\n\t\v\b\r\f\\\'\ddd\xhh功能換行橫向跳格(即跳到下一個輸出區)豎向跳格退格回車走紙換頁反斜杠字符“\”單引號(撇號)字符1到3位8進制數所代表的字符1到2位16進制數所代表的字符注意:\表示ASCII碼字符三位八進制如:\101––表示字母A又:\x十六進制ASCII字符\x41––表示字母A定義方式為:
charc1,c2;c1='A';/*給變量賦值*/c2='B';2.5.2字符變量用來存放一個字符的變量占一個字節.
一個字符存入一個字符變量。其對應單元存放的是其ASCII碼,即ASCII碼的二進制形式。
由此:字符變量中的數據是一整型數據。輸出時既可輸出字符,亦可輸出整數,且字符變量可作整數運算。2.5.3字符數據的實際存放形式例1:#include<stdio.h>
main(){charc1,c2;c1=97;c2=98;printf(”c1=%c,c2=%c",c1,c2);}運行結果:
c1=a,c2=b
問題:若c1,c2的取值范圍超出了ASCII碼表的值,會產生什么后果?例2:#incdude<stdio.h>main(){charc1,c2,c3,c4;c1=256;c2=257;c3=1;c4=2;Printf("c1=%c,c2=%c,c3=%c,c1,c2,c3,c4);}運行結果:c1=,c2=,c3=,c4=.?結論:從256開始,依次得新取ASCII碼的值。1~256相當于ASCII碼的255~0值。取值分段ASCII碼ASCII碼ASCII碼25610255256511例3:
#include<stdio.h>
main(){char
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 北交所科技成長產業跟蹤第二十八期:小馬智行與廣州公交集團合作推動自駕技術商業化應用關注北交所無人車概念企業
- 基于2025年農村人居環境整治的社會穩定風險評估與城鄉融合發展報告
- 智能化改造對城市污水處理廠運營效率提升的影響報告
- 線下演出市場2025年演出市場政策法規解讀與合規報告
- 商業地產項目數字化運營策略與客戶體驗反饋機制優化報告
- 食品行業食品安全追溯體系與RFID技術應用現狀與發展趨勢報告
- 工業互聯網平臺2025年異構數據庫融合技術在化工行業中的化工行業市場前景分析報告
- 智慧養老服務平臺項目投資回報率分析與可行性報告
- 答題萬能公式概要1
- 2025年二手電商平臺信用體系建設與信用教育普及報告
- 國家開放大學國開電大《統計與數據分析基礎》形考任務1-4 參考答案
- 2025年數字道閘項目市場調查研究報告
- 幼兒園中班科學《荷花》課件
- 陜西民間藝術審美與文化知到智慧樹期末考試答案題庫2025年西北工業大學
- GB/T 6148-2025精密電阻合金電阻溫度系數測試方法
- 風電居間合同協議書
- 浙江開放大學2025年《社會保障學》形考任務4答案
- 中國海洋工程行業市場發展分析及前景趨勢與投資前景研究報告
- 2025年大學輔導員招聘考試題庫時事政治專項試卷
- 醬料研發知識培訓課件
- 2025核輻射突發事件放射性污染人員洗消流程及技術要求
評論
0/150
提交評論