第2章 順序結(jié)構(gòu)程序設(shè)計_第1頁
第2章 順序結(jié)構(gòu)程序設(shè)計_第2頁
第2章 順序結(jié)構(gòu)程序設(shè)計_第3頁
第2章 順序結(jié)構(gòu)程序設(shè)計_第4頁
第2章 順序結(jié)構(gòu)程序設(shè)計_第5頁
已閱讀5頁,還剩96頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

2.1引例【例2.1】編寫程序,輸入一個學(xué)生的數(shù)學(xué)、英語、計算機(jī)成績,計算這位學(xué)生的總分和平均分,并輸出。(注:科目成績和總分都是整數(shù),平均分可以保留1位小數(shù)。)輸入3門成績計算總分計算平均分輸出總分、平均分圖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)識符2.2.2數(shù)據(jù)類型2.2.3不同類型的常量2.2.4不同類型的變量2.2.5符號常量和常變量標(biāo)識符標(biāo)識符是一個字符序列,用來標(biāo)識操作、變量、函數(shù)、數(shù)據(jù)類型等。標(biāo)識符命名的規(guī)則如下: (1)標(biāo)識符由英文字母(包括大小寫字母)、數(shù)字(0~9)和下劃線(_)組成,并且必須由字母或下劃線開頭。 (2)標(biāo)識符中的字符個數(shù)不能超過規(guī)定長度(因系統(tǒng)而不同,C89規(guī)定不超過31個字符,C99規(guī)定不超過63個字符)。 (3)C語言中的標(biāo)識符嚴(yán)格區(qū)分大小寫,即int和Int、INT表示不同的標(biāo)識符。標(biāo)識符標(biāo)識符包括三類:關(guān)鍵字、預(yù)定義標(biāo)識符、用戶自定義的標(biāo)識符。類型名int、float屬于C語言關(guān)鍵字,表示兩種不同的數(shù)據(jù)類型,int表示整數(shù)類型,float表示單精度浮點類型;而變量名MaScore、EnScore、CScore、sum、aver屬于用戶自定義的標(biāo)識符;庫函數(shù)名printf屬于預(yù)定義標(biāo)識符。數(shù)據(jù)類型C語言允許使用的數(shù)據(jù)類型:基本類型整型類型基本整型短整型長整型雙長整型字符型布爾型浮點類型單精度浮點型雙精度浮點型復(fù)數(shù)浮點型數(shù)據(jù)類型C語言允許使用的數(shù)據(jù)類型:基本類型枚舉類型空類型派生類型指針類型數(shù)組類型結(jié)構(gòu)體類型共用體類型函數(shù)類型算術(shù)類型純量類型【例2.2】下面這個程序用于計算并顯示每種數(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;}這個程序在TurboC2.0編譯環(huán)境下的運行結(jié)果如下:而在VisualC++6.0編譯環(huán)境下的運行結(jié)果如下:不同類型的常量

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

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

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

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

不同類型的常量字符常量存儲在計算機(jī)存儲單元中時,是以整數(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’只是代表一個形狀為‘1’的符號,在內(nèi)存中以ASCII代碼形式存儲,占1個字節(jié)。整數(shù)1是以整數(shù)存儲方式(二進(jìn)制補(bǔ)碼方式)存儲的,占2個或4個字節(jié)。不同類型的常量

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

如”boy”注意:單撇號內(nèi)只能包含一個字符,雙撇號內(nèi)可以包含任意多個字符。不同類型的變量

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

不同類型的變量

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

2.浮點類型變量【例2.4a】下面程序聲明了一個float類型的變量a和一個double類型的變量b,然后都賦值為浮點型常量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;}我們注意到,程序編譯時,會出現(xiàn)如下警告信息:

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

這是因為VC編譯系統(tǒng)把所有的實數(shù)都作為雙精度數(shù)處理,即系統(tǒng)將浮點型常量5.6是當(dāng)做雙精度浮點類型即double類型的數(shù)據(jù)的,而變量a是單精度浮點類型即float類型變量。因此提醒用戶:將double型常量賦值給float型變量可能會造成精度損失。對于本例來說,5.6賦值給float型變量a,并沒有造成精度損失。這個警告不會影響程序運行的結(jié)果?!纠?.4b】下面程序?qū)loat類型的變量a和double類型的變量b都賦值為浮點型常量.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;}【運行結(jié)果】 .000000 .100006為什么將同一個實型常量賦值給單精度實型(float型)變量和雙精度實型(double型)變量后,輸出的結(jié)果會有所不同呢?這是因為float型變量和double型變量所接受的實型常量的有效數(shù)字位數(shù)是不同的。一般而言,double型數(shù)據(jù)可以接受實型常量的15-16位有效數(shù)字,而float型變量僅能接受實型常量的6-7位有效數(shù)字,在有效數(shù)字后面輸出的數(shù)字都是不準(zhǔn)確的。不同類型的變量

3.字符類型變量【例2.5】下面程序聲明了一個字符型變量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.字符類型變量也可以在一行同時輸出變量c的不同形式,如:printf(“%c,%d\n”,c,c);輸出結(jié)果為:

a,97不同類型的變量

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

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

inta;doubleb; /*正確,不同類型變量聲明之間用分號隔開*/

不同類型的變量

4.聲明變量時的注意點 ③不同類型的變量不能同時聲明,以下聲明是錯誤的

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

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

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

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

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

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

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

符號常量和常變量

【例2.6a】編程從鍵盤輸入圓的半徑,計算并輸出求圓的周長和面積。 #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;}符號常量和常變量

#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;}符號常量符號常量和常變量

#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基本運算

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

a=-5*3+1-4等價于:

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

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

5/225.0/22.59.3/3.13.0

運算結(jié)果

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

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

而中間的十位數(shù)字5可以通過兩種方法得到: (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; /*計算百位數(shù)字*/ b=(n-a*100)/10; /*計算十位數(shù)字*/ c=n%10; /*計算個位數(shù)字*/ sum=a+b+c; printf("n=%d,sum=%d\n",n,sum);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2.賦值運算中的自動類型轉(zhuǎn)換(7)將較長整型數(shù)據(jù)賦值給較短整型變量或字符變量,如將int型數(shù)據(jù)賦值給char型變量,發(fā)生截斷操作,只保留其低字節(jié),舍棄高位部分。

自動類型轉(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語言的其它運算

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

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

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

c=【解題步驟】輸入兩個直角邊長a和b;利用公式計算斜邊長度c; c=sqrt(pow(a,2)+pow(b,2))3.輸出三邊長a,b,c2.4常用數(shù)學(xué)庫函數(shù)#include<stdio.h>#include<math.h>/*使用數(shù)學(xué)庫函數(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ù)。【程序代碼】#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格式符輸出帶符號十進(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ù)形式輸出浮點數(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ù)形式輸出浮點數(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)注意的問題(1)scanf函數(shù)中的“格式控制”后面應(yīng)當(dāng)是變量地址,而不是變量名。(2)如果格式控制字符串中只有格式聲明,輸入的時候要注意: 輸入數(shù)值時,要在兩個數(shù)值之間插入空格(或其他分隔符),以使系統(tǒng)能區(qū)分兩個數(shù)值。 輸入字符時,不要再插入空格(或其他分隔符),因為空格(或其他分隔符)會當(dāng)做輸入的字符存儲到字符變量中。例如:scanf("%d%f%c%lf",&a,&f,&c,&d);若輸入

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

c3=b

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

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

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論