版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第2章順序結(jié)構(gòu)流程及應(yīng)用
本章內(nèi)容中我們將學(xué)習(xí)1C語言中的數(shù)據(jù)類型2標(biāo)識符、常量與變量3數(shù)據(jù)輸入/輸出處理4運算符與表達式5順序結(jié)構(gòu)程序設(shè)計第2章順序結(jié)構(gòu)流程及應(yīng)用本章內(nèi)容中我們將學(xué)習(xí)12.1基本字符、標(biāo)識符和關(guān)鍵字學(xué)一學(xué)基本字符標(biāo)識符關(guān)鍵字2.1基本字符、標(biāo)識符和關(guān)鍵字學(xué)一學(xué)2基本字符一個C程序也可以看成是由C語言的基本字符按一定的規(guī)則組成的一個序列。C語言中使用的基本字符包括:數(shù)字字符:0~9;大小寫英文字母:a~z,A~Z;其他可打?。娠@示)字符:!#%^&*_(下劃線)-+=~<>/\|.,:;?‘“()[]{}空白字符:空格符、換行符、制表符等?;咀址粋€C程序也可以看成是由C語言的基本字符按一定3
和其它高級語言一樣,用來標(biāo)識函數(shù)名、變量名、符號常量、數(shù)組名、類型名、文件名的有效字符序列稱為“標(biāo)識符”(identifier),通俗地講,標(biāo)識符就是一個名字。在C語言中,標(biāo)識符的命名規(guī)則為:(1)有效字符:只能由字母、數(shù)字和下劃線組成,且以字母或下劃線開頭;(2)有效長度:隨系統(tǒng)而異,但至少前8個字符有效。如果超長,則超長部分被舍棄;(3)C語言的關(guān)鍵字(或稱保留字)不能用作標(biāo)識符。例如:sum,Total,day,_f2048,file_name,a3b06 都是合法的標(biāo)識符,而 99new,a-b,W.S.Piter,$88,cd#ab,@vbase,int 都是不合法標(biāo)識符。標(biāo)識符
和其它高級語言一樣,用來標(biāo)識函數(shù)名、變量名、符4關(guān)鍵字 由系統(tǒng)預(yù)先定義的標(biāo)識符稱“關(guān)鍵字”,它們都有特殊的含意,不能用于其它目的。C語言關(guān)鍵字32個,如表2-1所示。關(guān)鍵字 由系統(tǒng)預(yù)先定義的標(biāo)識符稱“關(guān)鍵字”,它們都有特殊的含52.2數(shù)據(jù)類型及常量、變量
學(xué)一學(xué)數(shù)據(jù)類型常量變量2.2數(shù)據(jù)類型及常量、變量學(xué)一學(xué)6數(shù)據(jù)類型
數(shù)據(jù)類型7常量常量是在程序的執(zhí)行過程中其值不變的量。在C語言中,常量不需要類型說明就可以直接使用,常量的類型是由常量本身隱含決定的。在C語言中,從其表現(xiàn)形式常量分為普通常量和符號常量。普通常量就是用數(shù)字直接表示的常量,符號常量是用一個標(biāo)識符來代表的常量。無論是普通常量,還是符號常量,它們都有自己的類型。
常量8普通常量與符號常量 1.普通常量 普通常量有3類:數(shù)值常量、字符型常量和字符串常量。例如, 1,200,3500,0x12——整型數(shù)值常量 835.6,77.2,0.618——實型數(shù)值常量 ‘a(chǎn)’,‘A’,‘$’——字符型常量 “Hello”,“Welcome”——字符串常量 2.符號常量 在C語言程序中,可對常量進行命名,即用符號代替常量,叫做符號常量,一般用大寫字母表示,一經(jīng)定義就可以代替常量使用。普通常量與符號常量 1.普通常量9變量 變量是指在程序執(zhí)行過程中,其值可以改變的量。一個變量用一個名字表示,在內(nèi)存中占據(jù)一定的存儲單元,用于存放變量的值。變量必須先定義后使用,變量的值可以通過賦值的方法獲得和改變。變量 變量是指在程序執(zhí)行過程中,其值可以改變的量。10變量定義和初始化 [存儲類型]數(shù)據(jù)類型變量名1[=初始數(shù)據(jù)],變量名2[=初始數(shù)據(jù)2],…,變量n[=初始數(shù)據(jù)n];變量定義和初始化11試一試 問題2.1新生入學(xué)需要保存學(xué)生數(shù)據(jù),現(xiàn)在定義整型變量存放年齡、學(xué)號,定義字符變量存放性別,定義浮點型變量存放入學(xué)分?jǐn)?shù)和班費。 intiAge=20,iNum=201; charcSex=’m’;/*f:female(女),m:male(男)*/ floatfScore,fSum; fScore=580.5; fMoney=78.5試一試 問題2.1新生入學(xué)需要保存學(xué)生數(shù)據(jù),現(xiàn)在定義整型變量12想一想
生活、學(xué)習(xí)、工作中有哪些量是其值不變的常量?哪些信息是經(jīng)常變化的?定義成什么類型的變量比較合適?想一想132.3數(shù)據(jù)的輸出和輸入數(shù)據(jù)的格式化輸出數(shù)據(jù)的格式化輸入單個字符的輸出和輸入2.3數(shù)據(jù)的輸出和輸入14數(shù)據(jù)的格式化輸出學(xué)一學(xué)格式化輸出函數(shù)printf的功能是按指定的格式向終端(或系統(tǒng)默認(rèn)的輸出設(shè)備)輸出若干個任意類型的數(shù)據(jù)。printf函數(shù)的一般形式為:printf(格式控制,[輸出表列]);其中,“格式控制”是用雙引號括起來的字符串,也稱“轉(zhuǎn)換控制字符串”。它是由字符“%”、格式字符(如d、f、c等)和普通字符(原樣輸出的)組成?!拜敵霰砹小笔且恍┡c“格式控制”中的格式字符一一對應(yīng)的需要輸出的數(shù)據(jù),可以是變量或表達式。。數(shù)據(jù)的格式化輸出學(xué)一學(xué)15試一試問題2.2新生入學(xué)需要將自己的姓名、年齡、學(xué)號、性別、入學(xué)成績打印出來,請編程實現(xiàn)?!窘忸}步驟】1.定義整型變量iAge,iNum存放年齡、學(xué)號;2.定義字符變量chSex存放性別;3.定義實型變量fScore用來存放入學(xué)成績;4.用printf函數(shù)上面的信息打印出來;試一試問題2.2新生入學(xué)需要將自己的姓名、年齡、學(xué)號16程序代碼#include“stdio.h”voidmain(){intiAge=20,iNum=201; charchSex=’m’;/*f:female(女),m:male(男)*/floatfScore=580.5;printf(“Tony’spersonalinformation\n”);printf(“Name:Tony\n”);printf(“ID:%d\n”,iNum);printf(“Age:%d\nSex:%c\nScore:%d\n”,iAge,chSex,fScore);}程序代碼17
問題2.3轉(zhuǎn)義字符輸出演示請觀察下面程序運行結(jié)果。
#include“stdio.h”voidmain(){charch1,ch2,ch3;ch1=‘n’;ch2=‘e’;ch3=‘\167’;/*8進制數(shù)167代表的字符w*/printf(“%c%c%c\n”,ch1,ch2,ch3);/*以字符格式輸出*/printf(“%c\t%c\t%c\n”,ch1,ch2,ch3);/*每輸出一個字符后跳到下一個輸出區(qū)*/printf(“%c\n%c\n%c\n”,ch1,ch2,ch3);/*每輸出一個字符后換行*/}問題2.3轉(zhuǎn)義字符輸出演示請觀察下面程序運行結(jié)果。18數(shù)據(jù)的格式化輸入格式化輸入函數(shù)scanf的功能是用來從外部設(shè)備(通常是鍵盤),向程序中的變量輸入一個或若干個任意類型的數(shù)據(jù)。scanf函數(shù)的一般形式為:scanf(格式控制,地址表列);其中“格式控制”的含義同printf函數(shù);“地址表列”是由若干個地址組成的表列,可以是變量的地址,或字符串的首地址。數(shù)據(jù)的格式化輸入格式化輸入函數(shù)scanf的功能是用19試一試問題2.4Tony因?qū)W習(xí)努力,成績突出,上半學(xué)年獲獎學(xué)金2500元,下半學(xué)年獲獎學(xué)金3000元。用scanf函數(shù)輸入數(shù)據(jù),計算Tony本學(xué)年所獲得的獎學(xué)金并輸出結(jié)果。【解題步驟】1.定義變量iPrize1、iPrize2和iSum用來存放上半年、下半年和本年度的獎學(xué)金值;2.輸出提示信息;3.從鍵盤輸入上半年和下半年的獎學(xué)金;4.計算本年度獎學(xué)金存入iSum;5.輸出本年度獎學(xué)金iSum中的值。試一試問題2.4Tony因?qū)W習(xí)努力,成績突出,上半學(xué)年獲獎20程序代碼
#include“stdio.h”voidmain(){intiPrize1,iPrize2,iSum;/*定義變量*/printf("pleaseinputtwoprizes:");/*輸出提示信息*/scanf("%d%d",&iPrize1,&iPrize2);/*從鍵盤輸入數(shù)據(jù)*/isum=iPriz1+iPrize2;/*求和計算*/printf("Tom’sprizeis%d",iSum);/*輸出計算結(jié)果*/}?程序代碼21單個字符的輸出和輸入函數(shù)putchar()和getchar()專門用來輸入和輸出字符型數(shù)據(jù),使用時要包含頭文件stdio.h。putchar函數(shù)的功能是用于將一個字符輸出到顯示器上顯示,其一般調(diào)用形式為:putchar(ch);其中,ch為一個字符型數(shù)據(jù)(普通字符或轉(zhuǎn)義字符)或整型數(shù)據(jù)(0~255)。getchar函數(shù)的功能是從標(biāo)準(zhǔn)輸入設(shè)備(鍵盤)讀入一個字符。它的一般調(diào)用形式為:ch=getchar();其中ch為一個字符型變量,把從鍵盤接收到字符放到變量ch中。單個字符的輸出和輸入函數(shù)putchar()和getc22試一試問題2.5從鍵盤輸入一個小寫字母,將其轉(zhuǎn)化為大寫字母輸出。【解題步驟】定義字符變量ch用來存放從鍵盤輸入的數(shù)據(jù)。;輸出提示信息;從鍵盤接收一個小寫字母存入ch;將字符ch轉(zhuǎn)換為大寫字母,即ch-32后仍存入到ch;輸出字符變量ch中的字符;試一試23程序代碼#include“stdio.h”voidmain(){charch;printf(“從鍵盤輸入一個小寫字母”);ch=getchar();/*從鍵盤接收一個小寫字母*/ch=ch-32;/*小寫字母轉(zhuǎn)化為大寫字母*/putchar(ch);/*輸出大寫字母*/}程序代碼#include“stdio.h”24小結(jié)格式化輸出函數(shù)printf中雙引號括起來的內(nèi)容除了%d等格式說明符外,其它字符原樣輸出。同樣格式化輸入函數(shù)scanf中雙引號括起來的內(nèi)容除了%d等格式說明符外,其它字符照原樣輸入。printf函數(shù)中的格式說明符非常豐富,如表2-4所示。使用scanf函數(shù)時要輸入的變量名前要加取地址符號“&”,scanf函數(shù)的格式說明符如表2-5所示小結(jié)格式化輸出函數(shù)printf中雙引號括起來的內(nèi)容除了%d等252.4運算符與表達式算術(shù)運算符與算術(shù)表達式賦值運算符和賦值表達式
逗號運算符和逗號表達式2.4運算符與表達式算術(shù)運算符與算術(shù)表達式26運算符分類C的運算符大致有如下的幾類。基本算術(shù)運算符:+-*/%關(guān)系運算符:<>>=<===!=邏輯運算符:!&&||強制類型轉(zhuǎn)換運算符:()自增、自減運算符:++――賦值運算符:=條件運算符:?:逗號運算符:,指針運算符:*&求字節(jié)數(shù)運算符:sizeof位運算符:<<>>~|^&分量運算符:.->下標(biāo)運算符:[]運算符分類C的運算符大致有如下的幾類。27算術(shù)運算符和算術(shù)表達式試一試問題2.6從鍵盤輸入一個3位數(shù),求該數(shù)個位、十位、百位上的數(shù)的和?!窘忸}步驟】定義整型變量iNum接收從鍵盤輸入的三位數(shù);定義整型變量i1,i2,i3,iSum用來存放個位、十位、百位上的數(shù)據(jù)及其和;從鍵盤輸入一個3位數(shù)存入變量iNum中;用iNum%10求得個位上的數(shù)存入i1中,用iNum/10%10求得十位上的數(shù)存入i2中;用iNum/100求得百位上的數(shù)存入i3中;求和輸出和。算術(shù)運算符和算術(shù)表達式試一試28程序代碼#include“stdio.h”voidmain(){intiNum;inti1,i2,i3,iSum;printf(“pleaseinputainteger(100-999):”);scanf(“d%”,&iNum);i1=iNum%10;/*求個位數(shù)*/i2=iNum/10%10;/*求十位數(shù)*/i3=iNum/100;/*求百位數(shù)*/iSum=i1+i2+i3;printf(“d%thesumis:”,iSum);}程序代碼#include“stdio.h”29想一想對于一個四位整數(shù),其千位、百位、十位、個位上的數(shù)如何求得?想一想30強制類型轉(zhuǎn)換運算符學(xué)一學(xué)在實際應(yīng)用中,常常要把一些表達式的類型轉(zhuǎn)換成所需的類型。C語言提供了強制類型轉(zhuǎn)換運算符。其格式為:(類型名)(表達式)強制類型轉(zhuǎn)換運算符學(xué)一學(xué)31試一試問題2.7從鍵盤輸入一個球的半徑值,計算并輸出這個球的體積。球體積計算公式為:v=4/3*∏*r3。其中r是球的半徑,∏是圓周率,v是球的體積。【解題步驟】定義符號常量PAI=3.1415926作為圓周率;定義float型變量fRadius、fVolum用來存放球半徑和球體積;從鍵盤輸入球半徑放變量fRadius;計算球的體積;輸出球體積。試一試問題2.7從鍵盤輸入一個球的半徑值,計算并輸出這個球32程序代碼#include“stdio.h”#definePAI3.1415926voidmain(){floatfRadius,fVolume;printf(“pleasetheball’sradius:”);
scanf(“%f”,&fRadius);fVolume=(float)4/3*PAI*fRadius*fRadius*fRadius;printf(“theball’svolume:%f”,fVolume);}程序代碼#include“stdio.h”33自增、自減運算符學(xué)一學(xué)自增、自減運算符是單目運算符,即對一個運算對象施加運算,運算結(jié)果仍賦予該對象。參加運算的對象必須是變量。如表2-7所示。自增、自減運算符學(xué)一學(xué)34試一試問題2.8運行下面的程序,觀察并分析自增、自減運算符的用法。#include“stdio.h”voidmain(){intiX,iY;iX=2;iY=iX++*4;printf(“iX=%d,iY=%d\n”,iX,iY);iX=2;iY=iX--*4;printf(“iX=%d,iY=%d\n”,iX,iY);iX=2;iY=++iX*4;printf(“iX=%d,iY=%d\n”,iX,iY);iX=2;iY=--iX*4;printf(“iX=%d,iY=%d\n”,iX,iY);}試一試35算術(shù)表達式學(xué)一學(xué)用算術(shù)運算符和括號將運算對象(也稱操作數(shù))連接起來的符合C語法規(guī)則的式子,稱為C算術(shù)表達式。運算對象可以是常量、變量、函數(shù)等。5.算術(shù)運算符的優(yōu)先級和結(jié)合方向C語言規(guī)定了運算符的優(yōu)先級和結(jié)合方向,在表達式求值時,先按運算符的優(yōu)先級別高低次序執(zhí)行,再按運算符的結(jié)合方向結(jié)合(相同優(yōu)先級時)。例如先乘除后加減,如表2-8所算術(shù)表達式學(xué)一學(xué)36算術(shù)運算符的優(yōu)先級和結(jié)合方向C語言規(guī)定了運算符的優(yōu)先級和結(jié)合方向,在表達式求值時,先按運算符的優(yōu)先級別高低次序執(zhí)行,再按運算符的結(jié)合方向結(jié)合(相同優(yōu)先級時)。例如先乘除后加減,如表2-8所示。算術(shù)運算符的優(yōu)先級和結(jié)合方向C語言規(guī)定了運算符的優(yōu)先級37試一試問題2.9函數(shù)f(x)=3x3+2x2+x+1,編一程序計算并輸出f(3)值?!窘忸}步驟】定義整型變量iX、iY;從鍵盤輸入一個自變量的值;計算函數(shù)值;輸出函數(shù)值;試一試問題2.9函數(shù)f(x)=3x3+2x2+x+1,編38程序代碼#include“stdio.h”voidmain(){intiX,iY;printf(“請輸入自變量值:”);scanf(“%d”,&iX);iY=3*iX*iX*iX+2*iX*iX+iX+1;printf(“函數(shù)值是:%d”,iY);}程序代碼#include“stdio.h”39賦值運算符和賦值表達式學(xué)一學(xué)1.賦值運算符在C語言中,等號“=”被作為是一種運算符來處理,稱為賦值運算符。其一般形式為:<變量名>=<表達式>;它的作用就是將右邊表達式的值賦給左邊的變量2.復(fù)合賦值運算符在賦值運算符的前面加上一個其它運算符后就構(gòu)成復(fù)合的賦值運算符。其一般形式為:<變量><雙目運算符>=<表達式>;等價于:<變量>=<變量><雙目運算符><表達式>;3.賦值表達式由賦值運算符將一個變量和一個表達式連接起來的式子稱為賦值表達式,它的一般形式為:<變量><賦值運算符><表達式>賦值運算符和賦值表達式學(xué)一學(xué)40試一試問題2.10賦值運算符和賦值表達式用法演示,運行程序并觀察運行結(jié)果。#include“stdio.h”voidmain(){intiA,iB,iC,iX,iY;iA=2;iY=iX=2*iA+6;printf("\niA=%d",iA);/*輸出賦值表達式iA的值*/printf("\niX=2*iA+6is%d",iX=2*iA+6);/*輸出賦值表達式iX=2*iA+6的值*/printf("\niY=%d",iY);/*輸出變量iY的值*/iC=iB=iA=4;/*表達式iB=iA=4賦給iC*/printf("\niB=iA=4is%d",iB=iA=4);/*輸出表達式iB=iA=4的值*/printf("\niA=%d,iB=%d,iC=%d",iA,iB,iC);/*輸出變量iA,iB,iC的值*/}試一試問題2.10賦值運算符和賦值表達式用法演示,運行程序41逗號運算符和逗號表達式學(xué)一學(xué)逗號運算符“,”作為C語言的一種特殊的運算符,也稱為順序求值運算符,它的作用是把多個表達式連接起來,用逗號運算符連接起來的式子稱為逗號表達式,其一般形式為:表達式1,表達式2,...,表達式n表達式的求解過程按照從左到右的順序逐個求解表達式1,表達式2,...,表達式n,而整個逗號表達式的值是最后一個表達式(表達式n)的值。逗號運算符和逗號表達式學(xué)一學(xué)42試一試問題2.11逗號運算符和逗號表達式用法演示,運行程序并觀察運行結(jié)果?!境绦虼a】#include“stdio.h”voidmain(){intiA=2,iB=3;intiX,iY;floatfC;iX=(iA*2+1,iY=iB+2,iA*iY);fC=(iA+5,2.0*iX);printf("iX=%d,iY=%d\n",iX,iY);printf("fC=%f\n",fC);}試一試43小結(jié)不同數(shù)據(jù)類型的數(shù)據(jù)進行混合運算時,往往需要進行類型轉(zhuǎn)換。在C語言中這種轉(zhuǎn)換通常是自動進行的,當(dāng)然也可以通過強制類型轉(zhuǎn)換運算符進強制進行。各種運算符具有優(yōu)先級和結(jié)合方向,通常情況下,可用圓括號限制優(yōu)先級
小結(jié)不同數(shù)據(jù)類型的數(shù)據(jù)進行混合運算時,往往需要進行類型轉(zhuǎn)換。442.5順序結(jié)構(gòu)程序設(shè)計
C是結(jié)構(gòu)化程序設(shè)計語言,結(jié)構(gòu)化程序設(shè)計的基本思想是,用順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)三種基本結(jié)構(gòu)來構(gòu)造程序。C語言提供了豐富的語句用來支持結(jié)構(gòu)化的程序設(shè)計。2.5順序結(jié)構(gòu)程序設(shè)計C是結(jié)構(gòu)化程序設(shè)計語言,結(jié)45C語句的分類C語句可以分為以下五大類:1.函數(shù)調(diào)用語句。由一次函數(shù)調(diào)用加一個分號構(gòu)成的語句。2.表達式語句。表達式的后面加一個分號就構(gòu)成了一個表達式語句。3.空語句,光有一個分號“;”,作為語句結(jié)束符,它表示什么也不做。4.復(fù)合語句。由“{”和“}”把一些變量說明和語句組合在一起,稱之為復(fù)合語句(Block),又稱語句塊。5.控制語句,共九種。C語句的分類C語句可以分為以下五大類:46C的控制語句⑴if語句(條件語句)⑵switch語句(多分支選擇語句)⑶while語句(循環(huán)語句)⑷do-while語句(循環(huán)語句)⑸for語句(循環(huán)語句)⑹break語句(終止執(zhí)行循環(huán)語句或switch語句)⑺continue語句(結(jié)束本次循環(huán)語句)⑻goto語句(轉(zhuǎn)向語句)⑼return語句(從函數(shù)返回語句)C的控制語句⑴if語句(條件語句)47程序的三種基本結(jié)構(gòu)1.順序結(jié)構(gòu)順序執(zhí)行每個操作,即先執(zhí)行A操作,再執(zhí)行B操作,兩者之間是順序執(zhí)行的關(guān)系。圖2-3是順序結(jié)構(gòu)的流程圖。2.選擇結(jié)構(gòu)設(shè)P代表一個判斷條件,當(dāng)P成立(或稱“為真”)時,執(zhí)行A操作,否則執(zhí)行B操作。即A和B中只能選擇其中之一。圖2-4是選擇結(jié)構(gòu)的流程圖。3.循環(huán)結(jié)構(gòu)C語言提供了兩種循環(huán)結(jié)構(gòu)。(1)當(dāng)型循環(huán)結(jié)構(gòu):如圖2-5所示,當(dāng)條件P成立時,反復(fù)執(zhí)行A操作,直到條件P不再成立時才跳出循環(huán)。(2)直到型循環(huán)結(jié)構(gòu):如圖2-6所示,先執(zhí)行A操作,再判斷條件P是否成立,若P成立,則再執(zhí)行A操作,如此反復(fù),直到條件P不成立時跳出循環(huán)。程序的三種基本結(jié)構(gòu)1.順序結(jié)構(gòu)48三種基本結(jié)構(gòu)流程圖三種基本結(jié)構(gòu)流程圖49試一試問題2.12編一程序?qū)⑷A氏溫度轉(zhuǎn)換為攝氏溫度。公式為:攝氏溫度=5/9(華氏溫度-32),要求從鍵盤輸入華氏溫度的值?!窘忸}步驟】定義fF變量存放華氏溫度值;定義變量fC存放攝氏溫度值;從鍵盤輸入華氏溫度值存入變量fF;計算攝氏溫度;輸出攝氏溫度。試一試問題2.12編一程序?qū)⑷A氏溫度轉(zhuǎn)換為攝氏溫度。公式為50程序代碼#include“stdio.h”voidmain(){floatfF,fC;printf("PleaseinputthedegreesFahrenheit:");scanf("%d",&fF);fC=5.0/9*(fF-32);printf("thedegreesCelsiusis%f\n",fC);}程序代碼51問題2.13交換兩個變量的值。解題步驟:1.定義整型變量iX,iY;2.定義臨時變量iTemp;3.iX=1,iY=2;4.輸出iX,iY;5.將變量iX的值存入iTemp;6.將變量iY的值存入iX;7.將變量iTemp的值存入iX;8.輸出iX,iY;問題2.13交換兩個變量的值。52程序代碼#include"stdio.h"voidmain(){intiX,iY;intiTemp;iX=1;iY=2;printf("iX=%d,iY=%d\n",iX,iY);iTemp=iX;iX=iY;iY=iTemp;printf("iX=%d,iY=%d\n",iX,iY);getch();}程序代碼#include"stdio.h"53想一想交換兩個變量中的值類似于日常生活中的哪些問題?想一想交換兩個變量中的值類似于日常生活中的哪些問題?54小結(jié)1.順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)是結(jié)構(gòu)化程序設(shè)計的三種基本結(jié)構(gòu),其中順序結(jié)構(gòu)是最基本的程序結(jié)構(gòu)。2.C語言提供了五大類語句可以實現(xiàn)結(jié)構(gòu)化的程序設(shè)計。小結(jié)1.順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)是結(jié)構(gòu)化程序設(shè)計的三種基55第2章順序結(jié)構(gòu)流程及應(yīng)用
本章內(nèi)容中我們將學(xué)習(xí)1C語言中的數(shù)據(jù)類型2標(biāo)識符、常量與變量3數(shù)據(jù)輸入/輸出處理4運算符與表達式5順序結(jié)構(gòu)程序設(shè)計第2章順序結(jié)構(gòu)流程及應(yīng)用本章內(nèi)容中我們將學(xué)習(xí)562.1基本字符、標(biāo)識符和關(guān)鍵字學(xué)一學(xué)基本字符標(biāo)識符關(guān)鍵字2.1基本字符、標(biāo)識符和關(guān)鍵字學(xué)一學(xué)57基本字符一個C程序也可以看成是由C語言的基本字符按一定的規(guī)則組成的一個序列。C語言中使用的基本字符包括:數(shù)字字符:0~9;大小寫英文字母:a~z,A~Z;其他可打?。娠@示)字符:!#%^&*_(下劃線)-+=~<>/\|.,:;?‘“()[]{}空白字符:空格符、換行符、制表符等?;咀址粋€C程序也可以看成是由C語言的基本字符按一定58
和其它高級語言一樣,用來標(biāo)識函數(shù)名、變量名、符號常量、數(shù)組名、類型名、文件名的有效字符序列稱為“標(biāo)識符”(identifier),通俗地講,標(biāo)識符就是一個名字。在C語言中,標(biāo)識符的命名規(guī)則為:(1)有效字符:只能由字母、數(shù)字和下劃線組成,且以字母或下劃線開頭;(2)有效長度:隨系統(tǒng)而異,但至少前8個字符有效。如果超長,則超長部分被舍棄;(3)C語言的關(guān)鍵字(或稱保留字)不能用作標(biāo)識符。例如:sum,Total,day,_f2048,file_name,a3b06 都是合法的標(biāo)識符,而 99new,a-b,W.S.Piter,$88,cd#ab,@vbase,int 都是不合法標(biāo)識符。標(biāo)識符
和其它高級語言一樣,用來標(biāo)識函數(shù)名、變量名、符59關(guān)鍵字 由系統(tǒng)預(yù)先定義的標(biāo)識符稱“關(guān)鍵字”,它們都有特殊的含意,不能用于其它目的。C語言關(guān)鍵字32個,如表2-1所示。關(guān)鍵字 由系統(tǒng)預(yù)先定義的標(biāo)識符稱“關(guān)鍵字”,它們都有特殊的含602.2數(shù)據(jù)類型及常量、變量
學(xué)一學(xué)數(shù)據(jù)類型常量變量2.2數(shù)據(jù)類型及常量、變量學(xué)一學(xué)61數(shù)據(jù)類型
數(shù)據(jù)類型62常量常量是在程序的執(zhí)行過程中其值不變的量。在C語言中,常量不需要類型說明就可以直接使用,常量的類型是由常量本身隱含決定的。在C語言中,從其表現(xiàn)形式常量分為普通常量和符號常量。普通常量就是用數(shù)字直接表示的常量,符號常量是用一個標(biāo)識符來代表的常量。無論是普通常量,還是符號常量,它們都有自己的類型。
常量63普通常量與符號常量 1.普通常量 普通常量有3類:數(shù)值常量、字符型常量和字符串常量。例如, 1,200,3500,0x12——整型數(shù)值常量 835.6,77.2,0.618——實型數(shù)值常量 ‘a(chǎn)’,‘A’,‘$’——字符型常量 “Hello”,“Welcome”——字符串常量 2.符號常量 在C語言程序中,可對常量進行命名,即用符號代替常量,叫做符號常量,一般用大寫字母表示,一經(jīng)定義就可以代替常量使用。普通常量與符號常量 1.普通常量64變量 變量是指在程序執(zhí)行過程中,其值可以改變的量。一個變量用一個名字表示,在內(nèi)存中占據(jù)一定的存儲單元,用于存放變量的值。變量必須先定義后使用,變量的值可以通過賦值的方法獲得和改變。變量 變量是指在程序執(zhí)行過程中,其值可以改變的量。65變量定義和初始化 [存儲類型]數(shù)據(jù)類型變量名1[=初始數(shù)據(jù)],變量名2[=初始數(shù)據(jù)2],…,變量n[=初始數(shù)據(jù)n];變量定義和初始化66試一試 問題2.1新生入學(xué)需要保存學(xué)生數(shù)據(jù),現(xiàn)在定義整型變量存放年齡、學(xué)號,定義字符變量存放性別,定義浮點型變量存放入學(xué)分?jǐn)?shù)和班費。 intiAge=20,iNum=201; charcSex=’m’;/*f:female(女),m:male(男)*/ floatfScore,fSum; fScore=580.5; fMoney=78.5試一試 問題2.1新生入學(xué)需要保存學(xué)生數(shù)據(jù),現(xiàn)在定義整型變量67想一想
生活、學(xué)習(xí)、工作中有哪些量是其值不變的常量?哪些信息是經(jīng)常變化的?定義成什么類型的變量比較合適?想一想682.3數(shù)據(jù)的輸出和輸入數(shù)據(jù)的格式化輸出數(shù)據(jù)的格式化輸入單個字符的輸出和輸入2.3數(shù)據(jù)的輸出和輸入69數(shù)據(jù)的格式化輸出學(xué)一學(xué)格式化輸出函數(shù)printf的功能是按指定的格式向終端(或系統(tǒng)默認(rèn)的輸出設(shè)備)輸出若干個任意類型的數(shù)據(jù)。printf函數(shù)的一般形式為:printf(格式控制,[輸出表列]);其中,“格式控制”是用雙引號括起來的字符串,也稱“轉(zhuǎn)換控制字符串”。它是由字符“%”、格式字符(如d、f、c等)和普通字符(原樣輸出的)組成?!拜敵霰砹小笔且恍┡c“格式控制”中的格式字符一一對應(yīng)的需要輸出的數(shù)據(jù),可以是變量或表達式。。數(shù)據(jù)的格式化輸出學(xué)一學(xué)70試一試問題2.2新生入學(xué)需要將自己的姓名、年齡、學(xué)號、性別、入學(xué)成績打印出來,請編程實現(xiàn)。【解題步驟】1.定義整型變量iAge,iNum存放年齡、學(xué)號;2.定義字符變量chSex存放性別;3.定義實型變量fScore用來存放入學(xué)成績;4.用printf函數(shù)上面的信息打印出來;試一試問題2.2新生入學(xué)需要將自己的姓名、年齡、學(xué)號71程序代碼#include“stdio.h”voidmain(){intiAge=20,iNum=201; charchSex=’m’;/*f:female(女),m:male(男)*/floatfScore=580.5;printf(“Tony’spersonalinformation\n”);printf(“Name:Tony\n”);printf(“ID:%d\n”,iNum);printf(“Age:%d\nSex:%c\nScore:%d\n”,iAge,chSex,fScore);}程序代碼72
問題2.3轉(zhuǎn)義字符輸出演示請觀察下面程序運行結(jié)果。
#include“stdio.h”voidmain(){charch1,ch2,ch3;ch1=‘n’;ch2=‘e’;ch3=‘\167’;/*8進制數(shù)167代表的字符w*/printf(“%c%c%c\n”,ch1,ch2,ch3);/*以字符格式輸出*/printf(“%c\t%c\t%c\n”,ch1,ch2,ch3);/*每輸出一個字符后跳到下一個輸出區(qū)*/printf(“%c\n%c\n%c\n”,ch1,ch2,ch3);/*每輸出一個字符后換行*/}問題2.3轉(zhuǎn)義字符輸出演示請觀察下面程序運行結(jié)果。73數(shù)據(jù)的格式化輸入格式化輸入函數(shù)scanf的功能是用來從外部設(shè)備(通常是鍵盤),向程序中的變量輸入一個或若干個任意類型的數(shù)據(jù)。scanf函數(shù)的一般形式為:scanf(格式控制,地址表列);其中“格式控制”的含義同printf函數(shù);“地址表列”是由若干個地址組成的表列,可以是變量的地址,或字符串的首地址。數(shù)據(jù)的格式化輸入格式化輸入函數(shù)scanf的功能是用74試一試問題2.4Tony因?qū)W習(xí)努力,成績突出,上半學(xué)年獲獎學(xué)金2500元,下半學(xué)年獲獎學(xué)金3000元。用scanf函數(shù)輸入數(shù)據(jù),計算Tony本學(xué)年所獲得的獎學(xué)金并輸出結(jié)果。【解題步驟】1.定義變量iPrize1、iPrize2和iSum用來存放上半年、下半年和本年度的獎學(xué)金值;2.輸出提示信息;3.從鍵盤輸入上半年和下半年的獎學(xué)金;4.計算本年度獎學(xué)金存入iSum;5.輸出本年度獎學(xué)金iSum中的值。試一試問題2.4Tony因?qū)W習(xí)努力,成績突出,上半學(xué)年獲獎75程序代碼
#include“stdio.h”voidmain(){intiPrize1,iPrize2,iSum;/*定義變量*/printf("pleaseinputtwoprizes:");/*輸出提示信息*/scanf("%d%d",&iPrize1,&iPrize2);/*從鍵盤輸入數(shù)據(jù)*/isum=iPriz1+iPrize2;/*求和計算*/printf("Tom’sprizeis%d",iSum);/*輸出計算結(jié)果*/}?程序代碼76單個字符的輸出和輸入函數(shù)putchar()和getchar()專門用來輸入和輸出字符型數(shù)據(jù),使用時要包含頭文件stdio.h。putchar函數(shù)的功能是用于將一個字符輸出到顯示器上顯示,其一般調(diào)用形式為:putchar(ch);其中,ch為一個字符型數(shù)據(jù)(普通字符或轉(zhuǎn)義字符)或整型數(shù)據(jù)(0~255)。getchar函數(shù)的功能是從標(biāo)準(zhǔn)輸入設(shè)備(鍵盤)讀入一個字符。它的一般調(diào)用形式為:ch=getchar();其中ch為一個字符型變量,把從鍵盤接收到字符放到變量ch中。單個字符的輸出和輸入函數(shù)putchar()和getc77試一試問題2.5從鍵盤輸入一個小寫字母,將其轉(zhuǎn)化為大寫字母輸出。【解題步驟】定義字符變量ch用來存放從鍵盤輸入的數(shù)據(jù)。;輸出提示信息;從鍵盤接收一個小寫字母存入ch;將字符ch轉(zhuǎn)換為大寫字母,即ch-32后仍存入到ch;輸出字符變量ch中的字符;試一試78程序代碼#include“stdio.h”voidmain(){charch;printf(“從鍵盤輸入一個小寫字母”);ch=getchar();/*從鍵盤接收一個小寫字母*/ch=ch-32;/*小寫字母轉(zhuǎn)化為大寫字母*/putchar(ch);/*輸出大寫字母*/}程序代碼#include“stdio.h”79小結(jié)格式化輸出函數(shù)printf中雙引號括起來的內(nèi)容除了%d等格式說明符外,其它字符原樣輸出。同樣格式化輸入函數(shù)scanf中雙引號括起來的內(nèi)容除了%d等格式說明符外,其它字符照原樣輸入。printf函數(shù)中的格式說明符非常豐富,如表2-4所示。使用scanf函數(shù)時要輸入的變量名前要加取地址符號“&”,scanf函數(shù)的格式說明符如表2-5所示小結(jié)格式化輸出函數(shù)printf中雙引號括起來的內(nèi)容除了%d等802.4運算符與表達式算術(shù)運算符與算術(shù)表達式賦值運算符和賦值表達式
逗號運算符和逗號表達式2.4運算符與表達式算術(shù)運算符與算術(shù)表達式81運算符分類C的運算符大致有如下的幾類?;舅阈g(shù)運算符:+-*/%關(guān)系運算符:<>>=<===!=邏輯運算符:!&&||強制類型轉(zhuǎn)換運算符:()自增、自減運算符:++――賦值運算符:=條件運算符:?:逗號運算符:,指針運算符:*&求字節(jié)數(shù)運算符:sizeof位運算符:<<>>~|^&分量運算符:.->下標(biāo)運算符:[]運算符分類C的運算符大致有如下的幾類。82算術(shù)運算符和算術(shù)表達式試一試問題2.6從鍵盤輸入一個3位數(shù),求該數(shù)個位、十位、百位上的數(shù)的和。【解題步驟】定義整型變量iNum接收從鍵盤輸入的三位數(shù);定義整型變量i1,i2,i3,iSum用來存放個位、十位、百位上的數(shù)據(jù)及其和;從鍵盤輸入一個3位數(shù)存入變量iNum中;用iNum%10求得個位上的數(shù)存入i1中,用iNum/10%10求得十位上的數(shù)存入i2中;用iNum/100求得百位上的數(shù)存入i3中;求和輸出和。算術(shù)運算符和算術(shù)表達式試一試83程序代碼#include“stdio.h”voidmain(){intiNum;inti1,i2,i3,iSum;printf(“pleaseinputainteger(100-999):”);scanf(“d%”,&iNum);i1=iNum%10;/*求個位數(shù)*/i2=iNum/10%10;/*求十位數(shù)*/i3=iNum/100;/*求百位數(shù)*/iSum=i1+i2+i3;printf(“d%thesumis:”,iSum);}程序代碼#include“stdio.h”84想一想對于一個四位整數(shù),其千位、百位、十位、個位上的數(shù)如何求得?想一想85強制類型轉(zhuǎn)換運算符學(xué)一學(xué)在實際應(yīng)用中,常常要把一些表達式的類型轉(zhuǎn)換成所需的類型。C語言提供了強制類型轉(zhuǎn)換運算符。其格式為:(類型名)(表達式)強制類型轉(zhuǎn)換運算符學(xué)一學(xué)86試一試問題2.7從鍵盤輸入一個球的半徑值,計算并輸出這個球的體積。球體積計算公式為:v=4/3*∏*r3。其中r是球的半徑,∏是圓周率,v是球的體積?!窘忸}步驟】定義符號常量PAI=3.1415926作為圓周率;定義float型變量fRadius、fVolum用來存放球半徑和球體積;從鍵盤輸入球半徑放變量fRadius;計算球的體積;輸出球體積。試一試問題2.7從鍵盤輸入一個球的半徑值,計算并輸出這個球87程序代碼#include“stdio.h”#definePAI3.1415926voidmain(){floatfRadius,fVolume;printf(“pleasetheball’sradius:”);
scanf(“%f”,&fRadius);fVolume=(float)4/3*PAI*fRadius*fRadius*fRadius;printf(“theball’svolume:%f”,fVolume);}程序代碼#include“stdio.h”88自增、自減運算符學(xué)一學(xué)自增、自減運算符是單目運算符,即對一個運算對象施加運算,運算結(jié)果仍賦予該對象。參加運算的對象必須是變量。如表2-7所示。自增、自減運算符學(xué)一學(xué)89試一試問題2.8運行下面的程序,觀察并分析自增、自減運算符的用法。#include“stdio.h”voidmain(){intiX,iY;iX=2;iY=iX++*4;printf(“iX=%d,iY=%d\n”,iX,iY);iX=2;iY=iX--*4;printf(“iX=%d,iY=%d\n”,iX,iY);iX=2;iY=++iX*4;printf(“iX=%d,iY=%d\n”,iX,iY);iX=2;iY=--iX*4;printf(“iX=%d,iY=%d\n”,iX,iY);}試一試90算術(shù)表達式學(xué)一學(xué)用算術(shù)運算符和括號將運算對象(也稱操作數(shù))連接起來的符合C語法規(guī)則的式子,稱為C算術(shù)表達式。運算對象可以是常量、變量、函數(shù)等。5.算術(shù)運算符的優(yōu)先級和結(jié)合方向C語言規(guī)定了運算符的優(yōu)先級和結(jié)合方向,在表達式求值時,先按運算符的優(yōu)先級別高低次序執(zhí)行,再按運算符的結(jié)合方向結(jié)合(相同優(yōu)先級時)。例如先乘除后加減,如表2-8所算術(shù)表達式學(xué)一學(xué)91算術(shù)運算符的優(yōu)先級和結(jié)合方向C語言規(guī)定了運算符的優(yōu)先級和結(jié)合方向,在表達式求值時,先按運算符的優(yōu)先級別高低次序執(zhí)行,再按運算符的結(jié)合方向結(jié)合(相同優(yōu)先級時)。例如先乘除后加減,如表2-8所示。算術(shù)運算符的優(yōu)先級和結(jié)合方向C語言規(guī)定了運算符的優(yōu)先級92試一試問題2.9函數(shù)f(x)=3x3+2x2+x+1,編一程序計算并輸出f(3)值。【解題步驟】定義整型變量iX、iY;從鍵盤輸入一個自變量的值;計算函數(shù)值;輸出函數(shù)值;試一試問題2.9函數(shù)f(x)=3x3+2x2+x+1,編93程序代碼#include“stdio.h”voidmain(){intiX,iY;printf(“請輸入自變量值:”);scanf(“%d”,&iX);iY=3*iX*iX*iX+2*iX*iX+iX+1;printf(“函數(shù)值是:%d”,iY);}程序代碼#include“stdio.h”94賦值運算符和賦值表達式學(xué)一學(xué)1.賦值運算符在C語言中,等號“=”被作為是一種運算符來處理,稱為賦值運算符。其一般形式為:<變量名>=<表達式>;它的作用就是將右邊表達式的值賦給左邊的變量2.復(fù)合賦值運算符在賦值運算符的前面加上一個其它運算符后就構(gòu)成復(fù)合的賦值運算符。其一般形式為:<變量><雙目運算符>=<表達式>;等價于:<變量>=<變量><雙目運算符><表達式>;3.賦值表達式由賦值運算符將一個變量和一個表達式連接起來的式子稱為賦值表達式,它的一般形式為:<變量><賦值運算符><表達式>賦值運算符和賦值表達式學(xué)一學(xué)95試一試問題2.10賦值運算符和賦值表達式用法演示,運行程序并觀察運行結(jié)果。#include“stdio.h”voidmain(){intiA,iB,iC,iX,iY;iA=2;iY=iX=2*iA+6;printf("\niA=%d",iA);/*輸出賦值表達式iA的值*/printf("\niX=2*iA+6is%d",iX=2*iA+6);/*輸出賦值表達式iX=2*iA+6的值*/printf("\niY=%d",iY);/*輸出變量iY的值*/iC=iB=iA=4;/*表達式iB=iA=4賦給iC*/printf("\niB=iA=4is%d",iB=iA=4);/*輸出表達式iB=iA=4的值*/printf("\niA=%d,iB=%d,iC=%d",iA,iB,iC);/*輸出變量iA,iB,iC的值*/}試一試問題2.10賦值運算符和賦值表達式用法演示,運行程序96逗號運算符和逗號表達式學(xué)一學(xué)逗號運算符“,”作為C語言的一種特殊的運算符,也稱為順序求值運算符,它的作用是把多個表達式連接起來,用逗號運算符連接起來的式子稱為逗號表達式,其一般形式為:表達式1,表達式2,...,表達式n表達式的求解過程按照從左到右的順序逐個求解表達式1,表達式2,...,表達式n,而整個逗號表達式的值是最后一個表達式(表達式n)的值。逗號運算符和逗號表達式學(xué)一學(xué)97試一試問題2.11逗號運算符和逗號表達式用法演示,運行程序并觀察運行結(jié)果?!境绦虼a】#include“stdio.h”voidmain(){intiA=2,iB=3;intiX,iY;floatfC;iX=(iA*2+1,iY=iB+2,iA*iY);fC=(iA+5,2.0*iX);printf("iX=%d,iY=%d\n"
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單位租車協(xié)議書模板15篇
- 協(xié)議合同酒店
- 以創(chuàng)新管理模式推動發(fā)展在企業(yè)管理經(jīng)驗交流會上的發(fā)言
- 酒后頭痛病因介紹
- 山東省濟寧市微山縣第二中學(xué)2024-2025學(xué)年高一12月月考歷史試題
- (范文)發(fā)酵罐項目立項報告
- 房屋與室內(nèi)環(huán)境檢測技術(shù)-模塊三房屋實體查驗與檢18課件講解
- 2024秋新滬科版物理八年級上冊課件 第六章 熟悉而陌生的力 第4節(jié) 探究:滑動摩擦力大小與哪里因素有關(guān)
- 《2024產(chǎn)業(yè)互聯(lián)網(wǎng)發(fā)展報告》教學(xué)應(yīng)用說明
- 電力及電機拖動試題及參考答案
- 心臟瓣膜病學(xué)習(xí)課件
- 康復(fù)科學(xué)科建設(shè)規(guī)劃
- 《薪酬福利管理制度》課件
- 儲能技術(shù) 習(xí)題答案匯總 (梅生偉)第1-9章
- 《李憑箜篌引》 統(tǒng)編版高中語文選擇性必修中冊
- 物業(yè)服務(wù)前置方案
- 智慧樹知到《艾滋病性與健康》見面課答案
- 新能源汽車技術(shù)職業(yè)生涯人物訪談報告
- 市政工程安全文明施工措施費提取和使用計劃
- 15D501 建筑物防雷設(shè)施安裝
- 表C.1.1 工程概況表(例)
評論
0/150
提交評論