C語(yǔ)言程序設(shè)計(jì)復(fù)習(xí)題_第1頁(yè)
C語(yǔ)言程序設(shè)計(jì)復(fù)習(xí)題_第2頁(yè)
C語(yǔ)言程序設(shè)計(jì)復(fù)習(xí)題_第3頁(yè)
C語(yǔ)言程序設(shè)計(jì)復(fù)習(xí)題_第4頁(yè)
C語(yǔ)言程序設(shè)計(jì)復(fù)習(xí)題_第5頁(yè)
已閱讀5頁(yè),還剩523頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

計(jì)算機(jī)等級(jí)考試二級(jí)C程序設(shè)計(jì)考前輔導(dǎo)上海市高等學(xué)校上海第二工業(yè)大學(xué)計(jì)算機(jī)與信息學(xué)院11/3/2023目錄一C程序的組成、結(jié)構(gòu)及書寫規(guī)則二數(shù)據(jù)類型及基本運(yùn)算三順序結(jié)構(gòu)程序設(shè)計(jì)四選擇結(jié)構(gòu)程序設(shè)計(jì)五循環(huán)結(jié)構(gòu)程序設(shè)計(jì)六數(shù)組七函數(shù)及變量的存儲(chǔ)類別和編譯預(yù)處理八指針九結(jié)構(gòu)與其它自定義類型十文件11/3/2023第一章C程序的組成、結(jié)構(gòu)及書寫規(guī)則11/3/20231.1C語(yǔ)言的發(fā)展史回顧:程序設(shè)計(jì)與高級(jí)語(yǔ)言早期的機(jī)器語(yǔ)言;過(guò)渡性語(yǔ)言——匯編語(yǔ)言;

20世紀(jì)50年代末的程序設(shè)計(jì)語(yǔ)言(高級(jí)語(yǔ)言);11/3/2023C語(yǔ)言的產(chǎn)生與發(fā)展

C語(yǔ)言是國(guó)際上廣泛流行的計(jì)算機(jī)高級(jí)語(yǔ)言,既可用來(lái)寫系統(tǒng)軟件,也可用來(lái)寫應(yīng)用軟件。

C語(yǔ)言是在B語(yǔ)言的基礎(chǔ)上發(fā)展起來(lái)的。

1969年英國(guó)劍橋大學(xué)的MatinRichards推出了BCPL(basiccombinedprogramminglanguage)語(yǔ)言。

1972年至1973年間,貝爾實(shí)驗(yàn)室的D.M.Ritchie在B語(yǔ)言的基礎(chǔ)上設(shè)計(jì)出了C語(yǔ)言(取BCPL的第二個(gè)字母)。最初的C語(yǔ)言只是為描述和實(shí)現(xiàn)UNIX操作系統(tǒng)提供一種工作語(yǔ)言而設(shè)計(jì)的。11/3/20231977年出現(xiàn)了不依賴于具體機(jī)器的C語(yǔ)言編譯文本《可移植C語(yǔ)言編譯程序》,使C移植到其他機(jī)器時(shí)所需做的工作大大簡(jiǎn)化。

1978年,

BrianW.Kernighan和DennisM.Ritchie合著了影響深遠(yuǎn)的名著《TheCProgrammingLanguage》,書中介紹的C語(yǔ)言成為后來(lái)廣泛使用的C語(yǔ)言版本的基礎(chǔ),被稱為標(biāo)準(zhǔn)C。1978年以后,C語(yǔ)言已先后移植到大、中、小、微型機(jī)上。

1980年,貝爾實(shí)驗(yàn)室的BjarneStroustrup博士及其同事修改和擴(kuò)充C語(yǔ)言的內(nèi)核,使其能滿足面向?qū)ο竽P偷囊?,稱“帶類的C”,1983年取名C++;11/3/2023

C++與C完全兼容,保存了C語(yǔ)言的所有組成部分,具有更完美的體系結(jié)構(gòu)和更強(qiáng)大的功能;

C/C++常用的編譯軟件有TurboC,QuickC,BorlandC,MicrosoftVisualC++,BorlandC++,WatcomC++等等;注意:同學(xué)們應(yīng)了解所用的計(jì)算機(jī)系統(tǒng)所配置的C編譯系統(tǒng)的特點(diǎn)和規(guī)定(可以參閱有關(guān)手冊(cè))。11/3/20231.2.1簡(jiǎn)單的C/C++程序?qū)嵗纠?.1】#include<stdio.h>頭文件main()函數(shù)名{printf("ThisisaCprogram.\n");}函數(shù)體本程序的作用是輸出以下一行信息:

ThisisaCprogram.

1.2C/C++程序簡(jiǎn)介11/3/2023

1.2.2C/C++程序設(shè)計(jì)規(guī)則(1)C程序中使用到的一切數(shù)據(jù)都必須在使用它們之前對(duì)其類型和存儲(chǔ)屬性加以定義和說(shuō)明;(2)函數(shù)是C程序的基本模塊,包括函數(shù)名、參數(shù)說(shuō)明表和函數(shù)體三個(gè)部分;(3)語(yǔ)句是函數(shù)的基本單位,語(yǔ)句結(jié)束必須加“;”;(4)C語(yǔ)言允許“/**/”包圍的注釋行;(5)C程序是自由格式書寫的程序,通常采用結(jié)構(gòu)化程序設(shè)計(jì)原則將程序設(shè)計(jì)成“層次型”;(6)C的輸入輸出操作由庫(kù)函數(shù)scanf和printf完成;11/3/2023c程序結(jié)構(gòu)11/3/2023C程序運(yùn)行的步驟:

高級(jí)語(yǔ)言源程序目標(biāo)程序編譯程序編譯執(zhí)行高級(jí)語(yǔ)言程序的執(zhí)行過(guò)程

在編好一個(gè)C源程序后,如何上機(jī)運(yùn)行呢?要經(jīng)過(guò)以下幾個(gè)步驟:上機(jī)輸入、編輯源程序、對(duì)源程序進(jìn)行編譯、與庫(kù)函數(shù)連接、運(yùn)行目標(biāo)程序這樣幾個(gè)步驟。11/3/2023

實(shí)線表示操作流程,虛線表示文件的輸入輸出。11/3/2023

1.2.3C/C++程序的編輯、編譯與運(yùn)行

1)在TurboC集成開發(fā)環(huán)境下編譯與運(yùn)行C程序?yàn)榱四苁褂肨urboC,必須先將TurboC編譯程序裝入磁盤的某一目錄下,例如放在C盤根目錄下一級(jí)TC子目錄下。第一步:運(yùn)行TurboC,即TC.exe文件;第二步:編輯源文件。在編輯(Edit)狀態(tài)下可以根據(jù)需要輸入或修改源程序。11/3/2023

第三步:編譯源程序。選擇“Compile”菜單并在其下拉菜單中選擇“CompiletoOBJ”,則進(jìn)行編譯,得到一個(gè)后綴為.obj的目標(biāo)程序;然后再選菜單“Compile/LinkEXEfile”,進(jìn)行連接操作,可得到一個(gè)后綴為.exe的可執(zhí)行文件。也可以將編譯和連接合為一個(gè)步驟進(jìn)行。選菜單“Compile/MakeEXEfile”或按“F9”鍵,即可一次完成編譯和連接。

第四步:打開“Run”菜單,選擇Run命令運(yùn)行可執(zhí)行程序;11/3/2023【特別說(shuō)明】11/3/2023

2)在VisualC++集成開發(fā)環(huán)境下編譯與運(yùn)行C程序(自修)

第一步:打開“Build”菜單,選擇“Compilehjm01.c”命令,編譯正確后生成目標(biāo)文件;

第二步:打開“Build”菜單,選擇“Buildhjm01.exe”命令,將目標(biāo)程序與庫(kù)文件相鏈接,生成可執(zhí)行文件;

第三步:打開“Build”菜單,選擇“Executehjm01.exe”命令,運(yùn)行執(zhí)行程序。11/3/20231.3C程序的基本語(yǔ)法成分1.3.1基本字符集字符集是構(gòu)成C/C++程序的基本元素。C/C++語(yǔ)言的字符集有下述字符構(gòu)成:

(1)英文字母:A~Z,a~z

(2)數(shù)字字符:0~9

(3)特殊符號(hào):!,#,%,&等。11/3/20231.3.2標(biāo)識(shí)符

C/C++程序中,標(biāo)識(shí)符用來(lái)標(biāo)識(shí)變量名、符號(hào)常量名、函數(shù)名、數(shù)組名、文件名、類名、對(duì)象名等。

有效標(biāo)識(shí)符的構(gòu)成規(guī)則為:(1)必須由字母(a~z,A~Z)或下劃線(_)開頭;(2)由字母、數(shù)字和下劃線組成的長(zhǎng)度不超過(guò)32的字符串;(3)標(biāo)識(shí)符中的大小寫字母有區(qū)別;(4)不能與關(guān)鍵字同名;下面是不合法的標(biāo)識(shí)符和變量名:M.d.,John,y123,#33,3d6411/3/20231.3.3關(guān)鍵字

C編譯系統(tǒng)已經(jīng)預(yù)定義的、具有特殊用途的保留標(biāo)識(shí)符稱為關(guān)鍵字。具體見(jiàn)書P7。1.4編譯預(yù)處理編譯預(yù)處理是C編譯系統(tǒng)的一個(gè)組成部分。

功能:告訴編譯系統(tǒng)在對(duì)源程序進(jìn)行編譯之前應(yīng)該做些什么。返回11/3/2023C源程序目標(biāo)程序執(zhí)行程序編譯預(yù)處理編譯鏈接圖1編譯預(yù)處理的執(zhí)行過(guò)程(無(wú)預(yù)處理命令)(有預(yù)處理命令)11/3/2023

編譯預(yù)處理命令有三種:宏定義無(wú)參數(shù)宏定義有參數(shù)宏定義(7.7節(jié)介紹)文件包含條件編譯返回11/3/2023

無(wú)參數(shù)宏定義的格式為:#define<宏名><字符串>

【例】#definePI3.1415926

【例】分析程序的結(jié)果。

#definePI3.1415926#defineR4.0main(){floatarea;area=PI*R*R;printf(“area=%.2f”);}宏名一般用大寫字母表示1.4.1無(wú)參數(shù)宏定義11/3/20231.4.2文件包含

文件包含是通過(guò)編譯預(yù)處理命令#include把另一個(gè)文件的全部?jī)?nèi)容包含到本文件之中。命令格式有兩種:#include“文件名”【例】#include“C:\TC\CC1\file2.c”#include<文件名>

【例】#include<stdio.h>

按系統(tǒng)指定的標(biāo)準(zhǔn)方式檢索文件目錄先在源文件目錄中檢索文件,沒(méi)找到再按系統(tǒng)指定的標(biāo)準(zhǔn)方式檢索文件目錄11/3/2023【例】計(jì)算常用對(duì)數(shù)lgx。

#include“math.h”main(){floatx;scanf(“%f”,&x);printf(“%f\n”,log10(x));}【例】#include<stdio.h>main(){printf("ThisisaCprogram.\n");}11/3/2023第二章數(shù)據(jù)類型及基本運(yùn)算11/3/20232.1C數(shù)據(jù)類型

見(jiàn)書P11圖2.1數(shù)據(jù)類型分類示意圖2.2基本數(shù)據(jù)類型見(jiàn)書P12表2.12.3數(shù)據(jù)的表示

數(shù)據(jù)在內(nèi)存中有兩種表示形式:其一是在程序運(yùn)行過(guò)程中值永遠(yuǎn)保持不變的常量;其二是在程序運(yùn)行過(guò)程中值可以發(fā)生變化的變量;11/3/2023常量數(shù)值常量符號(hào)常量整型常量實(shí)型常量字符常量字符串常量2.3.1常量常量——在程序運(yùn)行過(guò)程中其值不能被改變的量;按表達(dá)形式,常量分為:11/3/2023

1、值常量常量通常是直接以自身的存在形式體現(xiàn)其值和類型,常量不占內(nèi)存,在程序運(yùn)行時(shí)作為操作對(duì)象直接出現(xiàn)在運(yùn)算器的各種寄存器中。

2、符號(hào)常量

符號(hào)常量的定義形式:

#define

標(biāo)識(shí)符值常量

const

數(shù)據(jù)類型標(biāo)識(shí)符=值常量

【例】#definePI3.14159

constfloatI=3.141592611/3/2023

3.常用的轉(zhuǎn)義字符【例】分析下面兩段代碼的區(qū)別:

#include<stdio.h>main(){printf(“ThisisaCprogram.\n”);}

#include<stdio.h>main(){printf(“\tThisisaCprogram.\n”);}11/3/20232.3.2變量

變量——在程序運(yùn)行過(guò)程中其值可以被改變的量;

1.變量的說(shuō)明形式:

數(shù)據(jù)類型

<變量名列表>

【例】inti,j,k;

2.變量的賦初值——在程序中,一個(gè)變量占據(jù)著一個(gè)實(shí)際的存儲(chǔ)單元,變量名實(shí)際上是存儲(chǔ)單元的邏輯地址,存儲(chǔ)單元中的內(nèi)容是變量的值;11/3/2023

(1)允許在定義變量的同時(shí)對(duì)其賦初值;【例】inta=3;

floatf=7.8;(2)允許僅對(duì)說(shuō)明語(yǔ)句中的部分變量賦初值;【例】inta,b,c=6;(3)不允許同時(shí)對(duì)幾個(gè)變量賦同一個(gè)初值;【例】inta=b=c=13;(4)變量的賦初值不是在程序編譯階段,而是在程序運(yùn)行時(shí)賦的;11/3/2023使用注意:

1、變量一旦被說(shuō)明為字符型,就意味著它只能取單字符值。

例:char

x;x=33;字符在計(jì)算機(jī)內(nèi)部并不是以字符原形存儲(chǔ)的,是以ASCII碼的形式存儲(chǔ)在一個(gè)字節(jié)中,所以字符也可以用ASCII碼的整數(shù)形式來(lái)表示。

2、字符型數(shù)據(jù)與字符串?dāng)?shù)據(jù)的區(qū)別——形式和存儲(chǔ);返回第三章11/3/20232.4常用的運(yùn)算符和表達(dá)式

2.4.1算術(shù)運(yùn)算符和算術(shù)表達(dá)式

1)算術(shù)運(yùn)算符類別運(yùn)算符含義備注雙目/除隨參與運(yùn)算的類型而含義有所不同%求余數(shù)運(yùn)算對(duì)象必須為整型單目++自增1運(yùn)算對(duì)象必須為變量--自減1運(yùn)算對(duì)象必須為變量+取正-取負(fù)11/3/20232)算術(shù)運(yùn)算符的運(yùn)算優(yōu)先級(jí)和結(jié)合性運(yùn)算符結(jié)合性備注()自內(nèi)向外++,--,-(取負(fù))自右至左++,--為前綴形式時(shí)*,/,%自左至右+(加),-(減)自左至右優(yōu)先級(jí)3)算術(shù)表達(dá)式

注意書寫的規(guī)范11/3/2023【例】將下列代數(shù)式轉(zhuǎn)換成C語(yǔ)言表達(dá)式。

sqrt(x*x+1)/(2*x)sqrt(abs(x))/24)算術(shù)型數(shù)據(jù)的混合運(yùn)算自動(dòng)類型轉(zhuǎn)換:規(guī)則是由低級(jí)向高級(jí)轉(zhuǎn)換,如下圖所示:(P17圖2.2)11/3/2023

強(qiáng)制類型轉(zhuǎn)換:是根據(jù)程序的需要,將某數(shù)據(jù)強(qiáng)制轉(zhuǎn)換成指定的數(shù)據(jù)類型,方法是在被轉(zhuǎn)換對(duì)象(或表達(dá)式)前面增加類型標(biāo)識(shí)符,形式如下:

數(shù)據(jù)類型自動(dòng)轉(zhuǎn)換規(guī)則示意(類型標(biāo)識(shí)符)表達(dá)式水平箭頭表示必定轉(zhuǎn)換;縱向箭頭表示兩個(gè)不同類型對(duì)象時(shí)的轉(zhuǎn)換方向11/3/2023

【例】(2.7+6.8)表示將2.7+6.8的運(yùn)算結(jié)果9.5強(qiáng)制轉(zhuǎn)換成int型整數(shù)9,舍棄小數(shù)部分?!舅伎碱}】如何實(shí)現(xiàn)運(yùn)算結(jié)果的四舍五入呢?

5)使用算術(shù)表達(dá)式的注意事項(xiàng)兩個(gè)整數(shù)直接相除,結(jié)果自動(dòng)取整,丟棄小數(shù)部分;【例】floatx,y;

x=6/4;y=6.0/4;x的值為1.0y的值為1.5(int)11/3/2023

運(yùn)算符“++”、“--”運(yùn)算的優(yōu)先級(jí)高于算術(shù)運(yùn)算中所有雙目運(yùn)算符,運(yùn)算對(duì)象只能是變量,不能是表達(dá)式或

常量;【例】有intx;floaty;下面的式子錯(cuò)在了哪里?(x+y)++、5++

變量的前綴和后綴運(yùn)算的區(qū)別11/3/2023【例】設(shè)intx=5;則:y=6,x=6y=25,x=7y=49,x=7y=++x*++x;y=++x;y=x++*x++;y=5,x=6y=x++;11/3/2023

2.4.2賦值運(yùn)算符和賦值表達(dá)式

1)基本賦值運(yùn)算符

形式:=

功能:將賦值運(yùn)算符右邊的表達(dá)式的值賦給其左邊的變量;【例】floatx=3.1;inty;y=x+2;正確floaty=5.6;intx;x+2=y(tǒng);5=y(tǒng);錯(cuò)誤11/3/2023

2)復(fù)合賦值運(yùn)算符

形式:算術(shù)運(yùn)算符=

功能:對(duì)賦值運(yùn)算符左、右兩邊的運(yùn)算對(duì)象進(jìn)行指定的算術(shù)運(yùn)算符的運(yùn)算,再將運(yùn)算結(jié)果賦予左邊的變量;【例】a+=3等價(jià)于a=a+3

那么a*=b+1等價(jià)于a=a*(b+1)

方法:

①a+=(b)(其中a為變量,b為表達(dá)式)

②a+=(b)(將有下劃線的“a+”移到“=”右側(cè))

③a=a+(b)(在“=”左側(cè)補(bǔ)上變量名a)11/3/2023

3)賦值表達(dá)式用賦值運(yùn)算符將運(yùn)算對(duì)象連接而成的式子稱為賦值表達(dá)式?!纠縤ntk,a=1,j=5;a+=j(luò)++【例】intx=6;

x+=x-=x*x;a=a+(j++)a=6,j=6x=x+(x-=x*x)x=x+(x=x-x*x)x=-6011/3/2023

2.4.3逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式

1)逗號(hào)運(yùn)算符“,”的用法:用作分隔符——在變量說(shuō)明語(yǔ)句、函數(shù)調(diào)用語(yǔ)句等場(chǎng)合,例如inta,b,c;用作運(yùn)算符——是一個(gè)雙目運(yùn)算符,構(gòu)成逗號(hào)表達(dá)式,優(yōu)先級(jí)最低,運(yùn)算順序自左至右;例如

a=2*6,a-4,a+15;12827逗號(hào)表達(dá)式的值為2711/3/2023

2)逗號(hào)表達(dá)式

形式:表達(dá)式1,表達(dá)式2,表達(dá)式3,…,表達(dá)式n分別計(jì)算每一個(gè)表達(dá)式的值,并將最后一個(gè)表達(dá)式的值作為整個(gè)逗號(hào)表達(dá)式的結(jié)果

【例】x=5+5,10+10

【例】x=(5+5,10+10)20,10逗號(hào)表達(dá)式的值和x的值分別為賦值語(yǔ)句之后x的值為2011/3/2023

【例】分析逗號(hào)表達(dá)式(a=3*5,a*4),a+15的結(jié)果。60a的值為15整個(gè)逗號(hào)表達(dá)式的值為30

【例】intx,y,分析y=(x=1,++x,x+2)的結(jié)果。逗號(hào)表達(dá)式的值為44y的值為括號(hào)中的表達(dá)式值為11/3/2023

2.4.4關(guān)系運(yùn)算符和關(guān)系表達(dá)式關(guān)系運(yùn)算主要用在程序中的判斷語(yǔ)句。

1、關(guān)系運(yùn)算符<<=>>===!=同級(jí)同級(jí)高低2、關(guān)系表達(dá)式若干表達(dá)式用關(guān)系運(yùn)算符連接而成,關(guān)系表達(dá)式的值為0或1?!纠吭O(shè)x=1,y=2,z=3,分析下面的關(guān)系表達(dá)式的值。

x!=y==z-2111/3/2023

2.4.5邏輯運(yùn)算符和邏輯表達(dá)式

1、邏輯運(yùn)算符運(yùn)算符優(yōu)先級(jí)!(邏輯非)1*/%2+-3<<=>>=4==!=5&&(邏輯與)6||(邏輯或)7=811/3/20232)邏輯表達(dá)式用邏輯運(yùn)算符將若干不同類型的表達(dá)式連接而成的式子稱為邏輯表達(dá)式。邏輯表達(dá)式的值應(yīng)該是一個(gè)邏輯量“真”或“假”。c語(yǔ)言編譯系統(tǒng)在給出邏輯運(yùn)算結(jié)果時(shí),判斷一個(gè)量是否為“真”時(shí),以0代表“假”,以非0代表“真”?!纠吭O(shè)inta=0,b=2,c=3;判斷下面邏輯表達(dá)式的值。

a<b&&b>0,a>0||b<0||c<0,!a11/3/2023

使用邏輯表達(dá)式時(shí),要注意的問(wèn)題:

代數(shù)中的不等式0<x<5必須寫成(x>0)&&

(x<5),而不能直接寫成0<x<5,因?yàn)闊o(wú)論x取值如何,其邏輯值恒為非0;

C語(yǔ)言允許直接對(duì)數(shù)或字符進(jìn)行邏輯運(yùn)算。例如:!5,其結(jié)果為0;11/3/2023【例】判別一個(gè)字符型變量c是否是英文字母。c>=‘A’&&c<=‘Z’||c>=’a’&&c<=‘z’【例】判別整數(shù)變量year是否為閏年。(year%4==0&&year%100!=0)||(year%400==0)返回11/3/2023

2.4.6位運(yùn)算符和位表達(dá)式

1)位運(yùn)算符位運(yùn)算符形式功能~~x對(duì)x的二進(jìn)制值按位求反&x&y對(duì)x,y的二進(jìn)制值按位與|x|y對(duì)x,y的二進(jìn)制值按位或^x^y對(duì)x,y的二進(jìn)制值按位異或<<x<<m將x的二進(jìn)制值左移m位>>x>>m將x的二進(jìn)制值右移m位

2)位運(yùn)算符求值規(guī)則11/3/2023

3)位運(yùn)算的優(yōu)先級(jí)~<<>>&^|運(yùn)算符求值規(guī)則~~0=1~1=0(求反)&0&0=00&1=01&0=01&1=1(與)|0|0=00|1=11|0=01|1=1(或)^0^0=00^1=11^0=11^1=0(異或)<<00101110<<2結(jié)果為10111000>>00101110>>2結(jié)果為00001011高低11/3/2023

【例】取一個(gè)整數(shù)a從右端開始的4~7位。

分為3步考慮:

第一步:先使a右移4位;下圖中,

(a)圖是未右移時(shí)的情況;(b)圖是右移4位后的情況。目的是使要取出的那幾位移到最右端。右移到右端可以用下面方法實(shí)現(xiàn):a>>4。11/3/2023

第二步:

設(shè)置一個(gè)低4位全為1,其余全為0的數(shù)??捎孟旅娣椒▽?shí)現(xiàn):

~(~0<<4)~0的全部二進(jìn)制為全1,左移4位,這樣右端低4位為

0。見(jiàn)下面所示:

0:0000…000000~0:1111…111111~0<<4:1111…110000~(~0<<4):0000…00111111/3/2023

第三步:

將上面二者進(jìn)行&運(yùn)算。即(a>>4)&~(~0<<4)

根據(jù)介紹的方法,與低4位為1的數(shù)進(jìn)行&運(yùn)算,就能將這4位保留下來(lái)。程序如下:

11/3/2023

main(

)

{unsigneda,b,c,d;

scanf("%o",&a);

b=a>>4;

c=~(~0<<4);d=b&c;

printf("%o,%d\n%o,%d\n",a,a,d,d);

}

11/3/20232.5常用的庫(kù)函數(shù)

2.5.1庫(kù)函數(shù)的調(diào)用

abs(x)fabs(x)sqrt(x)pow(x,y)clrscr()11/3/20232.5.2使用庫(kù)函數(shù)注意事項(xiàng)庫(kù)函數(shù)是C編譯系統(tǒng)預(yù)定義的,庫(kù)函數(shù)的原型都被定義在擴(kuò)展名為h的頭文件,在調(diào)用庫(kù)函數(shù)之前,必須用#include編譯預(yù)處理命令將相關(guān)的頭文件包含到程序中來(lái)。11/3/2023

【例】計(jì)算常用對(duì)數(shù)lgx。

#include“math.h”main(){floatx;scanf(“%f”,&x);printf(“%f\n”,log10(x));}11/3/2023第三章順序結(jié)構(gòu)程序設(shè)計(jì)11/3/2023程序從的執(zhí)行流程可以分為三種基本結(jié)構(gòu):順序結(jié)構(gòu)分支結(jié)構(gòu)循環(huán)結(jié)構(gòu)3.1用于順序結(jié)構(gòu)的基本語(yǔ)句

C語(yǔ)言用于順序結(jié)構(gòu)的基本語(yǔ)句是表達(dá)式語(yǔ)句、復(fù)合語(yǔ)句和空語(yǔ)句。

3.1.1表達(dá)式語(yǔ)句11/3/2023

表達(dá)式語(yǔ)句的形式:表達(dá)式;【例】a=1;【功能】完成計(jì)算表達(dá)式的值或?qū)⒔Y(jié)果賦給某一變量的任務(wù);【例】i++;【例】printf(“bye!”);

【例】x=y+z;11/3/2023

表達(dá)式語(yǔ)句中最常用的是賦值語(yǔ)句(賦值表達(dá)式+

;)簡(jiǎn)單賦值:變量=表達(dá)式;多重賦值:變量1=變量2=…=變量n=表達(dá)式;賦值表達(dá)式可以出現(xiàn)在任何表達(dá)式允許出現(xiàn)的地方,而賦值語(yǔ)句則不能;x=(y=2)+(z=3+y);x=(y=2;)+(z=3+y;);正確錯(cuò)誤11/3/20233.1.2復(fù)合語(yǔ)句復(fù)合語(yǔ)句的形式:{若干連續(xù)語(yǔ)句;

}

【例】{z=x;x=y;y=z;}

注意:{}中最后一個(gè)語(yǔ)句末尾的分號(hào)不能省略,并且在{}之外不能再加“;”?!緫?yīng)用范圍】復(fù)合語(yǔ)句主要用于選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)中。返回11/3/20233.1.3空語(yǔ)句空語(yǔ)句的形式:;【功能】一般作為程序的轉(zhuǎn)向點(diǎn)或作為循環(huán)語(yǔ)句中的空循環(huán)體;11/3/20233.2輸入與輸出

C語(yǔ)言的輸入和輸出函數(shù)(原型放在頭文件stdio.h中):

putchar(字符輸出);

printf(格式輸出);

getchar(字符輸入);

scanf(格式輸入);11/3/20233.2.1數(shù)據(jù)的輸出

1、putchar函數(shù)

功能:在顯示器上輸出一個(gè)字符。

函數(shù)調(diào)用形式:putchar(參數(shù))

說(shuō)明:參數(shù)可以是一個(gè)字符型變量、一個(gè)整型變量或一個(gè)字符型常量(包括控制字符和轉(zhuǎn)義字符)等。【例】使用庫(kù)函數(shù)putchar()輸出各種字符。11/3/2023

#include<stdio.h>main(){charch1,ch2;intj;ch1=‘C’;ch2=‘h’;j=105;putchar(ch1);putchar(ch2);putchar(j);putchar(‘n’);putchar(‘\141’);

putchar(‘\n’);輸出字符C輸出字符h輸出字符i輸出字符n輸出字符a,\141是轉(zhuǎn)義字符輸出換行}11/3/20232、printf函數(shù)

1)函數(shù)形式:

printf(“格式控制字符串”,輸出項(xiàng)1,輸出項(xiàng)2,…)

函數(shù)功能:將各輸出項(xiàng)(可以是變量、常量、表達(dá)式)的值按指定的格式輸出到屏幕上。【例】printf(“%d\n”,x);2)printf函數(shù)中常用的格式控制

形式:11/3/2023格式字符

%[

格式修飾]格式說(shuō)明總是由“%”字符開始標(biāo)志、類型修飾、輸出最小寬度和精度說(shuō)明輸出項(xiàng)類型

格式字符見(jiàn)P32表3.1;【例】printf(“x=%d,y=%f\n”,x,y);

【例】main()

{charc=‘A’;intx=1234;floaty=-123.456789;printf(“|%c|%s|%d|%f|%e|\n”,c,“Hello”,x,y,y);}11/3/2023

標(biāo)志

-表示輸出值左對(duì)齊,右邊補(bǔ)空;【例】printf(”%-d”,-24);運(yùn)行結(jié)果:-24??+表示輸出結(jié)果右對(duì)齊,輸出符號(hào)位;#對(duì)o格式輸出時(shí)加前綴0,對(duì)x格式輸出時(shí)加前綴0x,對(duì)

e、g、f格式當(dāng)結(jié)果有小數(shù)時(shí)才給出小數(shù)點(diǎn);11/3/2023

精度

m.n

【例】printf(“%8.1f”,123.45);

輸出結(jié)果:_

_

_123.5

輸出寬度用十進(jìn)制整數(shù)限定輸出數(shù)據(jù)的位數(shù):【例】printf(“%5d”,-24);運(yùn)行結(jié)果:__-24數(shù)據(jù)總寬度小數(shù)位數(shù)11/3/2023

類型修飾

h表示輸出項(xiàng)是短整型或無(wú)符號(hào)短整型;

l表示輸出項(xiàng)是長(zhǎng)整型或無(wú)符號(hào)長(zhǎng)整型;【例】longintx=1234567;

printf(”|%ld|%d|”,x,x);

輸出結(jié)果:|1234567|-10617|11/3/2023

【例】printf函數(shù)應(yīng)用舉例。#include<stdio.h>main(){intx=28;floaty=-1.7;charc=‘B’;doublez=1.25e+7;printf(“x=%+5d,y=%-8.3f\n”,x,y);printf(“|%c####%-5c|\n”,c,c);printf(“z=%lf\n”,z);}x=__

+28,y=-1.700__|B####B____|Z=12500000.00000011/3/20233.2.2數(shù)據(jù)的輸入

1、getchar函數(shù)調(diào)用形式:c=getchar()

功能:從鍵盤上讀取一個(gè)字符;【例】#include<stdio.h>main(){charch;ch=getchar();printf(“%c:%d\n”,ch,c);}#include<stdio.h>main(){charch;ch=getchar();printf(“c:%d\n”,ch,c);}11/3/20232、scanf函數(shù)

1)函數(shù)調(diào)用形式:

scanf(“格式控制字符串”,輸入項(xiàng)1,輸入項(xiàng)2,…)

函數(shù)功能:按指定的格式接收由鍵盤輸入的數(shù)據(jù),并存入輸入項(xiàng)變量所在的內(nèi)存單元中。

格式控制字符串形式:%[格式修飾]格式字符輸入項(xiàng)必須為地址引用:&變量名【例】scanf(“%d,%d”,&x,&y);11/3/20232)scanf函數(shù)中常用的格式控制格式字符見(jiàn)P36表3.3;輸入數(shù)據(jù)寬度用十進(jìn)制整數(shù)設(shè)定輸入數(shù)據(jù)的寬度,【例】scanf(”%5d”,&a);輸入7654321

類型修飾符類同于printf函數(shù);

3)scanf函數(shù)的使用要點(diǎn)

intx;scanf(”%d”,x);輸入數(shù)據(jù)時(shí),不允許規(guī)定精度錯(cuò)誤scanf(”%d”,&x)11/3/2023

輸入數(shù)據(jù)時(shí),數(shù)據(jù)與數(shù)據(jù)之間應(yīng)使用分隔符;【例】scanf(”%d,%d”,&x,&y);【例】scanf(”%d%d”,&x,&y);按原樣輸入的字符在鍵入時(shí)不能遺漏,否則將導(dǎo)致數(shù)據(jù)項(xiàng)與對(duì)應(yīng)讀入數(shù)據(jù)錯(cuò)位;【例】scanf(“x=%d,y=%d”,&x,&y);正確的輸入應(yīng)該是x=3,y=4

鍵入數(shù)據(jù)的類型、寬度應(yīng)該與格式控制中給定的相一致;例doublea,b;scanf(”%d%d”,&a,&b);

錯(cuò)誤11/3/20233.3順序結(jié)構(gòu)程序設(shè)計(jì)舉例

為了提高程序設(shè)計(jì)的質(zhì)量和效率,現(xiàn)在普遍采用結(jié)構(gòu)化程序設(shè)計(jì)方法。結(jié)構(gòu)化程序由若干個(gè)基本結(jié)構(gòu)組成。每一個(gè)基本結(jié)構(gòu)可以包含一個(gè)或若干個(gè)語(yǔ)句。

順序結(jié)構(gòu)見(jiàn)下圖。先執(zhí)行A操作,再執(zhí)行B操作,兩者是順序執(zhí)行的關(guān)系。圖是ns結(jié)構(gòu)化流程圖。11/3/2023

【例】輸入三角形的三邊長(zhǎng),求三角形面積。設(shè)輸入的三邊長(zhǎng)a、b、c能構(gòu)成三角形。從數(shù)學(xué)知識(shí)已知求三角形面積的公式為:其中s=(a+b+c)/2;#include<stdio.h>

#include<math.h>main()

{floata,b,c,s,area;

scanf("%f,%f,%f",&a,&b,&c);

s=(a+b+c)/2;

area=sqrt(s*(s-a)*(s-b)*(s-c));11/3/2023

printf("a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n",

a,b,c,s);

printf("area=%7.2f\n",area);}運(yùn)行情況如下:輸入

3,4,6

a=???3.00,b=???4.00,c=???6.00,s=???6.50

area=???5.3311/3/2023【例】編寫程序,鍵盤輸入一個(gè)三位整數(shù),逆序輸出之。

#include<stdio.h>main(){inta,i,j,k;printf(“Inputdatas:”);scanf(“%3d”,&a);

i=a/100;j=a/10-i*10;k=a-j*10-i*100;printf(“output:%d%d%d\n”,k,j,i);}11/3/2023

【例】不借助于第3個(gè)變量,將鍵盤輸入的兩個(gè)整數(shù)賦予變量a和b,程序輸出a,b的原始值以及相互交換后的值。#include<stdio.h>main(){inta,b;printf(“Inputaandb:”);scanf(“%d%d”,&a,&b);printf(“olda=%db=%d\n”,a,b);a=a+b;b=a-b;a=a-b;printf(“newa=%db=%d\n”,a,b);}ab68ab6+8=148ab6+8=1414-8=6ab14-6=8611/3/2023第四章選擇結(jié)構(gòu)程序設(shè)計(jì)11/3/2023順序結(jié)構(gòu)與選擇結(jié)構(gòu)流程對(duì)照

順序結(jié)構(gòu)選擇結(jié)構(gòu)

p代表一個(gè)條件,當(dāng)p條件成立(或稱為“真”)時(shí)執(zhí)行A,否則執(zhí)行B。注意,只能執(zhí)行A或B之一。兩條路徑匯合在一起然后出口。11/3/2023

兩個(gè)選擇結(jié)構(gòu)的程序?qū)嵗骸纠縤f條件語(yǔ)句。

if(x>0)return1;elsereturn–1;

【例】switch多分支選擇語(yǔ)句。

switch(month)

{case1:case3:day=31;case4:case6:day=30;}11/3/20234.1if語(yǔ)句

4.1.1if語(yǔ)句的三種基本形式

1、if結(jié)構(gòu)

if語(yǔ)句單分支選擇結(jié)構(gòu)的語(yǔ)法形式是:

if(表達(dá)式)語(yǔ)句1;

【例】if(x>0)y=1;

其中“x>0”是一個(gè)關(guān)系表達(dá)式。語(yǔ)義圖表達(dá)式語(yǔ)句1非0011/3/2023

【例】下列錯(cuò)誤的語(yǔ)句是()。

A)if(a>b)printf(“%d”,a);B)if(a>0);a=n;C)if(2)a=m;D)if(&&);a=m;D11/3/2023

【例】輸入一個(gè)整數(shù),判斷其奇偶性,若為奇數(shù)就顯示輸出。按照語(yǔ)法含義圖寫出程序的流程,并編寫程序代碼:是奇數(shù)嗎?用printf語(yǔ)句輸出否是11/3/2023

程序如下:

#include<stdio.h>main(){intx;scanf(“x=%d”,&x);if(x%2!=0)printf(“%disoddnumber\n”,x);}

運(yùn)行結(jié)果:x=77isoddnumber11/3/2023

2、if…else結(jié)構(gòu)

if語(yǔ)句雙分支選擇結(jié)構(gòu)的語(yǔ)法形式為:

if(表達(dá)式)語(yǔ)句1

;

else語(yǔ)句2

;

【例】if(x>0)y=1;elsey=-1;語(yǔ)義圖11/3/2023【例】從鍵盤上輸入兩個(gè)整數(shù),輸出其中的大數(shù)。寫出選擇結(jié)構(gòu)的語(yǔ)義圖:語(yǔ)義圖x>y輸出x輸出y11/3/2023

【題目】從鍵盤上輸入兩個(gè)整數(shù),輸出其中的大數(shù)。#include<stdio.h>main(){intx,y;printf(“Enterxandy:”);/*為了提高程序的可讀性*/scanf(“%d%d”,&x,&y);printf(“x=%d,y=%d\n”,x,y);/*提高程序的可讀性*/if(x>y)printf(“max=%d\n”,x);

elseprintf(“max=%d\n”,y);

}11/3/2023

思考問(wèn)題:

1、如果雙邊if語(yǔ)句if(表達(dá)式)語(yǔ)句1;

else語(yǔ)句2;語(yǔ)句1和語(yǔ)句2是個(gè)語(yǔ)句體,該如何表示?【例】比較a和b的大小,如果a>b,交換a和b的值,否則什么都不做。if(a>b)temp=a;a=b;b=temp;else;if(表達(dá)式){語(yǔ)句體1;}else{語(yǔ)句2;}

【例】if(a>b)temp=a;a=b;b=temp;復(fù)合語(yǔ)句{}11/3/2023

【例】寫出下面程序的輸出結(jié)果。運(yùn)行結(jié)果:11/3/20233、if…elseif結(jié)構(gòu)

if…elseif語(yǔ)句為多分支選擇結(jié)構(gòu),一般形式為:

if(表達(dá)式1)語(yǔ)句1;

elseif(表達(dá)式2)語(yǔ)句2;

elseif(表達(dá)式3)語(yǔ)句3;

……elseif(表達(dá)式n)語(yǔ)句n;

else語(yǔ)句n+1;11/3/2023多分支選擇結(jié)構(gòu)if…elseif語(yǔ)句的語(yǔ)義圖:11/3/2023

【例】有一函數(shù):-1(x<0),實(shí)現(xiàn)輸入一個(gè)x值,輸出y值。y=0(x=0)1(x>0)

分析:

輸入x如果x<0,則y=-1輸出y;否則:如果x=0,則y=0輸出y;

否則x>0,則y=1輸出y;11/3/202311/3/20234.1.2if語(yǔ)句的嵌套形式在if語(yǔ)句中又包含一個(gè)或多個(gè)if語(yǔ)句稱為if語(yǔ)句的嵌套。語(yǔ)義圖表達(dá)式非00表達(dá)式22語(yǔ)句3語(yǔ)句4非00語(yǔ)句1表達(dá)式11語(yǔ)句2非00if(表達(dá)式)

if(表達(dá)式11)語(yǔ)句1;

else

語(yǔ)句2;else

if(表達(dá)式22)語(yǔ)句3;

else

語(yǔ)句4;語(yǔ)法形式11/3/2023

【使用注意事項(xiàng)】else子句總是與它前面最近的、尚未配對(duì)的if子句進(jìn)行匹配;【例】if(a==b)if(b==c)printf(“a=b=c\n”);elseprintf(“b!=c\n”);{}11/3/20234.2條件表達(dá)式

條件運(yùn)算——條件運(yùn)算符連接表達(dá)式構(gòu)成的運(yùn)算;

1、條件運(yùn)算符

形式:

?:

2、條件表達(dá)式

形式:表達(dá)式1?表達(dá)式2:表達(dá)式3

語(yǔ)義:先計(jì)算表達(dá)式1的值,若結(jié)果為非0,則以表達(dá)式2的值作為整個(gè)條件表達(dá)式的值;若為0,則以表達(dá)式3的值作為整個(gè)表達(dá)式的值;11/3/2023

執(zhí)行過(guò)程如下:11/3/2023

【例】(x>0)?1:-1若表達(dá)式1為真,返回1,否則返回-1說(shuō)明:表達(dá)式2和表達(dá)式3通常為同類型,若不同則整個(gè)條件表達(dá)式的數(shù)據(jù)類型取兩個(gè)表達(dá)式中較高的類型;各類運(yùn)算符的優(yōu)先級(jí):算術(shù)運(yùn)算符關(guān)系運(yùn)算符邏輯運(yùn)算符條件運(yùn)算符賦值運(yùn)算符

高低表達(dá)式1表達(dá)式2表達(dá)式311/3/2023

條件運(yùn)算符的結(jié)合方向是“自右至左”的;【例】a>b?a:c>d?c:da>b?a:(c>d?c:d)

【例】設(shè)有:inta=1,b=2,c=3,d=4,m=2,n=2;求下列表達(dá)式的值。(1)a+b>c?m*a:m*b411/3/20234.3switch語(yǔ)句

看下面這個(gè)例子:

if(ch==‘Z’)z=z+1;elseif(ch==‘W’)w=w+1;elseif(ch==‘C’)c=c+1;elseif(ch==‘Q’)q=q+1;elseif(ch==‘S’)s=s+1;11/3/20231、switch語(yǔ)句的結(jié)構(gòu)

形式:switch(表達(dá)式)

{case

常量表達(dá)式1:語(yǔ)句1;

case

常量表達(dá)式2:語(yǔ)句2;

……case常量表達(dá)式n:語(yǔ)句n;

default:語(yǔ)句n+1;

}11/3/2023

用switch語(yǔ)句改寫上面的程序:

switch(ch){case‘Z’:z=z+1;case‘W’:w=w+1;case‘C’:c=c+1;case‘Q’:q=q+1;case‘S’:s=s+1;}

【例】要求按照考試成績(jī)等級(jí)打印出百分制分?jǐn)?shù)段可以用switch語(yǔ)句實(shí)現(xiàn):流程圖見(jiàn)下圖:11/3/202311/3/2023根據(jù)語(yǔ)義圖寫出switch語(yǔ)句結(jié)構(gòu):11/3/202311/3/2023運(yùn)行結(jié)果:11/3/20232、switch與break配合使用

break語(yǔ)句是中斷語(yǔ)句,常與switch語(yǔ)句配合使用,程序執(zhí)行到break語(yǔ)句時(shí),跳出switch語(yǔ)句體。用switch和break語(yǔ)句改寫上面的程序:11/3/2023運(yùn)行結(jié)果:11/3/2023【例】從鍵盤輸入一個(gè)分?jǐn)?shù),使用switch語(yǔ)句判斷是否及格。11/3/2023錯(cuò)誤【例】下述程序段中,正確的是()。

A)intx=0,y=10;switch(x){casey:x++;break;casey+2:x+=10;break;casey-1:x=-7;break;}11/3/2023B)intx=0,y;switch(x){casex>0:y=1;break;casex==0:y=0;break;casex<0:y=-1;break;}錯(cuò)誤11/3/2023

C)#definey20intx=10,y;switch(x){case12:z=3;break;casey+1:x+=10;break;casey-8:x-=3;break;}錯(cuò)誤11/3/2023

D)intx=0,y;switch(x){case3:case-1:y=2;break;case2:break;}正確11/3/20234.4應(yīng)用舉例

【例】判斷從鍵盤輸入的字符是否為小寫字母,若是,則將其轉(zhuǎn)換為大寫字母并輸出;若不是,則原樣輸出。流程圖如下所示:是小寫字母嗎?輸入字符轉(zhuǎn)換為大寫字母原樣輸出是否11/3/2023#include<stdio.h>main(){charch;printf(“pleaseinputacharacter:”);scanf(“%c”,&ch);if(ch>=‘a(chǎn)’&&ch<=‘z’)printf(“thecharacteris:%c\n”,ch-32);elseprintf(“thecharacteris:%c\n”,ch);}11/3/2023

【例】編寫程序,判斷某一年是否閏年(用嵌套的if語(yǔ)句)。分析題目:判斷某一年是否是閏年的表達(dá)式。#include<stdio.h>main(){intyear;printf("pleaseinputyear:");scanf("%d",&year);if((year%4==0&&year%100!=0)||(year%400==0))printf("%disrun-year!\n",year);elseprintf(“%disnotrun-year!\n”,year);}11/3/2023

【例】編寫程序,判斷某一年是否閏年(用嵌套的if語(yǔ)句)。分析題目:我們用下圖來(lái)表示判別閏年的算法。以變量leap代表是否閏年的信息。若某年為閏年,則令leap=1;若為非閏年,令leap=0。最后判斷l(xiāng)eap是否為1(真),若是,則輸出“閏年”信息。11/3/2023編寫程序如下:#include<stdio.h>

main()

{intyear,leap;

scanf("%d",&year);

if

(year%4==0){

if

(year%100==0)

{if

(year%400==0)

leap=1;

else

leap=0;}

else

leap=1;}

else

leap=0;11/3/2023if

(leap)

printf("%disaleapyear.\n",year);

else

printf(“%disnotaleapyear.\n”,year);}運(yùn)行結(jié)果:1989

1989isnotaleapyear.2000

2000isaleapyear.11/3/2023實(shí)驗(yàn)習(xí)題課11/3/2023【習(xí)題1】預(yù)測(cè)程序運(yùn)行后的輸出值。

#include<stdio.h>main(){charx,y,z;x=‘a(chǎn)’;y=‘\t’;z=‘b’;printf(“Theline1is:%c%c%c\n”,x,y,z);printf(“Theline2is:%c%c%c%c\n”,x,y,y,z);}運(yùn)行結(jié)果為:11/3/2023

【習(xí)題2】編寫程序,輸入一個(gè)3位的正整數(shù),分別以順序和倒序按列輸出其中的每一位數(shù)字。例如:輸入519

輸出59119511/3/2023#include<stdio.h>main(){printf(“x=?”);/*提高程序的可讀性*/scanf(“%3d”,&x);a=x/100;b=(x-a*100)/10;c=x%10;printf(“%d%d\n%d%d\n%d%d\n”,a,c,b,b,c,a);}inta,b,c,x;11/3/2023【習(xí)題3】閱讀程序,預(yù)測(cè)程序的輸出值。main(){unsignedv=65535;w[]=“programming”;printf(“%d,%2d,%6d,%06d\n,i,i,i,i);printf(“%08d\n”,v);}printf(“%11.7s\n”,w);inti=1234,j=047;#include<stdio.h>printf(“%d”,j);1234,1234,__1234,001234____program-00000013911/3/2023∵216=65536∴65535=216-1100000000000000001111111111111111216215214213212211210292827262524232221202152142132122112102928272625242322212065535=216-1216=6553611/3/2023【習(xí)題4】對(duì)下面的程序按題目要求完成規(guī)定的操作。

#include<stdio.h>main(){inta,b;floatx,y;charc1,c2;scanf(“(1)”,&c1,&c2);scanf(“(2)”,&a,&b,&x,&y);printf(“a=%d\tb=%d\n”,a,b);printf(“x=%6.2f\ty=%e\n”,x,y);printf(“c1=%c\tc2=%c\n”,c1,c2);printf(“(3)”);}a=12b=678x=34.55y=1.81930e+02c1=$c2=&輸出空的一行bye!!$&1234567834.55181.93%c%*c%c\n%d%*d%d%f%f\nbye!!11/3/2023

【習(xí)題5】以下if語(yǔ)句用于對(duì)所給的分段函數(shù)求值,有錯(cuò)誤,請(qǐng)用整齊的縮進(jìn)格式將該if語(yǔ)句改寫為正確。x=1a>0,b>0,c>02a>0,b>0,c<03a>0,b<=04a<=05if(a>0)if(b>0)if(c>0)x=1;elsex=2;elsex=3;elsex=4elsex=5;程序錯(cuò)在哪里了?11/3/2023畫出語(yǔ)義圖:a>0真假b>0真假x=4c>0x=3假真x=1c<0x=2真假11/3/2023改寫以后的程序:x=5;if(a>0)if(b>0){if(c>0)x=1;elseif(c<0)x=2;}elsex=3;elsex=4;x=1a>0,b>0,c>02a>0,b>0,c<03a>0,b<=04a<=05分段函數(shù):11/3/2023【習(xí)題6】用switch語(yǔ)句編寫程序?qū)崿F(xiàn)下面的函數(shù)計(jì)算。y=x20<=x<1x2-51<=x<2x2-2x-12<=x<3x2+6x-183<=x<4#incldue<stdio.h>main(){floatx,y;scanf(“%f”,&x);switch((int)x){case0:y=x*x;break;case1:y=x*x-5;break;case2:y=x*x-2*x-1;break;case3:y=x*x+6*x-18;break;default:exit();}printf(“x=%f,y=%f\n”,x,y);}11/3/2023第五章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)11/3/2023

循環(huán)的邏輯含義:當(dāng)滿足某個(gè)特定的條件時(shí),重復(fù)執(zhí)行某段程序,直到條件不滿足為止。兩種循環(huán)結(jié)構(gòu):結(jié)構(gòu)化程序設(shè)計(jì)順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)

循環(huán)結(jié)構(gòu)主要用于解決當(dāng)符合某個(gè)特定條件時(shí)需要重復(fù)執(zhí)行某一操作的問(wèn)題。例如,要輸入全校學(xué)生成績(jī);求若干個(gè)數(shù)之和;迭代求根等。循環(huán)結(jié)構(gòu)是結(jié)構(gòu)化程序設(shè)計(jì)的基本結(jié)構(gòu)。11/3/2023①當(dāng)型循環(huán)結(jié)構(gòu)見(jiàn)圖1。當(dāng)P條件成立(“真”)時(shí),反復(fù)執(zhí)行A操作。直到P為“假”時(shí)才停止循環(huán)。圖1當(dāng)型循環(huán)結(jié)構(gòu)圖2直到型循環(huán)結(jié)構(gòu)真假假

②直到型循環(huán)結(jié)構(gòu)見(jiàn)圖2。先執(zhí)行A操作,再判斷P是否為“真”,若“真”,再執(zhí)行A,如此反復(fù),直到P為“假”為止。11/3/2023

在C語(yǔ)言中,用于循環(huán)結(jié)構(gòu)的三種程序設(shè)計(jì)語(yǔ)句有:

(1)用while語(yǔ)句(當(dāng)型循環(huán)結(jié)構(gòu));

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論