C語(yǔ)言程序設(shè)計(jì)技術(shù)基礎(chǔ)課件_第1頁(yè)
C語(yǔ)言程序設(shè)計(jì)技術(shù)基礎(chǔ)課件_第2頁(yè)
C語(yǔ)言程序設(shè)計(jì)技術(shù)基礎(chǔ)課件_第3頁(yè)
C語(yǔ)言程序設(shè)計(jì)技術(shù)基礎(chǔ)課件_第4頁(yè)
C語(yǔ)言程序設(shè)計(jì)技術(shù)基礎(chǔ)課件_第5頁(yè)
已閱讀5頁(yè),還剩625頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

C語(yǔ)言程式設(shè)計(jì)技術(shù)基礎(chǔ)

§1.1電腦程式的基本概念§1.2電腦程式設(shè)計(jì)的步驟與方法§1.3演算法及其表示§1.4電腦程式設(shè)計(jì)語(yǔ)言

§1.5C語(yǔ)言程式的執(zhí)行過程§1.6C語(yǔ)言程式開發(fā)環(huán)境第1章引言§1.1電腦程式的基本概念程式概念廣義:通常指完成某項(xiàng)工作的一整套活動(dòng)過程及活動(dòng)方式。狹義:使電腦完成某一特定任務(wù)而編寫的若干條指令的有序集合。

電腦程式具有如下性質(zhì)

目的性、分步性、有限性、有序性、操作性

§1.2電腦程式設(shè)計(jì)的步驟與方法1.2.1電腦程式設(shè)計(jì)的步驟1.2.2電腦結(jié)構(gòu)化程式設(shè)計(jì)方法1.2.1電腦程式設(shè)計(jì)的步驟問題分析演算法設(shè)計(jì)程式編碼調(diào)試運(yùn)行文檔編制

1.2.2電腦結(jié)構(gòu)化程式設(shè)計(jì)方法

程式設(shè)計(jì)方法發(fā)展的幾個(gè)階段

為什麼學(xué)習(xí)結(jié)構(gòu)化程式設(shè)計(jì)方法

結(jié)構(gòu)化程式設(shè)計(jì)思想

結(jié)構(gòu)化編碼結(jié)構(gòu)化程式的特點(diǎn)結(jié)構(gòu)化程式的分析方法模組化設(shè)計(jì)

§1.3演算法及其表示1.3.1演算法的概念與特點(diǎn)

1.3.2演算法的表示

1.3.1演算法的概念與特點(diǎn)演算法的概念演算法是指為解決某個(gè)特定問題而採(cǎi)取的方法和步驟。

演算法的特點(diǎn)有窮性確定性有零個(gè)或多個(gè)輸入有一個(gè)或多個(gè)輸出有效性1.3.2演算法的表示自然語(yǔ)言流程圖N-S圖偽代碼描述

偽代碼是一種近似高級(jí)語(yǔ)言但又不受語(yǔ)法約束的一種語(yǔ)言描述方式,它用一種介於自然語(yǔ)言和程式設(shè)計(jì)語(yǔ)言之間的文字和符號(hào)來描述演算法。開始/結(jié)束框處理框判斷框輸入/輸出框流程線連接符ABTBFAPAPTFFTAPABFTPAB當(dāng)P為真A直到P為真A1.3.2演算法的表示(例子)【例1-1】任意輸入2個(gè)數(shù),按昇冪(從小到大排列)輸出到螢?zāi)簧?。?qǐng)給出解決問題的演算法。Fval1→xval2→yTx→ty→xt→yx>yprintx,y輸入val1,val2結(jié)束開始x→ty→xt→y輸入val1,val2val1→x,val2→y輸出x,yx>yTF輸入任意兩個(gè)數(shù)val1、val2賦給變數(shù)x與yval1→xval2→yifx>ythenx→t,y→x,t→y,printx,yelseprintx,y

§1.4電腦程式設(shè)計(jì)語(yǔ)言1.4.1電腦程式設(shè)計(jì)語(yǔ)言簡(jiǎn)介1.4.2C語(yǔ)言簡(jiǎn)介1.4.3C語(yǔ)言程式的基本結(jié)構(gòu)1.4.1電腦程式設(shè)計(jì)語(yǔ)言簡(jiǎn)介電腦程式設(shè)計(jì)語(yǔ)言分類程式設(shè)計(jì)語(yǔ)言可以分為機(jī)器語(yǔ)言、組合語(yǔ)言和高級(jí)語(yǔ)言三大類。翻譯程式的方式

編譯方式事先編好的一個(gè)稱為“編譯程序”的程式,將其放在電腦中。當(dāng)高級(jí)語(yǔ)言根源程式輸入到電腦中時(shí),編譯程序便把根源程式整個(gè)翻譯成機(jī)器指令表示的目標(biāo)程式。然後執(zhí)行該目標(biāo)程式,得到計(jì)算結(jié)果。解釋方式

事先編好的一個(gè)稱為“解釋程式”的程式,將其放在電腦中。當(dāng)高級(jí)語(yǔ)言根源程式輸入到電腦中時(shí),解釋程式將根源程式的每一條語(yǔ)句逐句翻譯,逐句執(zhí)行,即邊解釋邊執(zhí)行。

1.4.2C語(yǔ)言簡(jiǎn)介C語(yǔ)言的發(fā)展歷程

C語(yǔ)言起源於

BCPL語(yǔ)言。Ken

LaneThompson、DennisM.Ritchie在B語(yǔ)言的基礎(chǔ)上設(shè)計(jì)出了C語(yǔ)言,並於Ken

Thompson合作開發(fā)了C語(yǔ)言版的UNIX操作系統(tǒng)。C語(yǔ)言的主要特點(diǎn)程式設(shè)計(jì)模組化、函數(shù)方式操作、數(shù)據(jù)類型多樣化、運(yùn)算功能強(qiáng)、存儲(chǔ)類型豐富、具有預(yù)處理能力、程式簡(jiǎn)潔

1.4.3C語(yǔ)言程式的基本結(jié)構(gòu)

【例1-6】在螢?zāi)簧陷敵鲆恍匈Y訊。#include<stdio.h>voidmain()/*主函數(shù)前面的void表示此函數(shù)是一個(gè)在執(zhí)行後不產(chǎn)生返回值的“空類型”*/{ printf(“C語(yǔ)言程式設(shè)計(jì)基礎(chǔ)\n”);/*編譯系統(tǒng)提供的標(biāo)準(zhǔn)輸出函數(shù)*/}/*函數(shù)體由大括弧{}擴(kuò)住*/

本程式的執(zhí)行結(jié)果為:C語(yǔ)言程式設(shè)計(jì)基礎(chǔ)1.4.3C語(yǔ)言程式的基本結(jié)構(gòu)

【例1-7】編寫一個(gè)C語(yǔ)言程式,對(duì)鍵盤輸入的任意兩個(gè)整數(shù)求和。

#include<stdio.h>intAdd(inta,intb)/*函數(shù)功能:計(jì)算兩個(gè)整數(shù)相加之和*/

{/*形式參數(shù):整型數(shù)a和b*/intz; /*定義本函數(shù)用到的變數(shù)z*/z=a+b; /*整型數(shù)a和b的和放在z中*/return(z);/*將z的值作為函數(shù)Add的返回值*/}voidmain()/*主函數(shù)*/{intx,y,sum=0; /*定義兩個(gè)整型變數(shù)x,y和sum*/printf("inputtwointegers:");scanf("%d,%d",&x,&y);/*輸入兩個(gè)整型數(shù)x和y*/sum=Add(x,y);/*調(diào)用函數(shù)Add計(jì)算x和y之和*/printf("sum=%d\n",sum);/*輸出x和y之和*/}在運(yùn)行上面這個(gè)程式時(shí),首先,螢?zāi)簧巷@示一條提示資訊:

Inputtwointegers:要求用戶從鍵盤輸入兩個(gè)整數(shù)。假設(shè)用戶鍵入10和9,即

Inputtwointegers:10,9↙1.4.3C語(yǔ)言程式的基本結(jié)構(gòu)

對(duì)C語(yǔ)言程式的結(jié)構(gòu)說明:1.函數(shù)是C語(yǔ)言程式的基本單位C程式是由函數(shù)構(gòu)成的,一個(gè)C語(yǔ)言程式必須有且僅有一個(gè)用main作為名字的函數(shù),這個(gè)函數(shù)通常被稱為主函數(shù)。C程式總是從main函數(shù)開始執(zhí)行,而與它在程式中的位置無(wú)關(guān)。在有main函數(shù)的前提下,可以根據(jù)需要包含零到多個(gè)其他函數(shù)。函數(shù)可以是系統(tǒng)提供的庫(kù)函數(shù),如例1-6中的printf函數(shù),也可以是用戶自定義函數(shù),如例1-7中的Add函數(shù)。C語(yǔ)言的這個(gè)特點(diǎn)便於進(jìn)行模組化程式設(shè)計(jì)。

1.4.3C語(yǔ)言程式的基本結(jié)構(gòu)

對(duì)C語(yǔ)言程式的結(jié)構(gòu)說明:2.函數(shù)由函數(shù)首部和函數(shù)體兩部分組成(1)函數(shù)首部就是每個(gè)函數(shù)在定義或聲明時(shí)的第一行,它包括函數(shù)名、函數(shù)類型、形參名、形參類型的說明,如例1-7中函數(shù)Add的首部為:int Add(int a, int b)函數(shù)類型函數(shù)名形參類型形參名形參類型形參名函數(shù)名後的形參必須用一對(duì)圓括號(hào)括起來,若沒有形參時(shí)一對(duì)圓括號(hào)也不能省略,它已成為函數(shù)的標(biāo)誌,如例1-6中對(duì)主函數(shù)main的定義。

(2)函數(shù)體由函數(shù)首部下面最外層的一對(duì)大花括弧中的內(nèi)容組成,它可以包括變數(shù)聲明和所調(diào)用函數(shù)的聲明,還可以包括若干執(zhí)行語(yǔ)句,聲明部分可以看作是對(duì)函數(shù)中“對(duì)象”的描述,執(zhí)行語(yǔ)句是對(duì)函數(shù)所要實(shí)現(xiàn)的“動(dòng)作”的描述。當(dāng)然函數(shù)體中也可以什麼都沒有成為一個(gè)空函數(shù)。如:voidempty(){}1.4.3C語(yǔ)言程式的基本結(jié)構(gòu)

對(duì)C語(yǔ)言程式的結(jié)構(gòu)說明:3.C語(yǔ)言程式的書寫格式與規(guī)則(1)C語(yǔ)言程式中的每條語(yǔ)句和數(shù)據(jù)聲明的最後都必須以分號(hào)作為結(jié)束標(biāo)誌,分號(hào)是C語(yǔ)句的必要組成部分。(2)C語(yǔ)言程式的書寫格式比較自由,既允許在一行內(nèi)寫多條語(yǔ)句,也允許將一條語(yǔ)句分寫在多行上,而不必加任何標(biāo)識(shí)。為了提高程式的可讀性和可測(cè)試性,建議讀者在寫程式的時(shí)候,一行內(nèi)只寫一條語(yǔ)句,養(yǎng)成良好的、規(guī)範(fàn)的程式設(shè)計(jì)風(fēng)格。(3)在C語(yǔ)言程式中有一些用“/*”和“*/”包含起來的內(nèi)容,它們被稱為注釋,是對(duì)程式功能的必要說明和解釋。注釋可以出現(xiàn)在程式的任何位置,但“/*”和“*/”必須配對(duì)使用。C編譯程序並不對(duì)注釋的內(nèi)容進(jìn)行語(yǔ)法檢查,可用英文也可以用漢字來書寫注釋內(nèi)容,一行寫不下,可以繼續(xù)在下一行書寫,只要是在一對(duì)“/*”和“*/”中間的內(nèi)容都被當(dāng)作注釋來處理。寫注釋時(shí)應(yīng)注意左斜線“/”和星號(hào)“*”之間不能留有空格。雖然有無(wú)注釋並不影響程式的功能和正確性,但由於注釋能起到“提示”代碼的作用,有助於讀者更快、更好地理解程式,提高程式的可讀性。因此,規(guī)範(fàn)化程式設(shè)計(jì)提倡給程式添加必要的注釋?!?.5C語(yǔ)言程式的執(zhí)行過程用高級(jí)語(yǔ)言編寫的程式稱為“根源程式”,用C語(yǔ)言編寫的程式被稱為C語(yǔ)言根源程式。C語(yǔ)言根源程式不能在電腦上直接運(yùn)行,要運(yùn)行C語(yǔ)言根源程式就需要經(jīng)過編輯、編譯、連接及執(zhí)行四個(gè)步驟。(1)編輯:編輯是用戶把編寫好的C語(yǔ)言根源程式輸入電腦,並以文本檔的形式存放在磁片上。其標(biāo)識(shí)為:“檔案名.c”。其中檔案名是由用戶指定的符合C識(shí)別字規(guī)定的任意字元組合,擴(kuò)展名要求為“.c”,表示是C根源程式。例如file1.c、t.c等。若發(fā)現(xiàn)書寫錯(cuò)誤,可修改根源程式。(2)編譯:編譯是把C語(yǔ)言根源程式翻譯成用機(jī)器語(yǔ)言表示的目標(biāo)檔。編譯過程由C編譯系統(tǒng)提供的編譯程序完成。編譯程序自動(dòng)對(duì)根源程式進(jìn)行句法和語(yǔ)法檢查,當(dāng)發(fā)現(xiàn)錯(cuò)誤時(shí),就將錯(cuò)誤的類型和所在的位置顯示出來,提供給用戶,以幫助用戶修改根源程式中的錯(cuò)誤。此時(shí)應(yīng)重新進(jìn)入編輯狀態(tài),對(duì)根源程式進(jìn)行修改後再重新編譯,直到通過編譯為止。如果編譯通過就自動(dòng)形成目標(biāo)代碼並對(duì)目標(biāo)代碼進(jìn)行優(yōu)化後生成目標(biāo)檔。目標(biāo)程式的檔標(biāo)識(shí)是:"檔案名.obj"。這是系統(tǒng)規(guī)定的形式,擴(kuò)展名".obj"是目標(biāo)程式的檔類型標(biāo)識(shí)?!?.5C語(yǔ)言程式的執(zhí)行過程(3)連接:程式連接過程是用系統(tǒng)提供的連接程式(也稱鏈接程式或裝配程式)將目標(biāo)程式、庫(kù)函數(shù)或其他目標(biāo)程式連接裝配成可執(zhí)行的目標(biāo)程式??蓤?zhí)行程式的檔案名為:"檔案名.exe",擴(kuò)展名".exe"是可執(zhí)行程式的檔類型標(biāo)識(shí)。絕大部分系統(tǒng)生成的可執(zhí)行檔的擴(kuò)展名是".exe"。有的C編譯系統(tǒng)把編譯和連接放在一個(gè)命令檔中,用一條命令即可完成編譯和連接任務(wù),減少了操作過程。(4)執(zhí)行:運(yùn)行程式是指將可執(zhí)行的目標(biāo)程式投入運(yùn)行。以獲取程式處理的結(jié)果。如果程式運(yùn)行結(jié)果不正確,可重新回到第一步,重新對(duì)程式進(jìn)行編輯修改、編譯和運(yùn)行。與編譯、連接不同的是,運(yùn)行程式可以脫離語(yǔ)言處理環(huán)境。因?yàn)樗菍?duì)一個(gè)可執(zhí)行程式進(jìn)行操作,與C語(yǔ)言本身已經(jīng)沒有聯(lián)繫,所以可以在語(yǔ)言開發(fā)環(huán)境下運(yùn)行,也可直接在操作系統(tǒng)下運(yùn)行。必須指出,對(duì)不同型號(hào)電腦上的C語(yǔ)言版本,上機(jī)環(huán)境各不相同,編譯系統(tǒng)支持性能各異,上述步驟有些可再分解,有些也可集成進(jìn)行批處理,但邏輯上是基本相同的?!?.5C語(yǔ)言程式的執(zhí)行過程編輯程式編譯程序連接程式庫(kù)函數(shù)根源程式檔案名.c目標(biāo)程式檔案名.obj可執(zhí)行程式檔案名.exe編譯連接其他目標(biāo)檔出錯(cuò)出錯(cuò)出錯(cuò)執(zhí)行結(jié)果C編譯系統(tǒng)§1.6C語(yǔ)言程式開發(fā)環(huán)境

目前C語(yǔ)言的集成開發(fā)工具有許多,常用的集成開發(fā)環(huán)境有TurboC、BorlandC、VisualC++、DevC++、Gcc等。其中,TurboC、BorlandC是DOS環(huán)境下的程式,而VisualC++、DevC++是Windows環(huán)境下的程式,Gcc則是linux環(huán)境下的開發(fā)軟體。除了TurboC與BorlandC之外,其他開發(fā)工具都可以開發(fā)C++語(yǔ)言程式。相比較DOS下的TurboC2.0等軟體,在Windows下的開發(fā)環(huán)境更適合於圖形化的操作介面,同時(shí)還可以使用滑鼠,這給程式的開發(fā)帶來了很多使用上的方便。目前使用較多的開發(fā)環(huán)境是VisualC++6.0,在等級(jí)考試時(shí)也多採(cǎi)用此環(huán)境對(duì)C語(yǔ)言程式進(jìn)行編輯與執(zhí)行?!霽C++6.0程式開發(fā)環(huán)境(啟動(dòng))1)點(diǎn)擊Windows“開始”菜單,選擇“程式”組下“MicrosoftVisualStudio6.0”子組下的快捷方式MicrosoftVisualC++6.0啟動(dòng)VisualC++6.0。2)點(diǎn)擊Windows“開始“菜單,選擇“運(yùn)行”,輸入msdev,即可啟動(dòng)。啟動(dòng)後的介面如下§VC++6.0開發(fā)環(huán)境(新建)選擇“File”菜單下的“New”菜單項(xiàng)或直接按Ctrl+N,啟動(dòng)新建嚮導(dǎo),如圖所示§VC++6.0程式開發(fā)環(huán)境選擇在“Projects”屬性頁(yè)選擇Win32ConsoleApplication,在ProjectName中輸入專案名稱demo,在Location中選擇專案檔,如上圖中c:/test/demo,專案所有檔將保存在此檔。輸入完畢,單擊確定按鈕,進(jìn)入下一介面如圖§VC++6.0程式開發(fā)環(huán)境在圖上所示介面中選擇asimpleapplication,然後點(diǎn)擊Finish按鈕,系統(tǒng)顯示圖所示介面。如果想退回上一步可以選擇“Back”按鈕

§VC++6.0程式開發(fā)環(huán)境保存工程比較簡(jiǎn)單,選擇File菜單中的Saveworkspace即可。這還不夠,專案由多個(gè)根源程式構(gòu)成,在保存工程時(shí),需要保存相關(guān)的根源程式,通過選擇File菜單中的Save命令分別保存修改後的根源程式即可。選擇File菜單中的Openworkspace,選擇相應(yīng)的專案工作區(qū)檔或?qū)0笝n即可,例如本例中打開“C:/test/demo/demo.dsw”即可,打開後的介面如下.§VC++6.0程式開發(fā)環(huán)境選擇File菜單中的new命令,在新建嚮導(dǎo)中,選擇Files屬性,選擇C++SourceFile,並在File中輸入檔案名,單擊OK即可?!?.1C語(yǔ)言的基本詞法字元集

在C語(yǔ)言程式中允許出現(xiàn)的所有基本字元的組合稱為C語(yǔ)言的字元集。主要分為下列幾類:(1)大小寫英文字母各26個(gè)(共52個(gè))(2)數(shù)字(10個(gè))(3)鍵盤符號(hào)(33個(gè))

轉(zhuǎn)義字元:是由“反斜杠字元(\)”開始後跟單個(gè)字元或若干個(gè)字元組成,通常用來表示鍵盤上的控制代碼或特殊符號(hào)。保留字在C語(yǔ)言的程式中有特殊含義的英語(yǔ)單詞稱為“保留字”,也稱“關(guān)鍵字”,主要用於構(gòu)成語(yǔ)句,進(jìn)行存儲(chǔ)類型和數(shù)據(jù)類型定義。

注:所有的保留字均由小寫字母組成。C語(yǔ)言的關(guān)鍵字共有32個(gè),根據(jù)關(guān)鍵字的作用,可分為數(shù)據(jù)類型關(guān)鍵字、控制語(yǔ)句關(guān)鍵字、存儲(chǔ)類型關(guān)鍵字和其他關(guān)鍵字4類。

(1)數(shù)據(jù)類型關(guān)鍵字(12個(gè)):char,double,enum,float,int,long,short,signed,struct,union,unsigned,void。

(2)控制語(yǔ)句關(guān)鍵字(12個(gè)):break,case,continue,default,do,else,for,goto,if,return,switch,while。

(3)存儲(chǔ)類型關(guān)鍵字(4個(gè)):auto,extern,register,static。

(4)其他關(guān)鍵字(4個(gè)):const,sizeof,typedef,volatile。識(shí)別字識(shí)別字是用戶自定義的一種字元序列,通常用來表示程式中需要辨認(rèn)的對(duì)象名稱,如符號(hào)常量、變數(shù)、數(shù)組、函數(shù)等對(duì)象的名字。

C語(yǔ)言規(guī)定,識(shí)別字是由字母或下畫線開頭的字母、數(shù)字、下畫線組成的一串符號(hào)。下麵列出的識(shí)別字是合法的:

sum,near,day,Wang,_total,MONTH,for_erver1_2

下麵是不合法的識(shí)別字:

3_day,list.er,*123,#3Dfg,last-3-4

在使用識(shí)別字時(shí)還必須注意以下幾點(diǎn):

(1)在識(shí)別字中,大小寫字母是有區(qū)別的。

(2)ANSIC標(biāo)準(zhǔn)沒有規(guī)定識(shí)別字的長(zhǎng)度,但是各種版本的C語(yǔ)言編譯系統(tǒng)都有自己的規(guī)定。

(3)識(shí)別字雖然可以由程式員隨意定義,但識(shí)別字是用於標(biāo)識(shí)某個(gè)量的符號(hào)。見名知意。

(4)C語(yǔ)言規(guī)定,用戶選取的識(shí)別字不能是C語(yǔ)言規(guī)定的保留字。

C語(yǔ)言的詞類

(1)常量:在程式運(yùn)行中其值不發(fā)生變化的數(shù)據(jù)。

(2)變數(shù):用來存放程式運(yùn)行中變化的數(shù)據(jù)。

(3)運(yùn)算符:用來表示簡(jiǎn)單加工計(jì)算的符號(hào)。

(4)函數(shù)調(diào)用:用來代表調(diào)用指定函數(shù)後獲得的結(jié)果。

(5)運(yùn)算式:用常量、變數(shù)、函數(shù)調(diào)用、運(yùn)算符組成的式子,用來表示簡(jiǎn)單的加工計(jì)算。

(6)保留字:在程式或語(yǔ)句中,用來表示特定語(yǔ)法含義的英語(yǔ)單詞。§2.2常量和變數(shù)

在程式執(zhí)行過程中,其值不發(fā)生改變的量稱為常量,其值可變的量稱為變數(shù)。它們可與數(shù)據(jù)類型結(jié)合起來進(jìn)行分類。2.2.1常量和符號(hào)常量

(1)直接常量(字面常量)

整型常量:23、0、-5;實(shí)型常量:5.7、-2.23;字元常量:a、e。

(2)符號(hào)常量在C語(yǔ)言中,可以用一個(gè)識(shí)別字來表示一個(gè)常量,稱為符號(hào)常量。符號(hào)常量在使用之前必須先定義,其一般形式為:

#define識(shí)別字常量

注:習(xí)慣上符號(hào)常量的識(shí)別字用大寫字母,變數(shù)識(shí)別字用小寫字母,以示區(qū)別。

【例2-1】符號(hào)常量的使用,求圓面積。#definePI3.14159265#include<stdio.h>voidmain(){ floats,r; r=5; s=PI*r*r; printf("s=%f\n",s);}使用符號(hào)常量具有下述幾個(gè)好處。(1)書寫簡(jiǎn)單不易出錯(cuò)。(2)修改程式方便。(3)含義清楚。2.2.2變數(shù)

在程式運(yùn)行過程中,其值可以變化的量稱為變數(shù)。每一個(gè)變數(shù)都有一個(gè)名字,稱為變數(shù)名,以便被引用。一個(gè)變數(shù)在內(nèi)存中佔(zhàn)據(jù)一定的存儲(chǔ)空間,在該存儲(chǔ)空間中存放一個(gè)屬於某種數(shù)據(jù)類型的數(shù)據(jù),稱為變數(shù)的值。【例2-2】變數(shù)舉例。#include<stdio.h>voidmain(){ inta; /*定義變數(shù)a*/ a=3; /*給變數(shù)a賦值為3*/ printf("thefirstvalueis:%d\n",a);/*輸出此時(shí)a的值*/ a=5; /*給變數(shù)a賦值為5*/ printf("thesecondvalueis:%d\n",a); /*輸出此時(shí)a的值*/}程式運(yùn)行的結(jié)果為:thefirstvalueis:3thesecondvalueis:5

特別注意:在C語(yǔ)言中,要求對(duì)所有用到的變數(shù)作強(qiáng)制定義,也就是必須“先定義,後使用”,就像前面的例子一樣,這樣做的目的是:

(1)凡未被事先定義的,系統(tǒng)不把它作為變數(shù)名,這就能保證程式中變數(shù)名使用得正確。

(2)每一個(gè)變數(shù)被指定為一個(gè)確定類型,在編譯時(shí)就能為其分配相應(yīng)的存儲(chǔ)單元。

(3)指定每一個(gè)變數(shù)屬於一個(gè)類型,這就便於在編譯時(shí)根據(jù)此檢查該變數(shù)所進(jìn)行的運(yùn)算是否合法。§2.3C語(yǔ)言的基本數(shù)據(jù)類型

2.3.2整型數(shù)據(jù)

1.整型常量的表示方法

1)整型常量的表示整型常量就是整常數(shù)。在C語(yǔ)言中,使用的整常數(shù)有八進(jìn)制、十六進(jìn)制和十進(jìn)位3種。

(1)八進(jìn)制整常數(shù):八進(jìn)制整常數(shù)必須以數(shù)字0開頭,即以0作為八進(jìn)制數(shù)的首碼。數(shù)碼取值為0~7。八進(jìn)制數(shù)通常是作為無(wú)符號(hào)數(shù)(正整數(shù))來使用的。

(2)十六進(jìn)制整常數(shù):十六進(jìn)制整常數(shù)的首碼為0X或0x。其數(shù)碼取值為0~9、A~F或a~f。十六進(jìn)制數(shù)通常也是作為無(wú)符號(hào)數(shù)(正整數(shù))來使用的。

(3)十進(jìn)位整常數(shù):十進(jìn)位整常數(shù)沒有首碼。其數(shù)碼為0~9。2)整型常數(shù)的尾碼在16位字長(zhǎng)的機(jī)器上,基本整型的長(zhǎng)度也為16位,因此表示的數(shù)的範(fàn)圍也是有限定的。如果要表示的數(shù)超過了上述取值範(fàn)圍,就必須用長(zhǎng)整型數(shù)來表示。長(zhǎng)整型數(shù)是用尾碼“L”或“l(fā)”來表示的。長(zhǎng)整常數(shù)158L和基本整常數(shù)158在數(shù)值上並無(wú)區(qū)別。但對(duì)158L,因?yàn)槭情L(zhǎng)整型量,C編譯系統(tǒng)將為它分配4個(gè)位元組存儲(chǔ)空間。而對(duì)158,因?yàn)槭腔菊停环峙鋬蓚€(gè)位元組的存儲(chǔ)空間。因此在運(yùn)算和輸出格式上要特別注意,避免出錯(cuò)。整型數(shù)據(jù)

無(wú)符號(hào)數(shù)也可用尾碼表示,整型常數(shù)的無(wú)符號(hào)數(shù)的尾碼為“U”或“u”。例如,358u表示為無(wú)符號(hào)數(shù),在存儲(chǔ)單元中最高位不作為符號(hào)位,而是用來存儲(chǔ)數(shù)據(jù)。整型數(shù)據(jù)2.整型變數(shù)

1)整型數(shù)據(jù)在內(nèi)存中的存放形式數(shù)據(jù)的表示方法有多種多樣,但是所有數(shù)據(jù)在內(nèi)存當(dāng)中都是以二進(jìn)位形式存放的。下麵定義一個(gè)整型變數(shù)a:

inta; /*定義a為整型變數(shù)*/a=12; /*給整型變數(shù)a賦值為12*/

在對(duì)程式編譯連接時(shí)由系統(tǒng)會(huì)給每一個(gè)變數(shù)名分配一個(gè)記憶體空間,將程式中賦值數(shù)據(jù)保存在對(duì)應(yīng)的記憶體空間中。整型數(shù)據(jù)

實(shí)際上,數(shù)值在內(nèi)存中是以補(bǔ)數(shù)的形式存放的。數(shù)值分為正數(shù)和負(fù)數(shù),其補(bǔ)數(shù)的表示形式是不一樣的。

(1)正數(shù)的補(bǔ)數(shù)。一個(gè)正數(shù)的補(bǔ)數(shù)和這個(gè)數(shù)的原碼(即該數(shù)的二進(jìn)位形式)相同。圖2-2就是正數(shù)12的補(bǔ)數(shù)。

(2)負(fù)數(shù)的補(bǔ)數(shù)。求負(fù)數(shù)的補(bǔ)數(shù)相對(duì)要複雜一些。在電腦中,帶符號(hào)整數(shù)的原碼最高位表示符號(hào)位,0代表正數(shù),1代表負(fù)數(shù)。首先,先取數(shù)值的原碼;再將原碼除符號(hào)位的其他部分全部取反,得到反碼;最後,反碼加1,就得到了這個(gè)數(shù)的補(bǔ)數(shù)。整型數(shù)據(jù)2)整型變數(shù)的類型整型變數(shù)可以分為基本型、短整型、長(zhǎng)整型和無(wú)符號(hào)型4種。

(1)基本型:類型說明符為int。

(2)短整型:類型說明符為shortint或short。

(3)長(zhǎng)整型:類型說明符為longint或long。

(4)無(wú)符號(hào)型:類型說明符為unsigned。無(wú)符號(hào)型又與上述3種類型匹配而構(gòu)成:無(wú)符號(hào)基本型:類型說明符為unsignedint或unsigned。無(wú)符號(hào)短整型:類型說明符為unsignedshort。無(wú)符號(hào)長(zhǎng)整型:類型說明符為unsignedlong。整型數(shù)據(jù)

數(shù)據(jù)所占記憶體的位元組數(shù)直接影響到數(shù)據(jù)的取值範(fàn)圍,在C語(yǔ)言中沒有具體規(guī)定各種數(shù)據(jù)類型所占的位元組數(shù),只要求long型數(shù)據(jù)長(zhǎng)度不短於int類型,short類型不長(zhǎng)於int類型即可。到底具體如何實(shí)現(xiàn),是由各電腦系統(tǒng)自行決定的。整型數(shù)據(jù)數(shù)

型取

範(fàn)

圍字

節(jié)

數(shù)int-2147483648~2147483647即-231~(231-1)4(32位)unsignedint0~4294967295即0~(232-1)4(32位)shortint-32768~32767即-215~(215-1)2(16位)unsignedshortint0~65535即0~(216-1)2(16位)longint-2147483648~2147483647即-231~(231-1)4(32位)unsignedlong0~4294967295即0~(232-1)4(32位)【例2-3】各種數(shù)據(jù)類型長(zhǎng)度。#include<stdio.h>voidmain(){ printf("各種數(shù)據(jù)類型長(zhǎng)度:\n\n"); printf("整型:---------------%d\n",sizeof(int)); printf("無(wú)符號(hào)整型:-----------%d\n\n",sizeof(unsignedint)); printf("長(zhǎng)整型:-------------%d\n",sizeof(long)); printf("無(wú)符號(hào)長(zhǎng)整型:----------%d\n\n",sizeof(unsignedlong)); printf("短整型:-------------%d\n",sizeof(shortint)); printf("無(wú)符號(hào)短整型:---------%d\n\n",sizeof(unsignedshortint));}程式運(yùn)行的結(jié)果為:各種數(shù)據(jù)類型長(zhǎng)度:整型:---------------4無(wú)符號(hào)整型:-----------4長(zhǎng)整型:-------------4無(wú)符號(hào)長(zhǎng)整型:---------4短整型:-------------2無(wú)符號(hào)短整型:---------2整型數(shù)據(jù)3)整型變數(shù)的定義

C語(yǔ)言程式中如果要使用變數(shù),必須“先定義,後使用”。定義變數(shù)的一般形式為:類型說明符變數(shù)名識(shí)別字,變數(shù)名識(shí)別字,…;

例如:

inta,b,c; (a,b,c為整型變數(shù))longx,y; (x,y為長(zhǎng)整型變數(shù))unsignedintp,q; (p,q為無(wú)符號(hào)整型變數(shù))整型數(shù)據(jù)

在書寫變數(shù)定義時(shí),應(yīng)注意以下幾點(diǎn):

(1)允許在一個(gè)類型說明符後,定義多個(gè)相同類型的變數(shù)。各變數(shù)名之間用逗號(hào)間隔。類型說明符與變數(shù)名之間至少用一個(gè)空格間隔。

(2)最後一個(gè)變數(shù)名之後必須以“;”號(hào)結(jié)尾。

(3)變數(shù)定義必須放在變數(shù)使用之前。一般放在函數(shù)體的開頭部分。整型數(shù)據(jù)4)整型變數(shù)賦初值

C語(yǔ)言程式中經(jīng)常要對(duì)一些變數(shù)賦初值,以便使用變數(shù)。賦初值的方法有以下兩種。

(1)先定義,再賦初值。例如:

inta,b,c; /*定義a,b,c為整型變數(shù)*/a=2; /*給變數(shù)a賦初值2*/b=8; /*給變數(shù)b賦初值8*/

(2)定義變數(shù)的同時(shí)賦初值。

例如:

inta=2;/*定義a為整型變數(shù),並賦初值為2*/

也可以給被定義的變數(shù)的一部分賦初值。

例如:inta=2,b,c;

如果對(duì)幾個(gè)變數(shù)賦同樣的初值,應(yīng)該這樣表示:

inta=6,b=6,c=6;

表示變數(shù)a、b、c的初值都為6。但是不能寫成:

inta=b=c=6;整型數(shù)據(jù)5)整型數(shù)據(jù)計(jì)算中遇到的問題由前面的知識(shí)可知,不同的數(shù)據(jù)類型都有各自的取值範(fàn)圍,並不是所有的數(shù)據(jù)都可以表示。整型數(shù)據(jù)【例2-4】整型數(shù)據(jù)的溢出。#include<stdio.h>voidmain(){inta,b;a=32767;b=a+1;printf("a=%d\nb=%d\n",a,b);}程式運(yùn)行的結(jié)果為:a=32767b=-327682.3.3實(shí)型數(shù)據(jù)

1實(shí)型常量的表示方法實(shí)型也稱為浮點(diǎn)型。實(shí)型常量也稱為實(shí)數(shù)或浮點(diǎn)數(shù)。在C語(yǔ)言中,實(shí)數(shù)只採(cǎi)用十進(jìn)位。它有兩種形式:十進(jìn)位小數(shù)形式和指數(shù)形式。

(1)十進(jìn)位小數(shù)形式。由數(shù)碼0~9和小數(shù)點(diǎn)組成。例如:

0.0、25.0、5.789、0.13、5.0、300.、-267.8230等均為合法的實(shí)數(shù)。注意:必須有小數(shù)點(diǎn)。(2)指數(shù)形式:由十進(jìn)位數(shù)加階碼標(biāo)誌“e”或“E”及階碼(只能為整數(shù),可以帶符號(hào))組成。

其一般形式為:

aEn(a為十進(jìn)位數(shù),n為十進(jìn)位整數(shù)階碼)

以下是合法的實(shí)數(shù)表示方式:

2.1E5(等於2.1×105)、

3.7E-2(等於3.7×10-2)、

0.5E7(等於0.5×107)、

-2.8E-2(等於-2.8×10-2)。規(guī)範(fàn)化的指數(shù)形式:在字母e(或E)之前的小數(shù)部分中,小數(shù)點(diǎn)左邊應(yīng)有一位(且只能有一位)非零的數(shù)字。實(shí)型數(shù)據(jù)2.實(shí)型變數(shù)

1)實(shí)型變數(shù)的類型及在內(nèi)存中的存放形式實(shí)型變數(shù)分為:?jiǎn)尉_度(float型)、雙精度(double型)和長(zhǎng)雙精度(longdouble型)3類。實(shí)型數(shù)據(jù)類

型比特?cái)?shù)(位元組數(shù))有效數(shù)字位數(shù)取

範(fàn)

圍float32(4)6~7(十進(jìn)位)-3.4×10-38~3.4×1038double64(8)15~16(十進(jìn)位)-1.7×10-308~1.7×10308longdouble64/80/96與編譯器有關(guān)與編譯器有關(guān)

實(shí)型數(shù)據(jù)按指數(shù)形式存儲(chǔ),無(wú)論是單精確度還是雙精度,在內(nèi)存存儲(chǔ)中都分為3個(gè)部分。

(1)符號(hào)位(Sign):0代表正,1代表負(fù)。

(2)指數(shù)位(Exponent):用於存儲(chǔ)科學(xué)計(jì)數(shù)法中的指數(shù)數(shù)據(jù),並且採(cǎi)用移位存儲(chǔ)。

(3)尾數(shù)部分(Mantissa):尾數(shù)部分。實(shí)型數(shù)據(jù)尾數(shù)部分占的位(bit)數(shù)越多,數(shù)的有效數(shù)字越多,精度越高。指數(shù)部分占的位數(shù)越多,則能表示的數(shù)值範(fàn)圍越大。2)實(shí)型數(shù)據(jù)在計(jì)算中遇到的問題實(shí)型變數(shù)是由有限的存儲(chǔ)單元組成的,能提供的有效數(shù)字是有限的。這樣就會(huì)存在舍入誤差。實(shí)型數(shù)據(jù)【例2-5】一個(gè)較大實(shí)數(shù)加一個(gè)較小實(shí)數(shù)。#include<stdio.h>voidmain(){floatx=7.24356E10,y;y=x+54;printf("x=%e\n",x);/*將x的值以指數(shù)形式輸出*/printf("y=%e\n",y);/*將y的值以指數(shù)形式輸出*/}程式運(yùn)行的結(jié)果為:x=7.243560e+010y=7.243560e+010注:由於舍入誤差的原因,進(jìn)行計(jì)算時(shí)要避免一個(gè)較大實(shí)數(shù)和一個(gè)較小實(shí)數(shù)相加減。2.3.4字元型數(shù)據(jù)

1.字元常量

1)一般形式的字元常量字元常量就是用單引號(hào)括起來的一個(gè)字元。例如,'a'、'b'、'='、'+'、'?'等都為字元常量。在C語(yǔ)言中,使用字元常量要注意以下幾點(diǎn):

(1)字元常量只能用單引號(hào)括起來,不能用雙引號(hào)或其他括弧。

(2)字元常量只能是單個(gè)字元,不能是字串。

(3)字元可以是字元集中任意字元。2)特殊形式的字元常量以字元“\”開頭,後跟一個(gè)或幾個(gè)字元的字元序列,即轉(zhuǎn)義字元。轉(zhuǎn)義字元具有特定的含義,不同於字元原有的意義,故稱“轉(zhuǎn)義”字元。使用轉(zhuǎn)義字元時(shí)需要注意以下問題:

(1)轉(zhuǎn)義字元中只能使用小寫字母,每個(gè)轉(zhuǎn)義字元只能看作一個(gè)字元。

(2)\v垂直製錶和\f換頁(yè)符對(duì)螢?zāi)粵]有任何影響,但會(huì)影響印表機(jī)執(zhí)行回應(yīng)操作。

(3)在C語(yǔ)言程式中,使用不可列印字元時(shí),通常用轉(zhuǎn)義字元表示。字元型數(shù)據(jù)字元型數(shù)據(jù)【例2-6】轉(zhuǎn)義字元\a、\b、\t、\r及\n的作用。#include<stdio.h>voidmain(){floatheight;printf("\aPleaseenteryourheight:_____cm\b\b\b\b\b\b\b");scanf("%f",&height);printf("\tYourheightis%.2fcm.\rOh!\n",height);}程式運(yùn)行的結(jié)果為:Pleaseenteryourheight:180.5cmOh!Yourheightis180.50cm.2.字元變數(shù)字元變數(shù)是存放字元常量的變數(shù),其取值是字元常量,即單個(gè)字元。字元變數(shù)的類型說明符是char。字元變數(shù)的定義形式:

char識(shí)別字1,識(shí)別字2,…,識(shí)別字n;

例如:charc1,c2,c3,ch;

定義完成字元變數(shù)以後,各個(gè)變數(shù)可以存放一個(gè)字元。下麵為上例中定義的字元變數(shù)賦值:

c1='a';c2='b';c3='c';ch='d';

C語(yǔ)言中,每個(gè)字元變數(shù)被分配一個(gè)位元組的記憶體空間,因此只能存放一個(gè)字元。字元數(shù)據(jù)是以ASCII碼的形式存放在變數(shù)的記憶體單元之中的。字元型數(shù)據(jù)3.字元變數(shù)與整型變數(shù)的互換使用每個(gè)字元變數(shù)被分配一個(gè)位元組的記憶體空間,字元值是以ASCII碼的形式存放在變數(shù)的記憶體單元之中,所以也可以把它們看成是整型數(shù)據(jù)。C語(yǔ)言允許對(duì)整型變數(shù)賦予字元值,也允許對(duì)字元變數(shù)賦整型值。在輸出時(shí),允許把字元變數(shù)按整型量輸出,也允許把整型變數(shù)按字元量輸出。但是,由於整型變數(shù)占2個(gè)位元組,字元變數(shù)占1個(gè)位元組,當(dāng)整型量按字元量處理時(shí),只有低8位數(shù)據(jù)參與處理,也就是說,字元變數(shù)只能表示0~255之間的整數(shù)。字元型數(shù)據(jù)1)字元變數(shù)可以賦整數(shù)【例2-7】將整數(shù)賦給字元變數(shù)。#include<stdio.h>voidmain(){charc1,c2;c1=97;c2=98;printf("%c%c\n",c1,c2);printf("%d%d\n",c1,c2);}字元型數(shù)據(jù)程式運(yùn)行的結(jié)果為:ab97982)整型變數(shù)可以賦字元常量【例2-8】將字元賦給整型變數(shù)。#include<stdio.h>voidmain(){inti,j;i='a';j='b';printf("%d%c\n",i,i);printf("%d%c\n",j,j);}字元型數(shù)據(jù)程式運(yùn)行的結(jié)果為:97a98b3)字元變數(shù)參與算術(shù)運(yùn)算【例2-9】大小寫字母的轉(zhuǎn)換。#include<stdio.h>voidmain(){charc1,c2;c1='A';c2='b';c1=c1+32;c2=c2-32;printf("%c%c\n",c1,c2);printf("%d%d\n",c1,c2);}字元型數(shù)據(jù)程式運(yùn)行的結(jié)果為:aB97664)字元變數(shù)在內(nèi)存中最高位的符號(hào)問題有些系統(tǒng)(如VisualC++6.0)將字元變數(shù)的最高位作為符號(hào)位,其取值範(fàn)圍為-128~127,對(duì)標(biāo)準(zhǔn)ASCII碼(0~127)來說,最高位為0,用“%d”格式輸出的數(shù)值不會(huì)受影響。但是,對(duì)非標(biāo)準(zhǔn)ASCII碼(128~255),最高位為1,則用“%d”格式輸出的數(shù)值會(huì)得到負(fù)數(shù),而不是ASCII碼值。

例如:

chara=158;printf("%d\n",a);

運(yùn)行結(jié)果為-98。這時(shí)可以將變數(shù)定義為無(wú)符號(hào)字元變數(shù),使最高位不表示符號(hào)。例如:

unsignedchara=158;printf("%d\n",a);

運(yùn)行結(jié)果為158。字元型數(shù)據(jù)4.字串常量字串常量是由一對(duì)雙引號(hào)("")括起的字元序列。例如:"CHINA"、"Cprogram"、"$12.5"等都是合法的字串常量。字串常量和字元常量是不同的,它們之間主要有以下區(qū)別:

(1)字元常量由單引號(hào)括起來,字串常量由雙引號(hào)括起來。

(2)字元常量只能是單個(gè)字元,字串常量則可以含一個(gè)或多個(gè)字元。

(3)可以把一個(gè)字元常量賦予一個(gè)字元變數(shù),但不能把一個(gè)字串常量賦予一個(gè)字元變數(shù)。(4)字元常量占一個(gè)位元組的記憶體空間。字串常量占的記憶體位元組數(shù)等於字串中位元組數(shù)加1,增加的一個(gè)位元組中存放字元“\0”(ASCII碼為0)。C語(yǔ)言規(guī)定:在每一個(gè)字串常量的結(jié)尾加一個(gè)“字串結(jié)束標(biāo)誌”,以便系統(tǒng)知道字串是否結(jié)束?!癨0”就是字串結(jié)束標(biāo)誌。字元型數(shù)據(jù)'a'與"a"的區(qū)別由圖可以看出,字元常量'a'和字串常量"a"雖然都只顯示一個(gè)字元,但在內(nèi)存中的情況是不同的。'a'在內(nèi)存中占一個(gè)位元組;而"a"實(shí)際上包含兩個(gè)字元:'a'和'\0',所以在內(nèi)存中占兩個(gè)位元組。aa\0‘a(chǎn)’“a”字元型數(shù)據(jù)2.4運(yùn)算符及運(yùn)算式

C語(yǔ)言的運(yùn)算符不僅具有不同的優(yōu)先順序,而且還有一個(gè)特點(diǎn),就是它的結(jié)合性。在運(yùn)算式中,各運(yùn)算量參與運(yùn)算的先後順序不僅要遵守運(yùn)算符優(yōu)先順序別的規(guī)定,還要受運(yùn)算符結(jié)合性的制約,以便確定是自左向右進(jìn)行運(yùn)算還是自右向左進(jìn)行運(yùn)算。1.C語(yǔ)言的運(yùn)算符按功能可分為以下幾類

(1)算術(shù)運(yùn)算符:用於各類數(shù)值運(yùn)算。

(2)關(guān)係運(yùn)算符:用於比較運(yùn)算。

(3)邏輯運(yùn)算符:用於邏輯運(yùn)算。

(4)位操作運(yùn)算符:參與運(yùn)算的數(shù)據(jù),按二進(jìn)位位進(jìn)行運(yùn)算。

(5)賦值運(yùn)算符:用於賦值運(yùn)算

(6)條件運(yùn)算符:用於條件求值(?:)。

(7)逗號(hào)運(yùn)算符:用於把若干運(yùn)算式組合成一個(gè)運(yùn)算式

(8)指針運(yùn)算符:用於取內(nèi)容(*)和取地址(&)兩種運(yùn)算。

(9)求位元組數(shù)運(yùn)算符:用於計(jì)算數(shù)據(jù)類型所占的位元組數(shù)。

(10)特殊運(yùn)算符運(yùn)算符及運(yùn)算式2.4.1C語(yǔ)言的運(yùn)算符與運(yùn)算式簡(jiǎn)介2.運(yùn)算符可按其運(yùn)算對(duì)象的多少分為以下3類

(1)單目運(yùn)算符(僅對(duì)一個(gè)運(yùn)算對(duì)象進(jìn)行操作):!~++--sizeof等。

(2)雙目運(yùn)算符(對(duì)兩個(gè)運(yùn)算對(duì)象進(jìn)行操作):+-*/%<<=>等。

(3)三目運(yùn)算符(對(duì)3個(gè)運(yùn)算對(duì)象進(jìn)行操作):?:運(yùn)算符及運(yùn)算式3.C語(yǔ)言運(yùn)算符的優(yōu)先順序及結(jié)合性

(1)優(yōu)先順序求解運(yùn)算式時(shí),總是先按運(yùn)算符的優(yōu)先次序由高到低進(jìn)行操作。優(yōu)先順序是用來標(biāo)誌運(yùn)算符在運(yùn)算式中的運(yùn)算順序的。

(2)結(jié)合性當(dāng)一個(gè)運(yùn)算對(duì)象的兩側(cè)運(yùn)算符的優(yōu)先順序相同時(shí),則按運(yùn)算符的結(jié)合性確定運(yùn)算式的運(yùn)算順序。它分為兩類:一類運(yùn)算符結(jié)合性為“從左到右”;另一類運(yùn)算符結(jié)合性為“從右到左”。4.運(yùn)算式用運(yùn)算符將運(yùn)算元連接起來的,並且符合C語(yǔ)法規(guī)則的式子稱為運(yùn)算式。運(yùn)算符及運(yùn)算式1.基本算術(shù)運(yùn)算符算術(shù)運(yùn)算符有以下幾種:

(1)加法運(yùn)算符“+”:加法運(yùn)算符為雙目運(yùn)算符具有左結(jié)合性。

(2)減法運(yùn)算符“-”:減法運(yùn)算符為雙目運(yùn)算符。具有右結(jié)合性。

(3)乘法運(yùn)算符“*”:雙目運(yùn)算,具有左結(jié)合性。

(4)除法運(yùn)算符“/”:雙目運(yùn)算,具有左結(jié)合性。參與運(yùn)算量均為整型時(shí),結(jié)果也為整型,舍去小數(shù)。如果運(yùn)算量中有一個(gè)是實(shí)型,則結(jié)果為雙精度實(shí)型。

(5)求餘運(yùn)算符(模運(yùn)算符)“%”:雙目運(yùn)算,具有左結(jié)合性。要求參與運(yùn)算的運(yùn)算元必須為整型。求餘運(yùn)算的結(jié)果等於兩數(shù)相除後的餘數(shù)。運(yùn)算符及運(yùn)算式2.4.2算術(shù)運(yùn)算符及算術(shù)運(yùn)算式【例2-10】算術(shù)運(yùn)算的結(jié)果。#include<stdio.h>voidmain(){printf("5/3=%d,-5/+3=%d\n",5/3,-5/+3);printf("3/5=%d, 3./5=%f\n",3/5,3./5);printf("10%%3=%d,-10%%3=%d,10%%-3=%d,-10%%-3=%d\n",10%3,-10%3,10%-3,-10%-3);}運(yùn)算符及運(yùn)算式程式運(yùn)行結(jié)果:5/3=1,-5/+3=-13/5=0,3./5=0.60000010%3=1,-10%3=-1,10%-3=1,-10%-3=-12.算術(shù)運(yùn)算式用算術(shù)運(yùn)算符和括弧將運(yùn)算對(duì)象(也稱運(yùn)算元)連接起來的、符合C語(yǔ)言語(yǔ)法規(guī)則的式子,稱為算術(shù)運(yùn)算式。運(yùn)算對(duì)象可以是常量、變數(shù)、函數(shù)等。

例如:3+6*9、(x+y)/2-1,都是算術(shù)運(yùn)算式。算術(shù)運(yùn)算式的結(jié)果是一個(gè)算術(shù)值。運(yùn)算符及運(yùn)算式3.自增與自減運(yùn)算符在程式設(shè)計(jì)中,經(jīng)常遇到“i=i+1”和“i=i-1”這兩種極為常用的操作。其中,變數(shù)i被稱為“計(jì)數(shù)器”,用來記錄完成某一操作的次數(shù)。C語(yǔ)言為這種計(jì)數(shù)器操作提供了兩個(gè)更為簡(jiǎn)潔的運(yùn)算符,即“++”和“--”,分別稱為自增運(yùn)算符和自減運(yùn)算符。它們是從右向左結(jié)合的單目算術(shù)運(yùn)算符。運(yùn)算符及運(yùn)算式

這兩個(gè)運(yùn)算符既可以放在運(yùn)算對(duì)象之前,也可以放在運(yùn)算對(duì)象之後,形成前置形式和後置形式,而運(yùn)算對(duì)象也只能是變數(shù)。不管前置還是後置,其運(yùn)算結(jié)果都是一樣的,都是把運(yùn)算對(duì)象的值增加1或減少1。設(shè)有整型變數(shù)i,則++i、i++都使i值增加1,--i、i--都使i值減少1。例如,定義一個(gè)整型變數(shù)i,並對(duì)i賦初值i=3。

i++,++i

相當(dāng)於i=i+1,變數(shù)i的值都為4。

i--,--i

相當(dāng)於i=i-1,變數(shù)i的值都為2。運(yùn)算符及運(yùn)算式前置形式:++i、--i,它的功能是在使用i之前,i值先加(減)1(即先執(zhí)行i+1或i-1,然後再使用i值)。後置形式:i++、i--,它的功能是在使用i之後,i值再加(減)1(即先使用i值,然後再執(zhí)行i+1或i-1)。即前置運(yùn)算是“先變後用”,而後置運(yùn)算是“先用後變”。

例如,j=3時(shí):k=++j; /*結(jié)果k=4,j=4*/k=j++; /*結(jié)果k=3,j=4*/k=--j; /*結(jié)果k=2,j=2*/k=j--; /*結(jié)果k=3,j=2*/運(yùn)算符及運(yùn)算式

使用自增、自減運(yùn)算符應(yīng)注意以下幾點(diǎn):

(1)注意運(yùn)算符的操作對(duì)象。自增、自減運(yùn)算符的操作對(duì)象只能是變數(shù),而不能是常量或運(yùn)算式。例如,6--、++(a*2)、++(-i)都是錯(cuò)誤的。如果兩個(gè)運(yùn)算對(duì)象之間連續(xù)出現(xiàn)多個(gè)運(yùn)算符,則C語(yǔ)言採(cǎi)用“最長(zhǎng)匹配”原則。即在保證有意義的前提下,從左到右盡可能多地將字元組成一個(gè)運(yùn)算符。因此,i+++j就被解釋成(i++)+j,而不是i+(++j)。運(yùn)算符及運(yùn)算式(2)注意運(yùn)算符的結(jié)合方向。自增、自減運(yùn)算符的結(jié)合性是自右向左的。運(yùn)算式k=-i++等效於k=(-i)++還是k=-(i++)?因?yàn)樨?fù)號(hào)運(yùn)算符和自增運(yùn)算符優(yōu)先順序相同,哪一個(gè)正確就得看結(jié)合方向。自增、自減運(yùn)算符及負(fù)號(hào)運(yùn)算符的結(jié)合方向都是自右向左。因此,上式等效於k=-(i++)。再者,自增、自減運(yùn)算符的操作對(duì)象只能是變數(shù),而不能是常量或運(yùn)算式,而-i是運(yùn)算式,因此,從這個(gè)方面來說也不能等效於k=(-i)++。運(yùn)算符及運(yùn)算式(3)注意運(yùn)算符的副作用。C語(yǔ)言允許在一個(gè)運(yùn)算式中使用一個(gè)以上的賦值類運(yùn)算,包括賦值運(yùn)算符、自增運(yùn)算符、自減運(yùn)算符等。這種靈活性使程式簡(jiǎn)潔,但同時(shí)也會(huì)引起副作用。這種副作用主要表現(xiàn)在:使程式費(fèi)解,並易於發(fā)生誤解或錯(cuò)誤。例如,當(dāng)i=3時(shí),運(yùn)算式(i++)+(i++)+(i++)的值為多少?有的認(rèn)為是9(3+3+3);也有的認(rèn)為是12(3+4+5)。到底哪一個(gè)說法正確呢?究其原因,“先用後變,先變後用”中的“先”和“後”是一個(gè)模糊的概念,很難給出順序或時(shí)間上的準(zhǔn)確定論,這是與編譯環(huán)境密不可分的。同一條語(yǔ)句,在不同的編譯環(huán)境中運(yùn)行結(jié)果是不一樣的。運(yùn)算符及運(yùn)算式

解決這類副作用的方法是,儘量把程式寫得易懂一些,將費(fèi)解處分解成若干語(yǔ)句。例如,“k=i+++j,”可寫成“k=i+j;i++;”而類似(i++)+(i++)+(i++)這類連續(xù)自增、自減的運(yùn)算最好不要使用,以避免出現(xiàn)問題,減少程式出錯(cuò)的可性能。運(yùn)算符及運(yùn)算式4.算術(shù)運(yùn)算符的優(yōu)先順序與結(jié)合性(1)算術(shù)運(yùn)算符的優(yōu)先順序(從高到低)運(yùn)算符及運(yùn)算式(2)算術(shù)運(yùn)算符的結(jié)合性雙目算術(shù)運(yùn)算符的結(jié)合性為自左向右,單目運(yùn)算符的結(jié)合性為自右向左。當(dāng)一個(gè)算術(shù)運(yùn)算式中存在多個(gè)算術(shù)運(yùn)算符時(shí),各個(gè)運(yùn)算符的優(yōu)先順序與常規(guī)算術(shù)運(yùn)算相同,即先乘、除和取餘,再計(jì)算加、減,同級(jí)運(yùn)算符的計(jì)算順序是從左向右,即先計(jì)算左邊的算術(shù)運(yùn)算式,再計(jì)算右邊的算術(shù)運(yùn)算式。當(dāng)然也可以用圓括號(hào)改變運(yùn)算式計(jì)算的先後順序。運(yùn)算符及運(yùn)算式2.4.3賦值運(yùn)算符及賦值運(yùn)算式

C語(yǔ)言的賦值運(yùn)算符是用來給變數(shù)賦值的。它是雙目運(yùn)算符,優(yōu)先順序14,僅高於逗號(hào)運(yùn)算符,自右向左結(jié)合。賦值運(yùn)算符包括基本賦值運(yùn)算符和複合賦值運(yùn)算符兩種。運(yùn)算符及運(yùn)算式1.基本賦值運(yùn)算符賦值符號(hào)“=”就是基本賦值運(yùn)算符。賦值運(yùn)算符的一般形式為:

變數(shù)=運(yùn)算式(變數(shù)或數(shù)據(jù));

賦值運(yùn)算符的作用:將運(yùn)算符右端的值賦給運(yùn)算符左邊的變數(shù),實(shí)際上是將特定的值寫到變數(shù)所對(duì)應(yīng)的記憶體單元中。

例如:

inta,x;a=5; /*將5賦值給變數(shù)a*/x=3*a+55; /*將運(yùn)算式3*a+55的計(jì)算結(jié)果70,賦值給變數(shù)x*/運(yùn)算符及運(yùn)算式2.複合賦值運(yùn)算符為了簡(jiǎn)化程式並提高編譯效率,C語(yǔ)言允許在賦值運(yùn)算符“=”之前加上其他運(yùn)算符,這樣就構(gòu)成了複合賦值運(yùn)算符,又稱為帶有運(yùn)算的賦值運(yùn)算符。運(yùn)算符及運(yùn)算式運(yùn)

符含

義用

法等

價(jià)

於+=加賦值運(yùn)算符a+=ba=a+b-=減賦值運(yùn)算符a-=ba=a-b*=乘賦值運(yùn)算符a*=ba=a*b/=除賦值運(yùn)算符a/=ba=a/b%=取餘賦值運(yùn)算符a%=ba=a%b&=按位與賦值運(yùn)算符a&=ba=a&b【例2-14】分析以下程式的運(yùn)行結(jié)果。#include<stdio.h>voidmain(){intn=2;n+=n-=n*n;printf("n=%d\n",n);}運(yùn)算符及運(yùn)算式程式運(yùn)行結(jié)果為:n=-43.賦值運(yùn)算式由賦值運(yùn)算符將一個(gè)變數(shù)和一個(gè)運(yùn)算式連接起來的式子稱為賦值運(yùn)算式。它的一般形式為:

<變數(shù)><賦值運(yùn)算符><運(yùn)算式>

運(yùn)算符的左側(cè)只能是變數(shù)或賦值運(yùn)算式,不能是常量或其他運(yùn)算式,而右側(cè)可以是常量、賦過值的變數(shù)或運(yùn)算式。下列賦值運(yùn)算式是不正確的。

3=a+b、x+y=5*6、c=a+b=3

在運(yùn)算符右側(cè)的<運(yùn)算式>中,運(yùn)算式可以仍然是一個(gè)賦值運(yùn)算式。例如:

x=(y=8)運(yùn)算符及運(yùn)算式4.類型轉(zhuǎn)換如果賦值運(yùn)算符兩側(cè)的數(shù)據(jù)類型不相同,系統(tǒng)將自動(dòng)進(jìn)行類型轉(zhuǎn)換,即把賦值運(yùn)算符右邊的類型換成左邊的類型,轉(zhuǎn)換規(guī)則如下。

(1)實(shí)型與整型①將實(shí)型數(shù)據(jù)(包括單?雙精度)賦給整型變數(shù)時(shí),捨棄其小數(shù)部分?②將整型數(shù)據(jù)賦給實(shí)型變數(shù)時(shí),數(shù)值不變,補(bǔ)足有效位,即小數(shù)點(diǎn)後帶若干0,然後以指數(shù)形式存儲(chǔ)到變數(shù)中?運(yùn)算符及運(yùn)算式【例2-15】實(shí)型與整型數(shù)據(jù)之間的轉(zhuǎn)換。#include<stdio.h>voidmain(){inta;floatb;a=3.72;b=12;printf("a=%db=%f\n",a,b);}運(yùn)算符及運(yùn)算式程式運(yùn)行結(jié)果為:a=3b=12.000000(2)單、雙精度實(shí)型①將一個(gè)double型數(shù)據(jù)賦給float變數(shù)時(shí),取其前面的7位有效數(shù)字,但要注意數(shù)值範(fàn)圍不能溢出?截?cái)嗲耙M(jìn)行四捨五入操作。②將一個(gè)float型數(shù)據(jù)賦給double變數(shù)時(shí),數(shù)值不變,有效位數(shù)擴(kuò)展到16位,用8個(gè)位元組存儲(chǔ)。運(yùn)算符及運(yùn)算式(3)字元型與整型①整型數(shù)據(jù)賦給char型變數(shù)時(shí),只保留其最低8位,高位部分捨棄。②將字元型數(shù)據(jù)賦給整型變數(shù)時(shí),由於字元數(shù)據(jù)只占一個(gè)位元組,而整型變數(shù)占兩個(gè)位元組,所以將字元數(shù)據(jù)(8位)放到整型變數(shù)的低8位中。如果字元數(shù)據(jù)的最高位為0,則整型變數(shù)的高8位補(bǔ)0;如果最高位為1,則整型變數(shù)的高8位全部補(bǔ)1。這樣可以保證數(shù)值會(huì)不發(fā)生變化。另外,如果用的是unsignedchar型變數(shù)或數(shù)據(jù)來賦值,則一律將整型變數(shù)的高8位補(bǔ)0。運(yùn)算符及運(yùn)算式(4)int型與1ong型①將帶符號(hào)整型數(shù)據(jù)(int型)賦給long型變數(shù)時(shí),要進(jìn)行符號(hào)擴(kuò)展。首先將整型數(shù)的16位送到long型的低16位中,如果原整型數(shù)據(jù)為正值(首位為0),則long型變數(shù)的高16位補(bǔ)0;如果原整型數(shù)據(jù)為負(fù)值(首位為1),則long型變數(shù)的高16位補(bǔ)1。這樣可以保持?jǐn)?shù)值不變。而如果是將unsignedint型數(shù)據(jù)賦給long型變數(shù)時(shí),不存在符號(hào)擴(kuò)展,只需將高位直接補(bǔ)0即可。無(wú)論是有符號(hào)整型數(shù)據(jù),還是無(wú)符號(hào)整型數(shù)據(jù),在賦給long型變數(shù)後,其值都不會(huì)發(fā)生變化。②將long型數(shù)據(jù)賦給一個(gè)int型變數(shù)時(shí),只將long型數(shù)據(jù)的低16位原封不動(dòng)地送到整型變數(shù)中即可,將高16位截?cái)鄴螚墶_\(yùn)算符及運(yùn)算式(5)unsigned型整數(shù)①將一個(gè)unsigned型數(shù)據(jù)賦給一個(gè)佔(zhàn)據(jù)同樣長(zhǎng)度存儲(chǔ)單元的非unsigned型整型變數(shù)時(shí)(如unsigned→int、unsignedlong→long,unsignedshort→short),將unsigned型數(shù)據(jù)原值按照原樣賦到非unsigned型整型變數(shù)中,內(nèi)部的存儲(chǔ)方式不變,但輸出值卻可能改變(非unsigned型整型變數(shù)最高位為符號(hào)位)。②將一個(gè)非unsigned整型數(shù)據(jù)賦給長(zhǎng)度相同的unsigned型變數(shù)時(shí),原樣賦值,內(nèi)部存儲(chǔ)形式不變,但輸出時(shí)是無(wú)符號(hào)的。運(yùn)算符及運(yùn)算式【例2-16】類型轉(zhuǎn)換。#include<stdio.h>voidmain(){inta,b,c=322;floatx,y=8.88;charc1='B',c2;a=y;x=c;b=c1;c2=c;printf("%d,%f,%d,%c\n",a,x,b,c2);}運(yùn)算符及運(yùn)算式程式運(yùn)行結(jié)果為:8,322.000000,66,B2.4.4逗號(hào)運(yùn)算符及逗號(hào)運(yùn)算式

在C語(yǔ)言中逗號(hào)“,”也是一種運(yùn)算符,稱為逗號(hào)運(yùn)算符。優(yōu)先順序最低,具有左結(jié)合性。其功能是把兩個(gè)運(yùn)算式連接起來組成一個(gè)運(yùn)算式,稱為逗號(hào)運(yùn)算式。其一般形式為:

運(yùn)算式1,運(yùn)算式2

其求值過程是分別求兩個(gè)運(yùn)算式的值,並以運(yùn)算式2的值作為整個(gè)逗號(hào)運(yùn)算式的值。運(yùn)算符及運(yùn)算式【例2-17】逗號(hào)運(yùn)算式。#include<stdio.h>voidmain(){inta=2,b=4,c=6,x,y,z;y=(x=a+b),(b+c);z=((x=a+b),(b+c));printf("x=%d,y=%d,z=%d\n",x,y,z);}運(yùn)算符及運(yùn)算式程式運(yùn)行結(jié)果為:x=6,y=6,z=10有關(guān)逗號(hào)運(yùn)算式需要注意以下幾點(diǎn):

(1)逗號(hào)運(yùn)算式又可以和另一個(gè)運(yùn)算式組成一個(gè)新的逗號(hào)運(yùn)算式。例如:

(a=6,3*a),a+10(2)程式中使用逗號(hào)運(yùn)算式,通常是要分別求逗號(hào)運(yùn)算式內(nèi)各運(yùn)算式的值,並不一定要求整個(gè)逗號(hào)運(yùn)算式的值。

(3)並不是所有出現(xiàn)的逗號(hào)都作為逗號(hào)運(yùn)算符。函數(shù)的參數(shù)之間也是用逗號(hào)分隔的。例如:

printf("%d,%d,%d\n",(a,b,c),a,b)

其中“(a,b,c)”是一個(gè)逗號(hào)運(yùn)算式,它的值是變數(shù)c的值,而後面的兩個(gè)逗號(hào)是參數(shù)的分隔符號(hào)。運(yùn)算符及運(yùn)算式2.5類型轉(zhuǎn)換

運(yùn)算式中運(yùn)算符所處理的對(duì)象的數(shù)據(jù)類型不可能都是同一類型。當(dāng)運(yùn)算式中出現(xiàn)類型不同的數(shù)據(jù)時(shí)要進(jìn)行類型轉(zhuǎn)換,轉(zhuǎn)換的方法有兩種,一種是自動(dòng)轉(zhuǎn)換,另一種是強(qiáng)制類型轉(zhuǎn)換。2.5.1不同數(shù)據(jù)類型數(shù)據(jù)間的

混合運(yùn)算

自動(dòng)轉(zhuǎn)換發(fā)生在不同數(shù)據(jù)類型的量混合運(yùn)算時(shí),由編譯系統(tǒng)自動(dòng)完成。自動(dòng)轉(zhuǎn)換遵循以下規(guī)則:

(1)若參與運(yùn)算數(shù)據(jù)的類型不同,則先轉(zhuǎn)換成同一類型,然後進(jìn)行運(yùn)算。

(2)轉(zhuǎn)換按數(shù)據(jù)長(zhǎng)度增加的方向進(jìn)行,以保證精度不降低。如int型和long型運(yùn)算時(shí),先把int量轉(zhuǎn)換成long型後再進(jìn)行運(yùn)算。

類型轉(zhuǎn)換(3)所有的浮點(diǎn)運(yùn)算都是以雙精度進(jìn)行的,即使僅含float單精確度量運(yùn)算的運(yùn)算式,也要先轉(zhuǎn)換成double型再進(jìn)行運(yùn)算。

(4)char型和short型參與運(yùn)算時(shí),必須先轉(zhuǎn)換成int型。

(5)在賦值運(yùn)算中,賦值號(hào)兩邊的數(shù)據(jù)類型不同時(shí),賦值號(hào)右邊的類型將轉(zhuǎn)換為左邊的類型。如果右邊的數(shù)據(jù)類型長(zhǎng)度大於左邊的長(zhǎng)度時(shí),將丟失一部分?jǐn)?shù)據(jù),這樣會(huì)降低精度,丟失的部分按四捨五入向前舍入類型轉(zhuǎn)換類型轉(zhuǎn)換例如,假設(shè)變數(shù)的定義為:inti;floatf;doubled;charch;計(jì)算:ch/i+f*d-(f+i)的值的類型轉(zhuǎn)換如圖。2.5.2強(qiáng)制類型轉(zhuǎn)換

有時(shí)根據(jù)需要有必要有意識(shí)地改變某個(gè)運(yùn)算式的數(shù)據(jù)類型,就需要強(qiáng)制類型轉(zhuǎn)換。強(qiáng)制類型轉(zhuǎn)換是通過類型轉(zhuǎn)換運(yùn)算符來實(shí)現(xiàn)的。其一般形式為:

(類型說明符)(運(yùn)算式)

其功能是把運(yùn)算式的運(yùn)算結(jié)果強(qiáng)制轉(zhuǎn)換成類型說明符所表示的類型。例如:

(float)a 把a(bǔ)轉(zhuǎn)換為實(shí)型

(int)(x+y) 把x+y的結(jié)果轉(zhuǎn)換為整型類型轉(zhuǎn)換

在使用強(qiáng)制轉(zhuǎn)換時(shí)應(yīng)注意以下問題:

(1)類型說明符和運(yùn)算式都必須加括弧(單個(gè)變數(shù)可以不加括弧),否則僅對(duì)緊跟強(qiáng)制類型轉(zhuǎn)換運(yùn)算符的運(yùn)算元進(jìn)行類型轉(zhuǎn)換。如果把(int)(x+y)寫成(int)x+y,則成了把x轉(zhuǎn)換成int型之後再與y相加了。

(2)無(wú)論是強(qiáng)制轉(zhuǎn)換或是自動(dòng)轉(zhuǎn)換,都只是為了本次運(yùn)算的需要而對(duì)變數(shù)的數(shù)據(jù)長(zhǎng)度進(jìn)行的臨時(shí)性轉(zhuǎn)換,而不改變數(shù)據(jù)說明時(shí)對(duì)該變數(shù)定義的類型。類型轉(zhuǎn)換【例2-18】強(qiáng)制類型轉(zhuǎn)換。#include<stdio.h>voidmain(){floatf=5.75;printf("(int)f=%d,f=%f\n",(int)f,f);}類型轉(zhuǎn)換程式運(yùn)行結(jié)果為:(int)f=5,f=5.750000§3.1C語(yǔ)言的基本語(yǔ)句一個(gè)完整的C程式可以存放於一個(gè)或多個(gè)C原始檔案中,每一個(gè)C原始檔案又可以包含若干預(yù)處理命令和C函數(shù),數(shù)據(jù)聲明和執(zhí)行語(yǔ)句是構(gòu)成C函數(shù)的基本單元。C語(yǔ)言的語(yǔ)句是指示電腦完成某項(xiàng)任務(wù)的操作指令,是C程式中演算法實(shí)現(xiàn)的最小單位。程式或函數(shù)的功能是由一系列語(yǔ)句實(shí)現(xiàn)的,不同的語(yǔ)句結(jié)構(gòu)可以構(gòu)成一個(gè)完整的程式。在C語(yǔ)言中,根據(jù)語(yǔ)句的功能可將C語(yǔ)句分為5類:運(yùn)算式語(yǔ)句、函數(shù)調(diào)用語(yǔ)句、程式控制語(yǔ)句、空語(yǔ)句及複合語(yǔ)句?!?.1C語(yǔ)言的基本語(yǔ)句【例3-1】輸入兩個(gè)整數(shù),求它們的和與積。#include<stdio.h> voidmain(){ inta,b; intsum,mul; /*以上是數(shù)據(jù)描述部分,以下是執(zhí)行語(yǔ)句部分*/ printf("請(qǐng)輸入兩個(gè)整數(shù):\n"); scanf(“%d%d”,&a,&b

); sum=a+b; mul=a*b; printf("兩數(shù)之和sum=%d,兩數(shù)之積mul=%d\n",sum,mul);}

3.1.1運(yùn)算式語(yǔ)句運(yùn)算式語(yǔ)句由運(yùn)算式加一個(gè)分號(hào)“;”組成,其一般形式為:運(yùn)算式;運(yùn)算式可以是任意的運(yùn)算式,包括賦值運(yùn)算式、算術(shù)運(yùn)算運(yùn)算式、關(guān)係運(yùn)算運(yùn)算式及邏輯運(yùn)算運(yùn)算式等。 例如:

a=8; x=2*x+3*y; i++; printf("Pleaseinputdata!\n");3.1.2函數(shù)調(diào)用語(yǔ)句函數(shù)調(diào)用語(yǔ)句由函數(shù)調(diào)用後加分號(hào)“;”構(gòu)成。 其一般形式為: 函數(shù)名(實(shí)際參數(shù)列表);函數(shù)調(diào)用語(yǔ)句的執(zhí)行過程為調(diào)用執(zhí)行被調(diào)函數(shù),實(shí)現(xiàn)函數(shù)的功能。例如:

printf("%d",a);

為調(diào)用C語(yǔ)言標(biāo)準(zhǔn)輸出函數(shù),完成輸出變數(shù)a的功能。3.1.3程式控制語(yǔ)句

1.條件判斷語(yǔ)句

(1)選擇(分支)語(yǔ)句:if()…else…;

(2)多分支選擇語(yǔ)句:switch。

2.迴圈執(zhí)行語(yǔ)句

(1)while語(yǔ)句:while()…;

(2)do-while語(yǔ)句:do…while();

(3)for語(yǔ)句:for()…。

3.轉(zhuǎn)向語(yǔ)句

(1)無(wú)條件轉(zhuǎn)向語(yǔ)句:goto<標(biāo)號(hào)>;

(2)終止語(yǔ)句:break;可用於終止執(zhí)行switch和迴圈語(yǔ)句;

(3)結(jié)束本次迴圈語(yǔ)句:continue;

(4)函數(shù)返回語(yǔ)句:return。3.1.4空語(yǔ)句C語(yǔ)言中的空語(yǔ)句就是只有一個(gè)分號(hào)的語(yǔ)句:

;在編譯時(shí),空語(yǔ)句不產(chǎn)生任何指令代碼,不執(zhí)行任何操作。3.1.5複合語(yǔ)句在C語(yǔ)言中,複合語(yǔ)句又稱為分程式(block),它是由一對(duì)花括弧括起來的若干語(yǔ)句組成的。例如:

{ inta,b,x; a=10; b=5; x=a-b; printf("%d",x); }在上面的例子中,5條語(yǔ)句被一對(duì)花括弧括起來,構(gòu)成一條複合語(yǔ)句。從語(yǔ)法上看,複合語(yǔ)句是作為一個(gè)語(yǔ)法整體出現(xiàn),在選擇結(jié)構(gòu)和迴圈結(jié)構(gòu)程式設(shè)計(jì)中,經(jīng)常利用複合語(yǔ)句作為一個(gè)語(yǔ)法成分。返回§3.2常用輸出與輸入函數(shù)所謂輸入/輸出是以電腦主機(jī)為主體而言的,當(dāng)需要將外界的數(shù)據(jù)送入電腦內(nèi)部時(shí),由輸入設(shè)備(鍵盤、滑鼠等)向電腦傳輸數(shù)據(jù)稱為輸入;當(dāng)需要將電腦中的數(shù)據(jù)送給外界,即向輸出設(shè)備(顯示器、印表機(jī)等)傳輸數(shù)據(jù)成為輸出。在C語(yǔ)言中沒有專門的輸入/輸出語(yǔ)句,輸入/輸出操作是由C函數(shù)庫(kù)中的相關(guān)函數(shù)提供的。使用這些函數(shù)時(shí),用預(yù)編譯命令“#include”將輸入/輸出頭檔包含在根源程式檔中:

#include<stdio.h>常用的標(biāo)準(zhǔn)輸入/輸出函數(shù):

(1)格式化輸入/輸出函數(shù):scanf()/printf()。

(2)字元輸入/輸出函數(shù):getchar()/putchar()。

(3)字串輸入/

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論