第2章 順序結(jié)構(gòu)程序設(shè)計(jì)_第1頁(yè)
第2章 順序結(jié)構(gòu)程序設(shè)計(jì)_第2頁(yè)
第2章 順序結(jié)構(gòu)程序設(shè)計(jì)_第3頁(yè)
第2章 順序結(jié)構(gòu)程序設(shè)計(jì)_第4頁(yè)
第2章 順序結(jié)構(gòu)程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩96頁(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)介

第2章順序結(jié)構(gòu)程序設(shè)計(jì)2.1引例2.2數(shù)據(jù)的表現(xiàn)形式2.3基本運(yùn)算2.4常用數(shù)學(xué)庫(kù)函數(shù)2.5數(shù)據(jù)輸入輸出2.1引例【例2.1】編寫程序,輸入一個(gè)學(xué)生的數(shù)學(xué)、英語(yǔ)、計(jì)算機(jī)成績(jī),計(jì)算這位學(xué)生的總分和平均分,并輸出。(注:科目成績(jī)和總分都是整數(shù),平均分可以保留1位小數(shù)。)【問(wèn)題分析】這個(gè)問(wèn)題的算法很簡(jiǎn)單,先輸入科目成績(jī),再將3個(gè)成績(jī)加起來(lái)求總分,再用總分除以3求平均分;最后輸出結(jié)果。這是一個(gè)簡(jiǎn)單的順序結(jié)構(gòu)。

2.1引例【例2.1】編寫程序,輸入一個(gè)學(xué)生的數(shù)學(xué)、英語(yǔ)、計(jì)算機(jī)成績(jī),計(jì)算這位學(xué)生的總分和平均分,并輸出。(注:科目成績(jī)和總分都是整數(shù),平均分可以保留1位小數(shù)。)輸入3門成績(jī)計(jì)算總分計(jì)算平均分輸出總分、平均分圖2-1算法流程圖#include<stdio.h> intmain(void) { intMaScore,EnScore,CScore,sum;

floataver; printf("InputMathscore,Englishscore,Computerscore:\n");

scanf("%d%d%d",&MaScore,&EnScore,&CScore);

sum=MaScore+EnScore+CScore;

aver=sum/3.0;

printf("Thesumis%d\nTheaverageis%.1f\n",sum,aver);

return0; }2.2數(shù)據(jù)的表現(xiàn)形式2.2.1標(biāo)識(shí)符2.2.2數(shù)據(jù)類型2.2.3不同類型的常量2.2.4不同類型的變量2.2.5符號(hào)常量和常變量標(biāo)識(shí)符標(biāo)識(shí)符是一個(gè)字符序列,用來(lái)標(biāo)識(shí)操作、變量、函數(shù)、數(shù)據(jù)類型等。標(biāo)識(shí)符命名的規(guī)則如下: (1)標(biāo)識(shí)符由英文字母(包括大小寫字母)、數(shù)字(0~9)和下劃線(_)組成,并且必須由字母或下劃線開(kāi)頭。 (2)標(biāo)識(shí)符中的字符個(gè)數(shù)不能超過(guò)規(guī)定長(zhǎng)度(因系統(tǒng)而不同,C89規(guī)定不超過(guò)31個(gè)字符,C99規(guī)定不超過(guò)63個(gè)字符)。 (3)C語(yǔ)言中的標(biāo)識(shí)符嚴(yán)格區(qū)分大小寫,即int和Int、INT表示不同的標(biāo)識(shí)符。標(biāo)識(shí)符標(biāo)識(shí)符包括三類:關(guān)鍵字、預(yù)定義標(biāo)識(shí)符、用戶自定義的標(biāo)識(shí)符。類型名int、float屬于C語(yǔ)言關(guān)鍵字,表示兩種不同的數(shù)據(jù)類型,int表示整數(shù)類型,float表示單精度浮點(diǎn)類型;而變量名MaScore、EnScore、CScore、sum、aver屬于用戶自定義的標(biāo)識(shí)符;庫(kù)函數(shù)名printf屬于預(yù)定義標(biāo)識(shí)符。數(shù)據(jù)類型C語(yǔ)言允許使用的數(shù)據(jù)類型:基本類型整型類型基本整型短整型長(zhǎng)整型雙長(zhǎng)整型字符型布爾型浮點(diǎn)類型單精度浮點(diǎn)型雙精度浮點(diǎn)型復(fù)數(shù)浮點(diǎn)型數(shù)據(jù)類型C語(yǔ)言允許使用的數(shù)據(jù)類型:基本類型枚舉類型空類型派生類型指針類型數(shù)組類型結(jié)構(gòu)體類型共用體類型函數(shù)類型算術(shù)類型純量類型【例2.2】下面這個(gè)程序用于計(jì)算并顯示每種數(shù)據(jù)類型所占內(nèi)存空間的大小。#include<stdio.h>intmain(void){ printf("Datatype Numberofbytes\n"); printf("---------------------------------------\n"); printf("char %d\n",sizeof(char)); printf("int %d\n",sizeof(int)); printf("shortint %d\n",sizeof(short)); printf("longint %d\n",sizeof(long)); printf("float %d\n",sizeof(float)); printf("double %d\n",sizeof(double)); return0;}這個(gè)程序在TurboC2.0編譯環(huán)境下的運(yùn)行結(jié)果如下:而在VisualC++6.0編譯環(huán)境下的運(yùn)行結(jié)果如下:不同類型的常量

常量,就是在程序中不能改變其值的量整型常量 整型常量包括正整數(shù)、負(fù)整數(shù)和零在內(nèi)的所有整數(shù)不同類型的常量

常量,就是在程序中不能改變其值的量2.浮點(diǎn)類型常量 浮點(diǎn)類型,也稱為實(shí)型,是帶小數(shù)點(diǎn)的十進(jìn)制數(shù)據(jù),它可以是包含一個(gè)小數(shù)點(diǎn)的數(shù)字、0或任何正數(shù)和負(fù)數(shù)。不同類型的常量

常量,就是在程序中不能改變其值的量3.字符類型常量

(1)普通字符 如’A’,’?’ (2)轉(zhuǎn)義字符 如’\n’,‘\101‘,’\x41’不同類型的常量字符常量不是任意寫一個(gè)字符,程序都能識(shí)別的。例如圓周率π在程序中就是不能識(shí)別的,我們只能使用系統(tǒng)的字符集(一般采用ASCII字符集)中的字符。ASCII字符集的基本集包括了127個(gè)字符。其中包括:字母:大寫英文字母A~Z,小寫英文字母a~z。數(shù)字:0~9。專門字符:29個(gè)空格符:空格、水平制表符(tab)、垂直制表符、換行、換頁(yè)(formfeed)。不能顯示的字符:空(null)字符(以‘\0’表示)、警告(以‘\a’表示)、退格(以‘\b’表示)、回車(以‘\r’表示)等。詳見(jiàn)附錄B(ASCII字符表)

不同類型的常量字符常量存儲(chǔ)在計(jì)算機(jī)存儲(chǔ)單元中時(shí),是以整數(shù)形式(字符的ASCII代碼)存放在內(nèi)存單元中的。例如:大寫字母‘A’的ASCII代碼:十進(jìn)制形式為65二進(jìn)制形式為1000001小寫字母‘a(chǎn)’的ASCII代碼:十進(jìn)制形式為97二進(jìn)制形式為1100001不同類型的常量特別注意:字符‘1’和整數(shù)1是不同的概念,字符‘1’只是代表一個(gè)形狀為‘1’的符號(hào),在內(nèi)存中以ASCII代碼形式存儲(chǔ),占1個(gè)字節(jié)。整數(shù)1是以整數(shù)存儲(chǔ)方式(二進(jìn)制補(bǔ)碼方式)存儲(chǔ)的,占2個(gè)或4個(gè)字節(jié)。不同類型的常量

常量,就是在程序中不能改變其值的量4.字符串常量 字符串常量是由雙撇號(hào)括起來(lái)的全部字符(不包括雙撇號(hào)本身)

如”boy”注意:?jiǎn)纹蔡?hào)內(nèi)只能包含一個(gè)字符,雙撇號(hào)內(nèi)可以包含任意多個(gè)字符。不同類型的變量

變量代表一個(gè)有名字的、具有特定屬性的一個(gè)存儲(chǔ)單元。它用來(lái)存放數(shù)據(jù),也就是存放變量的值,其值在程序執(zhí)行過(guò)程中是可以改變的。變量在使用之前必須先聲明后使用,變量聲明的一般形式為:數(shù)據(jù)類型變量名;

不同類型的變量

1.整數(shù)類型變量【例2.3】下面程序聲明了一個(gè)整型變量a,然后為其賦值為整型常量4。#include<stdio.h> intmain(void) { inta; /*聲明int類型變量a*/ a=4; /*為a變量賦值*/ printf("%d\n",a);/*將a的值在%d處替換顯示*/ return0; }不同類型的變量

2.浮點(diǎn)類型變量【例2.4a】下面程序聲明了一個(gè)float類型的變量a和一個(gè)double類型的變量b,然后都賦值為浮點(diǎn)型常量5.6。#include<stdio.h>intmain(void){ floata; /*聲明float類型變量a*/ doubleb; /*聲明double類型變量b*/ a=5.6; /*為a變量賦值*/ b=5.6; /*為b變量賦值*/ printf("%f\n%f\n",a,b);/*將a和b的值依次在%f處替換顯示*/ return0;}我們注意到,程序編譯時(shí),會(huì)出現(xiàn)如下警告信息:

warningC4305:'=':truncationfrom'constdouble'to'float'

這是因?yàn)閂C編譯系統(tǒng)把所有的實(shí)數(shù)都作為雙精度數(shù)處理,即系統(tǒng)將浮點(diǎn)型常量5.6是當(dāng)做雙精度浮點(diǎn)類型即double類型的數(shù)據(jù)的,而變量a是單精度浮點(diǎn)類型即float類型變量。因此提醒用戶:將double型常量賦值給float型變量可能會(huì)造成精度損失。對(duì)于本例來(lái)說(shuō),5.6賦值給float型變量a,并沒(méi)有造成精度損失。這個(gè)警告不會(huì)影響程序運(yùn)行的結(jié)果?!纠?.4b】下面程序?qū)loat類型的變量a和double類型的變量b都賦值為浮點(diǎn)型常量.1。#include<stdio.h>intmain(void){ floata; /*聲明float類型變量a*/ doubleb; /*聲明double類型變量b*/ a=.1; /*為a變量賦值*/ b=.1; /*為b變量賦值*/ printf("%f\n%f\n",a,b);/*將a和b的值依次在%f處替換顯示*/ return0;}【運(yùn)行結(jié)果】 .000000 .100006為什么將同一個(gè)實(shí)型常量賦值給單精度實(shí)型(float型)變量和雙精度實(shí)型(double型)變量后,輸出的結(jié)果會(huì)有所不同呢?這是因?yàn)閒loat型變量和double型變量所接受的實(shí)型常量的有效數(shù)字位數(shù)是不同的。一般而言,double型數(shù)據(jù)可以接受實(shí)型常量的15-16位有效數(shù)字,而float型變量?jī)H能接受實(shí)型常量的6-7位有效數(shù)字,在有效數(shù)字后面輸出的數(shù)字都是不準(zhǔn)確的。不同類型的變量

3.字符類型變量【例2.5】下面程序聲明了一個(gè)字符型變量c,然后為其賦值為字符常量'a'。#include<stdio.h>intmain(void){ charc; /*聲明char類型變量c*/ c='a'; /*為c變量賦值*/ printf("%c\n",c);/*將c的值在%c處替換顯示*/ return0;}不同類型的變量

3.字符類型變量printf(“%c\n”,c);/*用%c格式輸出變量c的字符形式*/printf(“%d\n”,c);/*用%d格式輸出變量c的整數(shù)形式*/輸出結(jié)果為:

a 97不同類型的變量

3.字符類型變量也可以在一行同時(shí)輸出變量c的不同形式,如:printf(“%c,%d\n”,c,c);輸出結(jié)果為:

a,97不同類型的變量

4.聲明變量時(shí)的注意點(diǎn) ①當(dāng)變量類型相同時(shí),我們可以在一行同時(shí)聲明多個(gè)變量:

doublea,b; /*變量之間用逗號(hào)分隔*/ ②不同類型的變量分別定義:

inta;doubleb; /*正確,不同類型變量聲明之間用分號(hào)隔開(kāi)*/

不同類型的變量

4.聲明變量時(shí)的注意點(diǎn) ③不同類型的變量不能同時(shí)聲明,以下聲明是錯(cuò)誤的

inta,doubleb; /*錯(cuò)誤*/ ④同一個(gè)變量只能定義一次,以下聲明是錯(cuò)誤的:

inta; doublea,b; /*錯(cuò)誤,a重復(fù)定義*/不同類型的變量

變量的初始化 聲明一個(gè)變量后,第一次為該變量指定值稱為變量的初始化,如果沒(méi)給變量初始化,那么它的值是不確定的。 ①先聲明變量,再使用賦值語(yǔ)句給變量賦初值。 例如:

inta,b; a=3; b=2;不同類型的變量

變量的初始化 ②在聲明變量的同時(shí)指定初值。例如:

inta=3,b=2; intc=4; ③用從外部讀入數(shù)據(jù)存入指定的變量中。例如:

inta; scanf("%d",&a);

符號(hào)常量和常變量

【例2.6a】編程從鍵盤輸入圓的半徑,計(jì)算并輸出求圓的周長(zhǎng)和面積。 #include<stdio.h>intmain(void){ doubler,circum,area; printf("Inputr:"); scanf("%lf",&r); circum=2*3.14*r; area=3.14*r*r; printf("circumference=%f\n",circum); printf("area=%f\n",area); return0;}符號(hào)常量和常變量

#include<stdio.h>#definePI3.14intmain(void){ doubler,circum,area; printf("Inputr:"); scanf("%lf",&r); circum=2*PI*r; area=PI*r*r; printf("circumference=%f\n",circum); printf("area=%f\n",area); return0;}符號(hào)常量符號(hào)常量和常變量

#include<stdio.h>intmain(void){

constdoublePI=3.14; doubler,circum,area; printf("Inputr:"); scanf("%lf",&r); circum=2*PI*r; area=PI*r*r; printf("circumference=%f\n",circum); printf("area=%f\n",area); return0;}常變量2.3基本運(yùn)算

2.3.1算術(shù)運(yùn)算符和表達(dá)式2.3.2賦值運(yùn)算2.3.3自動(dòng)類型轉(zhuǎn)換與強(qiáng)制類型轉(zhuǎn)換2.3.4C語(yǔ)言的其它運(yùn)算運(yùn)算符和表達(dá)式1.基本的算術(shù)運(yùn)算符:+:正號(hào)運(yùn)算符(單目運(yùn)算符)-:負(fù)號(hào)運(yùn)算符(單目運(yùn)算符)*:乘法運(yùn)算符/:除法運(yùn)算符%:求余運(yùn)算符+:加法運(yùn)算符-:減法運(yùn)算符運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式例如,在下面的語(yǔ)句中

a=-5*3+1-4等價(jià)于:

a=(-5)*3+1-4而不等價(jià)于

a=-(5*3+1-4)運(yùn)算符和表達(dá)式說(shuō)明:兩個(gè)整數(shù)相除的結(jié)果為整數(shù)如5/3的結(jié)果值為1,舍去小數(shù)部分%運(yùn)算符要求參加運(yùn)算的運(yùn)算對(duì)象(即操作數(shù))為整數(shù),結(jié)果也是整數(shù)。如8%3,結(jié)果為2運(yùn)算符和表達(dá)式運(yùn)算結(jié)果

5/225.0/22.59.3/3.13.0

運(yùn)算結(jié)果

7%317.0%3系統(tǒng)報(bào)錯(cuò)【例2.7】計(jì)算并輸出一個(gè)三位整數(shù)的個(gè)位、十位和百位數(shù)字之和?!締?wèn)題分析】要計(jì)算一個(gè)三位整數(shù)的個(gè)位、十位和百位數(shù)字值,首先必須從一個(gè)三位整數(shù)中分離出它的個(gè)位、十位和百位數(shù)字,我們可以巧妙利用整數(shù)除法和求余運(yùn)算符解決這個(gè)問(wèn)題。例如: 整數(shù)357的個(gè)位數(shù)字是7,它剛好是357對(duì)10求余的余數(shù),即357%10=7

整數(shù)357的百位數(shù)字是3,它剛好是357整除100的結(jié)果,即357/100=3

而中間的十位數(shù)字5可以通過(guò)兩種方法得到: (357-3*100)/10=57/10=5或(357/10)%10=35%10=5 #include<stdio.h>intmain(void){ intn,a,b,c,sum; n=357; a=n/100; /*計(jì)算百位數(shù)字*/ b=(n-a*100)/10; /*計(jì)算十位數(shù)字*/ c=n%10; /*計(jì)算個(gè)位數(shù)字*/ sum=a+b+c; printf("n=%d,sum=%d\n",n,sum);

return0;}運(yùn)算符和表達(dá)式2.自增、自減運(yùn)算符:作用是使變量的值增1或減1++i,--i:在使用i之前,先使i的值加(減)1i++,i--:在使用i之后,使i的值加(減)1inti=3,j;j=++i;printf("%d,%d\n",i,j);輸出的是4,4運(yùn)算符和表達(dá)式2.自增、自減運(yùn)算符:作用是使變量的值增1或減1++i,--i:在使用i之前,先使i的值加(減)1i++,i--:在使用i之后,使i的值加(減)1inti=3,j;j=i++;printf("%d,%d\n",i,j);輸出的是4,3運(yùn)算符和表達(dá)式2.自增、自減運(yùn)算符:m=-n++;該語(yǔ)句等價(jià)于

m=-(n++);而不等價(jià)于

m=(-n)++;這是一個(gè)不合法的操作,因?yàn)椴荒軐?duì)表達(dá)式進(jìn)行自增操作。賦值運(yùn)算符和表達(dá)式由賦值運(yùn)算符“=”和操作數(shù)組成的合法表達(dá)式稱為賦值表達(dá)式。例如 a=3是一個(gè)賦值表達(dá)式,而一個(gè)賦值表達(dá)式加一個(gè)分號(hào)稱為賦值語(yǔ)句,那么 a=3;就稱為一條賦值語(yǔ)句。 賦值運(yùn)算符和表達(dá)式 賦值運(yùn)算符“=”的左邊必須是一個(gè)變量。判斷以下的表達(dá)式是否正確: x=x+3 a+b=8 3=x–4 y=c+5

賦值表達(dá)式的值與類型賦值表達(dá)式也有值和類型賦值表達(dá)式的值就是“=”左側(cè)變量的值,其類型與變量的類型一致。例:a=b=5+(c=d=10)復(fù)合賦值運(yùn)算復(fù)合賦值運(yùn)算符是在賦值運(yùn)算符“=”前面加上另一個(gè)運(yùn)算符構(gòu)成的。 例:a+=b 中的“+=”就是復(fù)合賦值運(yùn)算符 等同于a=a+b復(fù)合賦值運(yùn)算復(fù)合賦值運(yùn)算復(fù)合賦值運(yùn)算符的優(yōu)先級(jí)很低,結(jié)合方向?yàn)閺挠蚁蜃?。假如定義變量: inta=4,b=5,c=6; 執(zhí)行下列語(yǔ)句后,變量a的值為多少?

a*=b-=c+3;自動(dòng)類型轉(zhuǎn)換與強(qiáng)制類型轉(zhuǎn)換

表達(dá)式中的自動(dòng)類型轉(zhuǎn)換 假設(shè)已定義變量inti=3;floatf=4.5;doubled=6.9;分析以下表達(dá)式的結(jié)果類型: ‘a(chǎn)’+10+i*f-d/3圖2-7自動(dòng)類型轉(zhuǎn)換規(guī)則自動(dòng)類型轉(zhuǎn)換與強(qiáng)制類型轉(zhuǎn)換

2.賦值運(yùn)算中的自動(dòng)類型轉(zhuǎn)換(1)將浮點(diǎn)型(float、double)數(shù)據(jù)賦給整型變量,將浮點(diǎn)型數(shù)據(jù)轉(zhuǎn)換成整型,去掉其小數(shù)部分,再賦予整型變量。如:

intx;x=4.6;自動(dòng)類型轉(zhuǎn)換與強(qiáng)制類型轉(zhuǎn)換

2.賦值運(yùn)算中的自動(dòng)類型轉(zhuǎn)換(2)將整型數(shù)據(jù)賦值給浮點(diǎn)型(float、double)變量,保持整型數(shù)據(jù)數(shù)值不變,轉(zhuǎn)換成浮點(diǎn)型(float、double)數(shù)據(jù),再賦值給整型變量。如:

floatf;f=100;自動(dòng)類型轉(zhuǎn)換與強(qiáng)制類型轉(zhuǎn)換

2.賦值運(yùn)算中的自動(dòng)類型轉(zhuǎn)換(3)將float類型數(shù)據(jù)賦值給double類型變量,保持float類型數(shù)據(jù)數(shù)值不變,將其轉(zhuǎn)換成double類型,即擴(kuò)展至8個(gè)字節(jié)存儲(chǔ)空間,有效位數(shù)擴(kuò)展到15位,再賦值給double類型變量。

自動(dòng)類型轉(zhuǎn)換與強(qiáng)制類型轉(zhuǎn)換

2.賦值運(yùn)算中的自動(dòng)類型轉(zhuǎn)換(4)將double類型數(shù)據(jù)賦值給float類型變量,將double類型轉(zhuǎn)換為float類型,即只取6~7位有效數(shù)字,存儲(chǔ)到float類型變量的4個(gè)字節(jié)中。應(yīng)注意double類型數(shù)值大小不能超出float類型變量的數(shù)值范圍,如:doubled=1.100000000004e100;floatf;/*定義float類型變量f*/f=d;/*將d的值賦給變量f,錯(cuò)誤*/自動(dòng)類型轉(zhuǎn)換與強(qiáng)制類型轉(zhuǎn)換

2.賦值運(yùn)算中的自動(dòng)類型轉(zhuǎn)換(5)將字符型數(shù)據(jù)(char)賦給整型變量,將字符的ASCII碼賦給整型變量,如:

inti;/*定義整型變量i*/i=‘a(chǎn)’;/*將’a’的ASCII碼97賦給i,i值為97*/自動(dòng)類型轉(zhuǎn)換與強(qiáng)制類型轉(zhuǎn)換

2.賦值運(yùn)算中的自動(dòng)類型轉(zhuǎn)換(6)將較短的整型數(shù)據(jù)(包括字符型)賦給較長(zhǎng)的整型變量,如將shortint型數(shù)值賦給longint型,擴(kuò)展較短整型數(shù)的表示位數(shù)再賦值

自動(dòng)類型轉(zhuǎn)換與強(qiáng)制類型轉(zhuǎn)換

2.賦值運(yùn)算中的自動(dòng)類型轉(zhuǎn)換(7)將較長(zhǎng)整型數(shù)據(jù)賦值給較短整型變量或字符變量,如將int型數(shù)據(jù)賦值給char型變量,發(fā)生截?cái)嗖僮?,只保留其低字?jié),舍棄高位部分。

自動(dòng)類型轉(zhuǎn)換與強(qiáng)制類型轉(zhuǎn)換

3.強(qiáng)制類型轉(zhuǎn)換形式如下:(數(shù)據(jù)類型)表達(dá)式inti=1,j=5;doublef=4.5;f=(double)i/j;i=(int)4.3%(int)f+3;

C語(yǔ)言的其它運(yùn)算

(1)算術(shù)運(yùn)算符+-*/%+(正號(hào))-(負(fù)號(hào))(2)自增自減運(yùn)算符++--(3)關(guān)系運(yùn)算符><==>=<=!=(4)邏輯運(yùn)算符!&&||(5)賦值運(yùn)算符=+=-=*=/=%=以及其它擴(kuò)展復(fù)合賦值運(yùn)算(6)位運(yùn)算符<<>>~|∧&(7)條件運(yùn)算符?:(8)逗號(hào)運(yùn)算符,(9)指針運(yùn)算符*&(10)求字節(jié)數(shù)運(yùn)算符sizeof()(11)成員運(yùn)算符.->(12)下標(biāo)運(yùn)算符[]2.4常用數(shù)學(xué)庫(kù)函數(shù)2.4常用數(shù)學(xué)庫(kù)函數(shù)【例2.8】已知直角三角形的兩直角邊長(zhǎng)a和b,計(jì)算斜邊長(zhǎng)度的公式為:

c=【問(wèn)題分析】將計(jì)算斜邊的數(shù)學(xué)公式寫成如下合法的C語(yǔ)言表達(dá)式:

c=sqrt(pow(a,2)+pow(b,2))見(jiàn)附錄E2.4常用數(shù)學(xué)庫(kù)函數(shù)【例2.8】已知直角三角形的兩直角邊長(zhǎng)a和b,計(jì)算斜邊長(zhǎng)度的公式為:

c=【解題步驟】輸入兩個(gè)直角邊長(zhǎng)a和b;利用公式計(jì)算斜邊長(zhǎng)度c; c=sqrt(pow(a,2)+pow(b,2))3.輸出三邊長(zhǎng)a,b,c2.4常用數(shù)學(xué)庫(kù)函數(shù)#include<stdio.h>#include<math.h>/*使用數(shù)學(xué)庫(kù)函數(shù),要包含math.h頭文件*/intmain(void){ doublea,b,c;a=3; b=4; c=sqrt(pow(a,2)+pow(b,2));

printf("a=%f,b=%f,c=%f\n",a,b,c);

return0;}2.5數(shù)據(jù)的輸入輸出2.5.1格式化輸出函數(shù)printf()2.5.2格式化輸入函數(shù)scanf()2.5.3字符數(shù)據(jù)的輸入輸出函數(shù)格式化輸出函數(shù)printf()函數(shù)printf()的一般形式printf(格式控制字符串,輸出值參數(shù)列表)例如:printf(“a=%d,b=%f\n”,a,b)格式化輸出函數(shù)printf()【例2.9】在屏幕輸出如下一行歡迎信息。

Welcome!【程序代碼】#include<stdio.h>intmain(void){printf(“Welcome!\n”);return0;}格式化輸出函數(shù)printf()【例2.10】輸出不同類型的數(shù)據(jù)?!境绦虼a】#include<stdio.h>intmain(void){ inta=4; floatb=5.2; charc='M'; printf("a=%d,b=%f,c=%c\n",a,b,c);return0;}格式化輸出函數(shù)printf()2.格式聲明格式聲明的形式為:

%附加字符格式字符格式化輸出函數(shù)printf()(1)d格式字符【例2.11】用%d格式符輸出帶符號(hào)十進(jìn)制整數(shù)。#include<stdio.h>intmain(void){ inta=123,b=-456; charc='M'; printf("%d,%d,%d.\n",a,b,c);

printf("%5d,%5d,%5d.\n",a,b,c); printf("%-5d,%-5d,%-5d.\n",a,b,c); printf("%5d,%5d,%5d.\n",123,-456,'M');

return0;}格式化輸出函數(shù)printf()(2)c格式字符【例2.12】用%c格式符輸出字符。#include<stdio.h>intmain(void){ charc='M'; inta=77; intb=333; printf("%c,%c,%c.\n",c,a,b);

printf("%5c,%5c,%5c.\n",c,a,b);

return0;}格式化輸出函數(shù)printf()(3)f格式字符【例2.13】用%f格式符以小數(shù)形式輸出浮點(diǎn)數(shù)。#include<stdio.h>intmain(void){ floata=5432.16; floatb=2.123456789; doubled=2.123456789; printf("%f,%f,%f.\n",a,b,d);

printf("%6.4f,%20.15f,%20.15f.\n",a,b,d); printf("%-6.4f,%-20.15f,%-20.15f.\n",a,b,d);

return0;}格式化輸出函數(shù)printf()

(4)e格式字符【例2.14】用%e格式符以指數(shù)形式輸出浮點(diǎn)數(shù)#include<stdio.h>intmain(void){ doubled=123.765; printf("%e\n",d); printf("%15.2e\n",d); return0;}格式化輸入函數(shù)scanf()

1.函數(shù)scanf()的一般形式

scanf(格式控制字符串,地址列表)格式化輸入函數(shù)scanf()

【例2.15】輸入不同類型的數(shù)據(jù)。#include<stdio.h>intmain(void){ inta;floatf; charc; doubled; scanf("%d%f%c%lf",&a,&f,&c,&d);

printf("a=%d,f=%f,c=%c,d=%f.\n",a,f,c,d);

return0;}格式化輸入函數(shù)scanf()

2.格式控制字符串與printf()函一樣,scanf()函數(shù)的格式控制字符串中,格式聲明如下:%附加字符格式字符格式化輸入函數(shù)scanf()

3.用scanf()函數(shù)輸入數(shù)據(jù)應(yīng)注意的問(wèn)題(1)scanf函數(shù)中的“格式控制”后面應(yīng)當(dāng)是變量地址,而不是變量名。(2)如果格式控制字符串中只有格式聲明,輸入的時(shí)候要注意: 輸入數(shù)值時(shí),要在兩個(gè)數(shù)值之間插入空格(或其他分隔符),以使系統(tǒng)能區(qū)分兩個(gè)數(shù)值。 輸入字符時(shí),不要再插入空格(或其他分隔符),因?yàn)榭崭瘢ɑ蚱渌指舴?huì)當(dāng)做輸入的字符存儲(chǔ)到字符變量中。例如:scanf("%d%f%c%lf",&a,&f,&c,&d);若輸入

12.3M4.56(4個(gè)數(shù)據(jù)之間都有一個(gè)空格)就出錯(cuò)了格式化輸入函數(shù)scanf()

3.用scanf()函數(shù)輸入數(shù)據(jù)應(yīng)注意的問(wèn)題(3)格式控制字符串中除了格式字符和附加字符,還可以有一些普通字符。

scanf(“a=%d,f=%f,c=%c,d=%lf”,&a,&f,&c,&d);執(zhí)行時(shí)應(yīng)輸入:

a=1,f=2.3,c=M,d=4.56正確若輸入:

a=1f=2.3c=Md=4.56錯(cuò)誤格式化輸入函數(shù)scanf()

3.用scanf()函數(shù)輸入數(shù)據(jù)應(yīng)注意的問(wèn)題(4)使用指定域?qū)捿斎霐?shù)據(jù)。 如該scanf語(yǔ)句改為:

scanf(“%2d%3f%3lf”,&a,&f,&d);執(zhí)行時(shí)輸入:

123.45.6(按指定域?qū)捿斎霐?shù)據(jù),正確)格式化輸入函數(shù)scanf()

3.用scanf()函數(shù)輸入數(shù)據(jù)應(yīng)注意的問(wèn)題(5)輸入數(shù)值數(shù)據(jù)時(shí),輸入非數(shù)值字符,認(rèn)為該數(shù)據(jù)結(jié)束。如:

scanf(“%d%d”,&a,&b);執(zhí)行時(shí)輸入:

123o則1賦給變量a,23賦給變量b,字符’o’認(rèn)為數(shù)據(jù)結(jié)束。若輸入:

123o格式化輸入函數(shù)scanf()

3.用scanf()函數(shù)輸入數(shù)據(jù)應(yīng)注意的問(wèn)題(6)輸入字符型數(shù)據(jù)時(shí),空格字符和轉(zhuǎn)義字符中的字符都作為有效字符輸入

scanf(“%c%c%c”,&c1,&c2,&c3);

printf(“c1=%c\nc2=%c\nc3=%c\n”,c1,c2,c3);執(zhí)行時(shí)輸入:

abc(字符間沒(méi)有空格,正確)輸出為: c1=a c2=b c3=c若輸入: abc(字符間插入空格,賦值錯(cuò)誤)則輸出為:c1=a c2=□(□表示空格)

c3=b

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

用putchar函數(shù)輸出一個(gè)字符 putchar函數(shù)的作用是向顯示器輸出單個(gè)字符常量或字符變量的值,它的一般形式為: putchar(字符常量或變量)【例2.16】用pu

溫馨提示

  • 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)論