C語言程序設計課件_第1頁
C語言程序設計課件_第2頁
C語言程序設計課件_第3頁
C語言程序設計課件_第4頁
C語言程序設計課件_第5頁
已閱讀5頁,還剩371頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第一章C語言概述C語言發(fā)展歷史C語言特點C程序格式和結構特點C程序上機步驟1.1C語言發(fā)展歷史程序設計語言的發(fā)展機器語言匯編語言高級語言面向過程面向對象CPU指令系統(tǒng),由0、1序列構成的指令碼組成如:10000000加

10010000減用助記符號描述的指令系統(tǒng)如ADDA,B面向機器的語言程序設計是數(shù)據(jù)被加工的過程客觀世界可以分類,對象是類的實例對象是數(shù)據(jù)和方法的封裝對象間通過發(fā)送和接受消息發(fā)生聯(lián)系程序設計關鍵是定義類,并由類派生對象>>1.1C語言發(fā)展歷史程序設計語言的發(fā)展馮.諾依曼結構:計算機運算器控制器存儲器主機:I/O設備:鍵盤、顯示器等中央處理器CPU5254565860626466687072747678808284868890929496AdaALGOL60ALGOL68PascalModula-2CPLBCPLBCC++JavaLISPPROLOGCOBOLFORTRAN77FORTRANPL/1Simula67Smalltalk80BASICANSI-BASICQBASICVBFORTRAN90<>C語言發(fā)展過程產(chǎn)生背景產(chǎn)生過程時間:1972~1973地點:美國貝爾實驗室目的:UNIX操作系統(tǒng)設計人:Ken.Thompson和Dennis.M.RitchieC標準標準C:K&R合著《TheCProgrammingLanguage》ANSIC:1983年87ANSIC:1987年1990年國際標準的ANSIC<>1.2C語言特點語言簡潔、緊湊、靈活運算符和數(shù)據(jù)類型豐富程序設計結構化、模塊化生成目標代碼質量高可移植性好<>>>>>>中級語言>32個關鍵字:(由系統(tǒng)定義,不能重作其它定義)autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunsignedunionvoidvolatilewhile<9種控制語句:if()~else~for()~while()~do~while()continuebreakswitchgotoreturn<例C語言與Pascal語言比較C語言

Pascal語言含義{}

BEGIN….END

復合語句if(e)s;

IF(e)THENs

條件語句inti;

VARi:INTEGER

定義i為整型變量inta[10];

VARa:ARRAY[1..10]OFINTEGER

定義整型數(shù)組aintf();

FUNCTIONf():INTEGER

定義f為返值整型的函數(shù)int*p;

VARp:INTEGER

定義p為指向整型變量的指針i+=2;

i=i+2

賦值i+2ii++,++i;

i=i+1 i自增值結論:C比Pascal簡練,源程序短。<34種運算符:算術運算符:+-*/%++--關系運算符:<<===>>=!=邏輯運算符:!&&||位運算符:<<>>~|^&賦值運算符:=及其擴展條件運算符:?:逗號運算符:,指針運算符:*&求字節(jié)數(shù):sizeof強制類型轉換:(類型)分量運算符:.->下標運算符:[]其它:()-<C數(shù)據(jù)類型基本類型構造類型指針類型空類型void定義類型typedef數(shù)值類型字符類型char枚舉類型enum整型浮點型單精度型float雙精度型double短整型short長整型long整型int數(shù)組結構體struct共用體union<1.3C程序格式和結構特點例1.1第一個程序Hello,World!/*example1.1ThefirstCProgram*/#include<stdio.h>main(){printf(“Hello,World!”);}>注釋編譯預處理函數(shù)語句輸出:Hello,World!例1.2/*example1.2calculatethesumofaandb*/#include<stdio.h>/*Thisisthemainprogram*/main(){

int

a,b,sum;

a=10;

b=24;

sum=add(a,b);

printf(”sum=

%d\n",sum);}/*Thisfunctioncalculatesthesumofxandy*/int

add(int

x,inty){

int

z;

z=x+y;

return(z);}運行結果:sum=34函數(shù)語句預處理命令注釋>格式特點習慣用小寫字母,大小寫敏感不使用行號,無程序行概念可使用空行和空格常用鋸齒形書寫格式<>main(){

……………….………………

…………..…………..

……………….

………………………….

……………….………………..}#include<stdio.h>

main(){

inti,j,sum;sum=0;for(i=1;i<10;i++){for(j=1;j<10;j++){sum+=i*j;}}printf(“%d\n”,sum);}優(yōu)秀程序員的素質之一:使用TAB縮進{}對齊有足夠的注釋有合適的空行結構特點函數(shù)與主函數(shù)程序由一個或多個函數(shù)組成必須有且只能有一個主函數(shù)main()程序執(zhí)行從main開始,在main中結束,其它函數(shù)通過嵌套調用得以執(zhí)行。程序語句C程序由語句組成用“;”作為語句終止符注釋/**/為注釋,不能嵌套不產(chǎn)生編譯代碼<>例:/*Thisisthemain/*ofexample1.1*/*/非法編譯預處理命令#include<stdio.h>編輯鏈接編譯執(zhí)行1.4C程序的上機步驟C程序開發(fā)步驟<>file.exe程序代碼的錄入,生成源程序*.c語法分析查錯,翻譯生成目標程序*.obj與其它目標程序或庫鏈接裝配,生成可執(zhí)行程序*.exeTurboC集成開發(fā)環(huán)境配置要求UNIX,PC-DOS,MS-DOS,UCDOS操作系統(tǒng)硬盤容量約2M,448KRAM運行空間安裝TurboC創(chuàng)建子目錄Install若不是可安裝盤,將文件拷貝到對應的目錄下TC*.*INCLUDELIB*.*SYS*.*<>進入TurboCD:\TC>TC.exe

主控菜單文件操作FILE:New

Load

Save

Writeto編輯操作EDIT:插入/修改

查找/替換編譯鏈接COMPILE

LINK

MAKE執(zhí)行RUN退出TurboCAlt+xAlt+F,Q幫助HelpF1Ctrl+F1<>基本操作:F10-----調用主菜單F2------存盤F3------打開Alt+F9------CompileCtrl+F9------RunAlt+F5------UserScreen常用熱鍵文本編輯:

-------移動光標PgUp,PgDn------上下翻頁Ctrl+PgUp,Ctrl+PgDn------文件首尾HomeEndDdeleteInsertBkspace塊操作:Ctrl+KB-------塊開始標記Ctrl+KK--------塊結束標記Ctrl+KC-------塊拷貝Ctrl+KV--------塊移動Ctrl+KY-------塊刪除Ctrl+KH--------塊隱藏程序調試:F8-----StepoverF7-------TraceintoF4-----GotoCursorCtrl+F7--------AddWatchCtrl+F8------ToggleBreakpointCtrl+F2--------ProgramReset窗口操作:F5-----窗口縮放F6-----窗口切換第二章程序的靈魂—算法2.1算法的概念算法即程序操作的步驟。廣義的說:算法就是為解決一個問題而采取的方法和步驟。數(shù)據(jù)結構就是程序中指定的數(shù)據(jù)類型和數(shù)據(jù)的組織形式。

Wirth教授認為:程序=數(shù)據(jù)結構+算法實際上程序還應該包括語言環(huán)境和程序設計方法。2.2簡單舉例例:對于一個大于3的正整數(shù)n,判斷它是不是一個素數(shù)。(n被2,3,4……n-1除,若都不能整除,則n是素數(shù))算法:

S1:輸入n的值

S2:m=2S3:n被m除,得余數(shù)rS4:如果r=0,表示n能被m整除,則打印“n不是素數(shù)”,算法結束;否則執(zhí)行s5S5:m=m+1S6:如果m<=n-1,返回s3;否則打印“n不是素數(shù)”然后結束。2.3算法的特性有窮性:即有限步解決問題;確定性:算法的每一個步驟不能含糊;有零個或多個輸入;有一個或多個輸出;有效性;2.4算法的表示起止框輸入輸出框判斷框處理框或流程線連接點注釋框一些常用的流程圖符號三種基本結構順序結構選擇(選取、分支)結構循環(huán)(重復)結構

①當(while)型循環(huán)結構②直到型(Until)循環(huán)abAB順序結構BAPab成立不成立APb成立不成立a選擇結構P1Aba成立當型循環(huán)結構P2Aba成立不成立直到型循環(huán)開始結束年份→yy能被4整除y能被100整除y能被400整除打印y“是潤年”打印y“不是潤年”打印y“不是潤年”打印y“是潤年”例:判斷閏年的算法。2.5結構化程序設計方法基本思路:

把一個復雜問題的求解過程分階段進行,每個階段處理的問題都控制在人們容易理解和處理的范圍內。具體方法:自頂向下;逐步細化;模塊化設計;結構化編碼。特點:考慮周全、結構清晰、層次分明、修改容易。

過程:將問題求解由抽象逐步具體化,從頂層設計然后一步步細化。功能:將復雜的問題分解成若干個簡單的問題。第三章數(shù)據(jù)類型預備知識數(shù)據(jù)類型常量與變量各類數(shù)值型數(shù)據(jù)間的混合運算運算符和表達式2.0

預備知識計算機中數(shù)的表示及進制轉換數(shù)碼、基與權數(shù)碼:表示數(shù)的符號基:數(shù)碼的個數(shù)權:每一位所具有的值數(shù)制<>各種進制之間的轉換二進制、八進制、十六進制轉換成十進制方法:按權相加<>各種進制之間的轉換(整數(shù))二進制、八進制、十六進制轉換成十進制方法:按權相加十進制轉換成二進制、八進制、十六進制原理:方法:連續(xù)除以基,從低到高記錄余數(shù),直至商為0<>例把十進制數(shù)59轉換成二進制數(shù)5922921427232120(59)10=(111011)2110111111011余余余余余余各種進制之間的轉換(整數(shù))二進制、八進制、十六進制轉換成十進制方法:按權相加十進制轉換成二進制、八進制、十六進制原理:方法:連續(xù)除以基,從低到高記錄余數(shù),直至商為0<>各種進制之間的轉換(整數(shù))二進制、八進制、十六進制轉換成十進制方法:按權相加十進制轉換成二進制、八進制、十六進制原理:方法:連續(xù)除以基,從低到高記錄余數(shù),直至商為0例把十進制數(shù)159轉換成八進制數(shù)1598198280(159)10=(237)8237余7余3余2<>各種進制之間的轉換(整數(shù))二進制、八進制、十六進制轉換成十進制方法:按權相加十進制轉換成二進制、八進制、十六進制原理:方法:連續(xù)除以基,從低到高記錄余數(shù),直至商為0例把十進制數(shù)459轉換成十六進制數(shù)4591628161160(459)10=(1CB)161CB余11余12余1<>二進制與八進制之間的轉換二進制轉換成八進制:從右向左,每3位一組(不足3位左補0),轉換成八進制八進制轉換成二進制:用3位二進制數(shù)代替每一位八進制數(shù)例(1101001)2=(001,101,001)2=(151)8例(246)8=(010,100,110)2=(10100110)2000~0001~1010~2011~3100~4101~5110~6111~7<>二進制與十六進制之間的轉換二進制轉換成十六進制:從右向左,每4位一組(不足4位左補0),轉換成十六進制十六進制轉換成二進制:用4位二進制數(shù)代替每一位十六進制數(shù)例(11010101111101)2=(0011,0101,0111,1101)2=(357D)16例(4B9E)16=(0100,1011,1001,1110)2=(100101110011110)20000~00001~10010~20011~30100~40101~50110~60111~71000~81001~91010~A1011~B1100~C1101~D1110~E1111~F<>字節(jié)和位內存以字節(jié)為單元組成每個字節(jié)有一個地址一個字節(jié)一般由8個二進制位組成每個二進位的值是0或101234567012345678910……...<>7643251數(shù)值的表示方法——原碼、反碼和補碼原碼:最高位為符號位,其余各位為數(shù)值本身的絕對值反碼:正數(shù):反碼與原碼相同負數(shù):符號位為1,其余位對原碼取反補碼:正數(shù):原碼、反碼、補碼相同負數(shù):最高位為1,其余位為原碼取反,再對整個數(shù)加1<>例:inti,j;i=10;j=-10;10i數(shù)據(jù)存放示意圖0000000010000001i數(shù)據(jù)在內存中實際存放情況1111111101111110i取反1111100111111111j原碼反碼補碼+7000001110000011100000111-7100001111111100011111001+0000000000000000000000000-0100000001111111100000000數(shù)的范圍01111111~11111111(-127~+127)01111111~10000000(-127~+127)01111111~10000000(-128~+127)(用一字節(jié)表示數(shù))負數(shù)補碼轉換成十進制數(shù):最高位不動,其余位取反加1例補碼:11111001

取反:10000110

加1:10000111=-7<>3.1

數(shù)據(jù)類型數(shù)據(jù)類型總表<>C數(shù)據(jù)類型基本類型構造類型指針類型空類型void定義類型typedef字符類型char枚舉類型enum整型實型單精度型float雙精度型double數(shù)組結構體struct共用體union短整型short長整型long整型int數(shù)據(jù)類型決定:1.數(shù)據(jù)占內存字節(jié)數(shù)2.數(shù)據(jù)取值范圍3.其上可進行的操作基本數(shù)據(jù)類型<>類型符號關鍵字數(shù)的表示范圍所占位數(shù)整型字符型實型有(signed)int基本整型16-32768~32767(signed)short短整型16-32768~32767(signed)long長整型32-2147483648~2147483647無16unsignedint0~65535320~4294967295unsignedlongunsignedshort160~65535有float單精度型323.4e-38~3.4e38有double雙精度型641.7e-308~1.7e308有char字符型8-128~127無unsignedchar80~255說明:數(shù)據(jù)類型所占字節(jié)數(shù)隨機器硬件不同而不同,上表以IBMPC機為例:3.2

常量與變量標識符定義:用來標識變量、常量、函數(shù)等的字符序列組成:只能由字母、數(shù)字、下劃線組成,且第一個字母必須是字母或下劃線大小寫敏感不能使用關鍵字長度:最長32個字符命名原則:見名知意不宜混淆如l與I,o與0例:判斷下列標識符號合法性sumSumM.D.JohndayDate3daysstudent_name#33lotus_1_2_3chara>b_above$123<>M.D.John3days#33char$123a>b一般用大寫字母是宏定義預處理命令,不是C語句直接常量:整型常量實型常量字符常量字符串常量如#definePRICE30常量定義:程序運行時其值不能改變的量(即常數(shù))分類:符號常量:用標識符代表常量定義格式:#define

符號常量常量>>>><>例符號常量舉例(ch2_1.c)#include<stdio.h>#definePRICE30main(){intnum,total;num=10;total=num*PRICE;printf("total=%d",total);}運行結果:total=300整型常量(整常數(shù))三種形式:十進制整數(shù):由數(shù)字0~9和正負號表示.如123,-456,0八進制整數(shù):由數(shù)字0開頭,后跟數(shù)字0~7表示.如0123,011十六進制整數(shù):由0x開頭,后跟0~9,a~f,A~F表示.如0x123,0Xff<問題:0123=(3×80+2×81+1×82=83)100x123=(3×160+2×161+1×162=291)100Xff=(15×160+15×161=255)10問題:0123=()100x123=()100Xff=()10整型常量(整常數(shù))三種形式:十進制整數(shù):由數(shù)字0~9和正負號表示.如123,-456,0八進制整數(shù):由數(shù)字0開頭,后跟數(shù)字0~7表示.如0123,011十六進制整數(shù):由0x開頭,后跟0~9,a~f,A~F表示.如0x123,0Xff整型常量的類型根據(jù)其值所在范圍確定其數(shù)據(jù)類型在整常量后加字母l或L,認為它是longint

型常量例30000為int型65536為longint型例12與12L實型常量(實數(shù)或浮點數(shù))表示形式:十進制數(shù)形式:(必須有小數(shù)點)如0.123,.123,123.0,0.0,123.指數(shù)形式:(e或E之前必須有數(shù)字;指數(shù)必須為整數(shù))如12.3e3,123E2,1.23e4,e-5,1.2E-3.5

實型常量的類型默認double型在實型常量后加字母f或F,認為它是float型<46字符常量定義:用單引號括起來的單個普通字符或轉義字符.

字符常量的值:該字符的ASCII碼值<轉義字符及其含義:轉義字符含義\n\v\r\a\‘\ddd\t\b\f\\\“\xhh轉義字符含義換行垂直制表回車響鈴單引號3位8進制數(shù)代表的字符水平制表退格換頁反斜線雙引號2位16進制數(shù)代表的字符如‘A’——65,‘a(chǎn)’——97,

‘0’——48,‘\n’——10如‘a(chǎn)’‘A’‘?’‘\n’‘\101’轉義字符:反斜線后面跟一個字符或一個代碼值表示字符常量定義:用單引號括起來的單個普通字符或轉義字符.

字符常量的值:該字符的ASCII碼值如‘\101’-----------‘A’‘\012’-----------’\n’‘\376’-----------’’‘\x61’-----------’a’‘\60’-----------’0’‘\483’----------(

)例:‘A’-------’\101’-------’\x41’--------65轉義字符:反斜線后面跟一個字符或一個代碼值表示字符常量定義:用單引號括起來的單個普通字符或轉義字符.

字符常量的值:該字符的ASCII碼值轉義字符:反斜線后面跟一個字符或一個代碼值表示例轉義字符舉例(ch3_001.c,ch3_004.c)

#include<stdio.h>main(){printf("\101\x42C\n");printf("Isay:\"Howareyou?\"\n");printf("\\CProgram\\\n");printf("Turbo\'C\'");}運行結果:(屏幕顯示)ABCIsay:”Howareyou?”\CProgram\Turbo‘C’字符常量定義:用單引號括起來的單個普通字符或轉義字符.

字符常量的值:該字符的ASCII碼值轉義字符:反斜線后面跟一個字符或一個代碼值表示例#include<stdio.h>main(){printf(“Y\b=\n”);}運行結果:屏幕顯示:=打印機輸出:¥<字符常量與字符串常量不同字符串常量定義:用雙引號(“”)括起來的字符序列。存儲:每個字符串尾自動加一個‘\0’作為字符串結束標志hello\0例字符串“hello”在內存中aa\0例‘a(chǎn)’“a”例空串“”\0例:charch;ch=“A”;例:charch;ch=‘A’;變量概念:其值可以改變的量變量名與變量值變量定義的一般格式:

數(shù)據(jù)類型變量1[,變量2,…,變量n];<>變量初始化:定義時賦初值例:inta,b,c;floatdata;決定分配字節(jié)數(shù)和數(shù)的表示范圍合法標識符例:inta=2,b,c=4;floatdata=3.67;charch=‘A’;intx=1,y=1,z=1;

intx=y=z=1;(錯)變量概念:其值可以改變的量變量名與變量值變量定義的一般格式:

數(shù)據(jù)類型變量1[,變量2,…,變量n];變量初始化:定義時賦初值編譯程序根據(jù)變量定義為其分配指定字節(jié)的內存單元…...地址inta=1,b=-3,c;abc2字節(jié)2字節(jié)2字節(jié)地址地址…...內存1-3

隨機數(shù)<>例1intstudent;stadent=19;//Undefinedsymbol‘statent’infunctionmain

例2floata,b,c;c=a%b;//Illegaluseoffloatingpointinfunctionmain

變量概念:其值可以改變的量變量名與變量值變量定義的一般格式:

數(shù)據(jù)類型變量1[,變量2,…,變量n];變量初始化:定義時賦初值變量的使用:先定義,后使用<>變量概念:其值可以改變的量變量名與變量值變量定義的一般格式:

數(shù)據(jù)類型變量1[,變量2,…,變量n];變量初始化:定義時賦初值變量的使用:先定義,后使用變量定義位置:一般放在函數(shù)開頭main(){inta,b=2;floatdata;a=1;data=(a+b)*1.2;printf(“data=%f\n”,data);}變量定義可執(zhí)行語句main(){inta,b=2;a=1;floatdata;data=(a+b)*1.2;printf(“data=%f\n”,data);}<>整型變量占字節(jié)數(shù)隨機器不同而不同,一般占一個機器字short≤int≤long可用sizeof(類型標識符)測量實型變量float:占4字節(jié),提供7位有效數(shù)字double:占8字節(jié),提供15~16位有效數(shù)字例floata;a=111111.111;/*a=111111.1*/doubleb;b=111111.111;/*b=111111.111*/<>字符型變量字符變量存放字符ASCII碼char與int數(shù)據(jù)間可進行算術運算例a=‘D’;/*a=68;*/x=‘A’+5;/*x=65+5;*/s=‘!’+‘G’/*s=33+71;*/沒有字符串變量,用字符數(shù)組存放整型變量占字節(jié)數(shù)隨機器不同而不同,一般占一個機器字short≤int≤long可用sizeof(類型標識符)測量實型變量float:占4字節(jié),提供7位有效數(shù)字double:占8字節(jié),提供15~16位有效數(shù)字<>例/*ch3_003.c*/#include<stdio.h>#definePRICE12.5main(){intnum=3;floattotal;charch1,ch2=‘D’;total=num*PRICE;ch1=ch2-‘A’+‘a(chǎn)’;printf(“total=%f,ch1=%c\n”,total,ch1);}宏定義變量定義輸出結果運行結果:total=37.50000,ch1=d<>3.3各類數(shù)值型數(shù)據(jù)間的混合運算隱式轉換什么情況下發(fā)生運算轉換------不同類型數(shù)據(jù)混合運算時賦值轉換------把一個值賦給與其類型不同的變量時輸出轉換------輸出時轉換成指定的輸出格式函數(shù)調用轉換------實參與形參類型不一致時轉換運算轉換規(guī)則:不同類型數(shù)據(jù)運算時先自動轉換成同一類型<>doublefloatlongunsignedintchar,short低高說明:必定的轉換運算對象類型不同時轉換例charch;inti;floatf;doubled;ch/i+f*d-(f+i)intintdoubledoubledoubledoubledoubledoubleintintdoubledoubledoubledoubledoubledouble10+‘a(chǎn)’+i*f-d/l例inti;floatf;doubled;longl;<>顯式轉換(強制轉換)一般形式:(類型名)(表達式)例(int)(x+y)(int)x+y(double)(3/2)(int)3.6說明:強制轉換得到所需類型的中間變量,原變量類型不變<>顯式轉換(強制轉換)一般形式:(類型名)(表達式)說明:強制轉換得到所需類型的中間變量,原變量類型不變例#include<stdio.h>main(){floatx;inti;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i);}結果:x=3.600000,i=3精度損失問題較高類型向較低類型轉換時可能發(fā)生<>3.4

運算符和表達式C運算符算術運算符:(+-*/%++--)關系運算符:(<<===>>=!=)邏輯運算符:((!&&||)位運算符:(<<>>~|^&)賦值運算符:(=及其擴展)條件運算符:(?:)逗號運算符:(,)指針運算符:(*&)求字節(jié)數(shù):(sizeof)強制類型轉換:(類型)分量運算符:(.->)下標運算符:([])其它:(()-)<>學習運算符應注意:運算符功能與運算量關系要求運算量個數(shù)要求運算量類型運算符優(yōu)先級別結合方向結果的類型<>算術運算符和表達式基本算術運算符:+-*/%結合方向:從左向右優(yōu)先級:----->*/%----->+-

(2)(3)(4) 說明:“-”可為單目運算符時,右結合性兩整數(shù)相除,結果為整數(shù)%要求兩側均為整型數(shù)據(jù)例5/2=-5/2.0=例5%2=-5%2=1%10=

5%1=5.5%2<>例5/2=2

-5/2.0=-2.5例5%2=1

-5%2=-11%10=

1

5%1=

05.5%2()自增、自減運算符++--作用:使變量值加1或減1種類:前置++i,--i(先執(zhí)行i+1或i-1,再使用i值)后置i++,i--(先使用i值,再執(zhí)行i+1或i-1)例j=3;k=++j;j=3;k=j++;j=3;printf(“%d”,++j);j=3;printf(“%d”,j++);a=3;b=5;c=(++a)*b;a=3;b=5;c=(a++)*b;<>//k=4,j=4//k=3,j=4//4//3//c=20,a=4//c=15,a=4自增、自減運算符++--作用:使變量值加1或減1種類:前置++i,--i(先執(zhí)行i+1或i-1,再使用i值)后置i++,i--(先使用i值,再執(zhí)行i+1或i-1)說明:++--不能用于常量和表達式,如5++,(a+b)++++--結合方向:自右向左優(yōu)先級:-++-------->*/%----->+-(2)(3)(4)例-i++-(i++)i=3;printf(“%d”,-i++);//-3

例j+++k;(j++)+k;例-i++i=3;printf(“%d”,-i++);<>賦值運算符和表達式簡單賦值運算符符號:=格式:變量標識符=表達式作用:將一個數(shù)據(jù)(常量或表達式)賦給一個變量復合賦值運算符種類:+=-=*=/=%=《=》=&=^=|=含義:exp1op=exp2

exp1=exp1opexp2a+=3a=a+3x*=y+8x=x*(y+8)x%=3x=x%3<>例a=3;d=func();c=d+2;說明:結合方向:自右向左優(yōu)先級:14左側必須是變量,不能是常量或表達式賦值轉換規(guī)則:使賦值號右邊表達式值自動轉換成其左邊變量的類型例3=x-2*y;a+b=3;<>賦值表達式的值與變量值相等,且可嵌套賦值表達式的值與變量值相等,且可嵌套例

floatf;inti;i=10;f=i;則

f=10.00000例inti;i=2.56;//結果i=2;例:a=b=c=5a=(b=5)a=5+(c=6)a=(b=4)+(c=6)a=(b=10)/(c=2)//表達式值為5,a,b,c值為5//b=5;a=5//表達式值11,c=6,a=11//表達式值10,a=10,b=4,c=6//表達式值5,a=5,b=10,c=2說明:結合方向:自右向左優(yōu)先級:14左側必須是變量,不能是常量或表達式賦值轉換規(guī)則:使賦值號右邊表達式值自動轉換成其左邊變量的類型<>說明:結合方向:自右向左優(yōu)先級:14左側必須是變量,不能是常量或表達式賦值表達式的值與變量值相等,且可嵌套賦值轉換規(guī)則:使賦值號右邊表達式值自動轉換成其左邊變量的類型例:a=12;a+=a-=a*a例:inta=2;a%=4-1;a+=a*=a-=a*=3;<>//a=-264等價于a=a+(a=a-(a*a))//a=0等價于a=a+(a=a*(a=a-(a=a*3)))逗號運算符和表達式形式:表達式1,表達式2,……,表達式n結合性:從左向右優(yōu)先級:15逗號表達式的值:等于表達式n的值用途:常用于循環(huán)for語句中例a=3*5,a*4a=3*5,a*4,a+5例x=(a=3,6*3)x=a=3,6*a例a=1;b=2;c=3;printf(“%d,%d,%d”,a,b,c);printf(“%d,%d,%d”,(a,b,c),b,c);<>//a=15,表達式值60//a=15,表達式值20//賦值表達式,表達式值18,x=18//逗號表達式,表達式值18,x=3//1,2,3//3,2,3逗號運算符和表達式形式:表達式1,表達式2,……表達式n結合性:從左向右優(yōu)先級:15逗號表達式的值:等于表達式n的值用途:常用于循環(huán)for語句中例:/*ch3_6.c*/#include<stdio.h>main(){intx,y=7;floatz=4;x=(y=y+6,y/z);printf("x=%d\n",x);}運行結果:x=3<>0111111111111111int型:最大:327671000000000000000最小:-327681111111111111111unsignedint型:最大:655350000000000000000最小:0數(shù)制基權表示數(shù)碼特點10o,101,102,…十進制數(shù)0~910逢十進一二進制數(shù)0~122o,21,22,…逢二進一八進制數(shù)0~788o,81,82,…逢八進一十六進制數(shù)0~9,A~F,a~f1616o,161,162,…逢十六進一十進制:4956=4103+9102+5101+610o二進制:1011=123+022+121+12o十六進制:81AE=8163+1162+10161+1416o八進制:4275=483+282+781+58o第四章順序程序設計C語言概述賦值語句數(shù)據(jù)輸出數(shù)據(jù)輸入程序舉例C語言無I/O語句,I/O操作由函數(shù)實現(xiàn)#include<stdio.h>4.1

C語言概述C語句概述C語句種類控制語句函數(shù)調用語句表達式語句空語句;復合語句①if()~else~條件語句②for()循環(huán)語句③while()循環(huán)語句④do~while()循環(huán)語句⑤continue結束本次循環(huán)語句⑥break中止執(zhí)行switch或循環(huán)語句⑦switch多分支選擇語句⑧goto轉向語句⑨return從函數(shù)返回語句C語言無I/O語句,I/O操作由函數(shù)實現(xiàn)#include<stdio.h>4.1

C語言概述C語句概述C語句種類控制語句函數(shù)調用語句表達式語句空語句;復合語句由一次函數(shù)調用加一個分號構成一個語句,如printf(“ThisisaCstatement.”);C語言無I/O語句,I/O操作由函數(shù)實現(xiàn)#include<stdio.h>4.1

C語言概述C語句概述C語句種類控制語句函數(shù)調用語句表達式語句空語句;復合語句a=3i=i+1a=3;i=i+1;C語言無I/O語句,I/O操作由函數(shù)實現(xiàn)#include<stdio.h>4.1

C語言概述C語句概述C語句種類控制語句函數(shù)調用語句表達式語句空語句;復合語句用{}把一些語句括起來就成為復合語句。如:{z=x+y;t=z/100;printf(“%f”,t);}任何表達式加上分號就成為語句。返回4.2

賦值語句賦值語句特點是運算符表達式與語句的區(qū)別返回If((a=b)>0)t=a;If((a=b;)>0)t=a;對錯格式:putchar(c)參數(shù):c為字符常量、變量或表達式功能:把字符c輸出到顯示器上返值:正常,為顯示的代碼值;出錯,為EOF(-1)C語言無I/O語句,I/O操作由函數(shù)實現(xiàn)#include<stdio.h>4.3

數(shù)據(jù)輸出字符輸出函數(shù)/*ch3_1.c*/#include<stdio.h>main(){intc;chara;c=65;a='B';putchar(c);putchar('\n');putchar(a);}運行結果:AB例格式:printf(“格式控制串”,輸出表)功能:按指定格式向顯示器輸出數(shù)據(jù)返值:正常,返回輸出字節(jié)數(shù);出錯,返回EOF(-1)格式輸出函數(shù)輸出表:要輸出的數(shù)據(jù)(可以沒有,多個時以“,”分隔)格式控制串:包含兩種信息格式說明:%[修飾符]格式字符,用于指定輸出格式普通字符或轉義序列:原樣輸出格式字符d,ix,Xoucse,Efg%%格式字符:十六進制無符號整數(shù)不帶符號十進制整數(shù)十進制整數(shù)指數(shù)形式浮點小數(shù)單一字符字符串八進制無符號整數(shù)小數(shù)形式浮點小數(shù)e和f中較短一種百分號本身inta=567;printf(“%d”,a);inta=255;printf(“%x”,a);inta=65;printf(“%o”,a);inta=567;printf(“%u”,a);chara=65;printf(“%c”,a);printf(“%s”,“ABC”);floata=567.789;printf(“%e”,a);floata=567.789;printf(“%f”,a);floata=567.789;printf(“%g”,a);printf(“%%”);567ff101567AABC5.677890e+02567.789000567.789%說明 格式字符要用小寫格式字符與輸出項個數(shù)應相同,按先后順序一一對應輸出轉換:格式字符與輸出項類型不一致,自動按指定格式輸出例#include<stdio.h>

main(){unsignedintu=65535;printf(”u=%d\n",u);}

輸出結果:u=-1例inta=3,b=4;printf(“%d%d\n”,a,b);printf(“a=%d,b=%d\n”,a,b);

例inta=3,b=4;printf(“%d%d\n”,a,b);printf(“a=%d,b=%d\n”,a,b);輸出結果:34a=3,b=4附加格式說明符(修飾符).n對實數(shù),指定小數(shù)點后位數(shù)(四舍五入)對字符串,指定實際輸出位數(shù)修飾符功能m輸出數(shù)據(jù)域寬,數(shù)據(jù)長度<m,左補空格;否則按實際輸出輸出數(shù)據(jù)在域內左對齊(缺省右對齊)-指定在有符號數(shù)的正數(shù)前顯示正號(+)+輸出數(shù)值時指定左面不使用的空位置自動填00在八進制和十六進制數(shù)前顯示前導0,0x#在d,o,x,u前,指定輸出精度為long型在e,f,g前,指定輸出精度為double型l例m.n運行1234,1234結果:123.456000,123.456000,

123.5,123.46,1.23e+02

a運行結果:Hello,world!

Hello,world!

HelloHelloHel

例inta=1234;floatf=123.456;charch=‘a(chǎn)’;printf(“%8d,%2d\n”,a,a);printf(“%f,%8f,%8.1f,%.2f,%.2e\n”,f,f,f,f,f);printf(“%3c\n”,ch);例staticchara[]=“Hello,world!”printf(“%s\n%15s\n%10.5s\n%2.5s\n%.3s\n”,a,a,a,a,a);運行結果:1234,1234

123.46,123.5

Hello,Hel例inta=1234;floatf=123.456;staticcharc[]=“Hello,world!”;printf(“%8d,%-8d\n”,a,a);printf(“%10.2f,%-10.1f\n”,f,f);printf(“%10.5s,%-10.3s\n”,c,c);例-例inta=1234;floatf=123.456;printf(“%08d\n”,a);printf(“%010.2f\n”,f);printf(“%0+8d\n”,a);printf(“0+10.2f\n”,f);例0、+例inta=123;printf(“%o,%#o,%x,%#x\n”,a,a,a,a);

#例longa=65536;printf(“%d,%8ld\n”,a,a);

例l00000000000000010000000000000000//00001234//0000123.46//000+1234//000+123.56//173,0173,7b,0x7b//0,65536返回格式:getchar()功能:從鍵盤讀一字符返值:正常,返回讀取的代碼值;出錯,返回EOF(-1)4.4

數(shù)據(jù)輸入字符輸入函數(shù)

/*ch3_4.c*/#include<stdio.h>main(){intc;printf("Enteracharacter:");c=getchar();printf("%c--->hex%x\n",c,c);}運行結果:Enteracharacter:A

A--->hex41格式輸入函數(shù)格式:scanf(“格式控制串”,地址表)功能:按指定格式從鍵盤讀入數(shù)據(jù),存入地址表指定的存儲單元中,并按回車鍵結束返值:正常,返回輸入數(shù)據(jù)個數(shù)地址表:變量的地址,常用取地址運算符&格式字符:d,i,o,x,u,c,s,f,e例scanf(“%d”,&a);

輸入:10

則a=10例scanf(“%x”,&a);

輸入:11

則a=17例scanf(“%4d%2d%2d”,&yy,&mm,&dd);

輸入19991015

則1999yy,10mm,15dd附加格式說明符(修飾符)l修飾符功能hm*用于d,o,x前,指定輸入為short型整數(shù)用于d,o,x前,指定輸入為long型整數(shù)用于e,f前,指定輸入為double型實數(shù)指定輸入數(shù)據(jù)寬度,遇空格或不可轉換字符則結束抑制符,指定輸入項讀入后不賦給變量附加格式說明符(修飾符)l修飾符功能hm*用于d,o,x前,指定輸入為short型整數(shù)用于d,o,x前,指定輸入為long型整數(shù)用于e,f前,指定輸入為double型實數(shù)指定輸入數(shù)據(jù)寬度,遇空格或不可轉換字符則結束抑制符,指定輸入項讀入后不賦給變量例scanf(“%3c%2c”,&c1,&c2);

輸入abcde

則‘a(chǎn)’c1,‘d’c2附加格式說明符(修飾符)l修飾符功能hm*用于d,o,x前,指定輸入為short型整數(shù)用于d,o,x前,指定輸入為long型整數(shù)用于e,f前,指定輸入為double型實數(shù)指定輸入數(shù)據(jù)寬度,遇空格或不可轉換字符則結束抑制符,指定輸入項讀入后不賦給變量例scanf(“%2d%*3d%2d”,&a,&b);

輸入1234567

則12a,67b例scanf(“%3d%*4d%f”,&k,&f);

輸入12345678765.43則123k,8765.43f輸入分隔符的指定一般以空格、TAB或回車鍵作為分隔符其它字符做分隔符:格式串中兩個格式符間字符例scanf(“%d%o%x”,&a,&b,&c);printf(“a=%d,b=%d,c=%d\n”,a,b,c);

輸入123123123

輸出a=123,b=83,c=291例scanf(“%d:%d:%d”,&h,&m,&s);

輸入12:30:45則12h,30m,45s輸入分隔符的指定一般以空格、TAB或回車鍵作為分隔符其它字符做分隔符:格式串中兩個格式符間字符例scanf(“%d,%d”,&a,&b)

輸入3,4

則3a,4b例scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);

輸入a=12,b=24,c=36說明:用“%c”格式符時,空格和轉義字符作為有效字符輸入如scanf(“%c%c%c”,&c1,&c2,&c3);

若輸入abc

則ac1,

c2,bc3輸入數(shù)據(jù)時,遇以下情況認為該數(shù)據(jù)結束:遇空格、TAB、或回車遇寬度結束遇非法輸入如scanf(“%d%c%f”,&a,&b,&c);

若輸入1234a123o.26

則1234a,‘a(chǎn)’b,123c說明:用“%c”格式符時,空格和轉義字符作為有效字符輸入輸入數(shù)據(jù)時,遇以下情況認為該數(shù)據(jù)結束:遇空格、TAB、或回車遇寬度結束遇非法輸入解決方法:(1)用getchar()清除(2)用函數(shù)fflush(stdin)清除全部剩余內容(3)用格式串中空格或“%*c”來“吃掉”說明:用“%c”格式符時,空格和轉義字符作為有效字符輸入輸入數(shù)據(jù)時,遇以下情況認為該數(shù)據(jù)結束:遇空格、TAB、或回車遇寬度結束遇非法輸入例intx;charch;scanf(“%d”,&x);

ch=getchar();printf(“x=%d,ch=%d\n”,x,ch);執(zhí)行:123

輸出:x=123,ch=10例intx;charch;scanf(“%d”,&x);

scanf(“%c”,&ch);printf(“x=%d,ch=%d\n”,x,ch);執(zhí)行:123

輸出:x=123,ch=10說明:用“%c”格式符時,空格和轉義字符作為有效字符輸入輸入數(shù)據(jù)時,遇以下情況認為該數(shù)據(jù)結束:遇空格、TAB、或回車遇寬度結束遇非法輸入例intx;charch;scanf(“%d”,&x);

scanf(“%c”,&ch);或scanf(“%*c%c”,&ch);

返回4.5

程序舉例/*ch3_12.c*/#include<math.h>#include<stdio.h>main(){floata,b,c,s,area;scanf("%f%f%f",&a,&b,&c);s=1.0/2*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c));printf("a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n",a,b,c,s);printf("area=%7.2f\n",area);}例輸入三角形邊長,求面積輸入:346

輸出:a=3.00,b=4.00,c=6.00s=6.50area=5.33文件包含預處理命令變量定義輸入數(shù)據(jù)輸出數(shù)據(jù)例從鍵盤輸入大寫字母,用小寫字母輸出/*ch3_13.c*/#include"stdio.h"main(){charc1,c2;

c1=getchar();printf("%c,%d\n",c1,c1);

c2=c1+32;printf("%c,%d\n",c2,c2);}輸入:A

輸出:A,65a,97/*ch3_14.c*/#include<stdio.h>#include<math.h>main(){floata,b,c,disc,x1,x2,p,q;scanf("a=%f,b=%f,c=%f",&a,&b,&c);disc=b*b-4*a*c;p=-b/(2*a);q=sqrt(disc)/(2*a);x1=p+q;x2=p-q;printf("\n\nx1=%5.2f\nx2=%5.2f\n",x1,x2);}輸入:a=1,b=3,c=2

輸出:x1=-1.00x2=-2.00返回關系運算符與關系表達式邏輯運算符與邏輯表達式if語句(條件運算符與條件表達式)switch語句程序舉例第五章選擇結構程序設計5.1關系運算符和表達式關系運算符種類:<<===>=>!=結合方向:自左向右優(yōu)先級別:<<=>>===!=優(yōu)先級6(高)優(yōu)先級7(低)關系表達式的值:是邏輯值“真”或“假”,用1和0表示<>//表達式值1//表達式值1//表達式值0//d=1//f=0例c>a+b//c>(a+b)a>b!=c//(a>b)!=ca==b<c//a==(b<c)a=b>c//a=(b>c)

例inta=3,b=2,c=1,d,f;a>b(a>b)==cb+c<ad=a>bf=a>b>c算術運算符關系運算符賦值運算符高低關系運算注意:<>例若a=0;b=0.5;x=0.3;

則a<=x<=b的值為0例5>2>7>8在C中是允許的,值為0例inti=1,j=7,a;a=i+(j%4!=0);

則a=2例‘a(chǎn)’>0結果為‘A’>100結果為10關系運算注意:例注意區(qū)分“=”與“==”inta=0,b=1;if(a=b)printf(“aequaltob”);elseprintf(“anotequaltob”);例應避免對實數(shù)作相等或不等的判斷如1.0/3.0*3.0==1.0結果為可改寫為:fabs(1.0/3.0*3.0-1.0)<1e-60返回aequaltobfabs()取絕對值函數(shù)5.2邏輯運算符和表達式邏輯運算符種類:!(非)&&(與)||(或)邏輯運算真值表C語言中,

運算量:

0表示

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論