第4章 最簡單的C程序設(shè)計(jì)-順序程序設(shè)計(jì)_第1頁
第4章 最簡單的C程序設(shè)計(jì)-順序程序設(shè)計(jì)_第2頁
第4章 最簡單的C程序設(shè)計(jì)-順序程序設(shè)計(jì)_第3頁
第4章 最簡單的C程序設(shè)計(jì)-順序程序設(shè)計(jì)_第4頁
第4章 最簡單的C程序設(shè)計(jì)-順序程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩54頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

C語言程序設(shè)計(jì)柯式鎮(zhèn)測井研究中心講義與備忘

wksz@89733317(O)139103808702/4/20231第4章順序結(jié)構(gòu)程序設(shè)計(jì)2/4/202324.0程序結(jié)構(gòu)回顧AB順序結(jié)構(gòu)即按照語句書寫順序執(zhí)行的程序結(jié)構(gòu)。(1)順序結(jié)構(gòu)2/4/20233…k=k2k≠k1…kkk=kkk=k1kA1A2BAk圖3-4多分支選擇結(jié)構(gòu)真(非0)假(0)AB條件圖3-3雙分支選擇結(jié)構(gòu)(2)選擇結(jié)構(gòu)示意圖選擇結(jié)構(gòu)又稱為分支結(jié)構(gòu),是指有條件地選擇要執(zhí)行的程序段。2/4/20234假(0)真(非0)A條件真(0)假(0)A條件(3)循環(huán)結(jié)構(gòu)當(dāng)條件成立時(shí),反復(fù)執(zhí)行程序段A,否則不執(zhí)行。先執(zhí)行程序段A,再判斷條件是否為“真”;若為“真”,再執(zhí)行A,如此反復(fù),直到條件為“假”(0)為止。2/4/202354.1C語句概述C語言編寫的程序由若干條C語句組成。C語句是專門用來向計(jì)算系統(tǒng)發(fā)出的操作指令,它用于完成一定的操作任務(wù)。每條C語句經(jīng)編譯后產(chǎn)生若干條機(jī)器指令。歸納如下:(1)C程序?qū)?shù)據(jù)的處理是通過“語句”的執(zhí)行來實(shí)現(xiàn)的。(2)一條語句完成一項(xiàng)操作(或功能)。(3)一個(gè)為實(shí)現(xiàn)特定目的的程序應(yīng)包含若干條語句。程序舉例:voidmain(void){floata,b,c;a=1.5;scanf(“%f”,&b);c=a+b;printf(“c=%f\n”,c);}2/4/20236表達(dá)式語句(表達(dá)式;)簡單語句函數(shù)調(diào)用語句(函數(shù)名(參數(shù)表);)空語句(;)C語言數(shù)據(jù)操作復(fù)合語句({一條或多條語句})語句條件語句(if語句,switch語句)結(jié)構(gòu)化語句while語句循環(huán)語句do_while語句for語句流程控制語句break語句限定轉(zhuǎn)向語句continue語句非結(jié)構(gòu)化語句return語句非限定轉(zhuǎn)向語句(goto語句)C語句的分類:2/4/202374.1.1簡單語句1.表達(dá)式語句由表達(dá)式組成的語句稱為表達(dá)式語句語句格式:表達(dá)式;分號(hào)(;)是語句結(jié)束的標(biāo)志功能:計(jì)算表達(dá)式或改變變量的值。分類:運(yùn)算符表達(dá)式語句賦值語句2/4/20238運(yùn)算符表達(dá)式語句運(yùn)算符表達(dá)式后跟一個(gè)分號(hào)組成例:5;i++;語句的功能是,變量i的值增1。a=3,b=a+2,c=a+1;/*由三個(gè)賦值語句組成的逗號(hào)表達(dá)式語句。*/

(1)a+b; /*算術(shù)表達(dá)式語句,計(jì)算a與b之和。*/2/4/20239賦值語句賦值表達(dá)式后跟一個(gè)分號(hào)組成(2)例:x=y+z;/*計(jì)算y+z的和并賦值給變量x.。*/

x=2;y=3;2/4/2023102.函數(shù)調(diào)用語句由函數(shù)調(diào)用表達(dá)式后跟一個(gè)分號(hào)組成格式:函數(shù)名(參數(shù)列表);分類:標(biāo)準(zhǔn)庫函數(shù)用戶定義函數(shù)標(biāo)準(zhǔn)庫函數(shù)調(diào)用原則:(1)要在程序中包含相應(yīng)的頭文件(2)調(diào)用的一般形式:函數(shù)名(參數(shù)列表);2/4/202311標(biāo)準(zhǔn)函數(shù)調(diào)用的目的(1)如數(shù)學(xué)函數(shù),為了得到函數(shù)的返回值。這類函數(shù)的調(diào)用一般出現(xiàn)在表達(dá)式中,作為表達(dá)式語句的一部分。(2)為了完成某項(xiàng)任務(wù),而不是為了得到返回值。調(diào)用這類函數(shù)時(shí),就直接用函數(shù)調(diào)用語句。例:scanf("%f",&x);printf("%f",x);例如:y=a*cos(w*x)+c;2/4/2023124.1.2復(fù)合語句一對(duì)大括號(hào){}包圍若干條語句組成。格式:{[數(shù)據(jù)說明部分;]執(zhí)行語句部分;}注意:(1)在復(fù)合語句中的“內(nèi)部數(shù)據(jù)描述語句”中定義的變量,是局部變量,僅在復(fù)合語句中有效。(2)復(fù)合語句結(jié)束的“}”之后,不需要分號(hào)。(3)復(fù)合語句可以出現(xiàn)在任何數(shù)據(jù)操作語句可以出現(xiàn)的地方。2/4/2023134.1.3空語句空語句就是一個(gè)分號(hào)。格式:;功能:執(zhí)行該語句不做任何操作,一般用于延遲時(shí)間。2/4/202314控制語句,完成一定的控制功能。C有9種控制語句:①if()~else~(條件語句)②for()~(循環(huán)語句)③while()~(循環(huán)語句)④do~while()(循環(huán)語句)⑤continue(結(jié)束本次循環(huán)語句)⑥break(中止執(zhí)行switch或循環(huán)語句)⑦switch(多分支選擇語句)⑧goto (轉(zhuǎn)向語句)⑨return(從函數(shù)返回語句)這9種語句中的括號(hào)()表示其中是一個(gè)條件,~表示內(nèi)嵌的語句。4.1.4流程控制語句2/4/2023154.2賦值運(yùn)算符、賦值表達(dá)式

和賦值語句一、賦值運(yùn)算符賦值符號(hào)“=”就是賦值運(yùn)算符,其作用是將一個(gè)數(shù)據(jù)賦給一個(gè)變量。如“a=3”的作用是執(zhí)行一次賦值操作(或稱賦值運(yùn)算)。把常量3賦給變量a。也可以將一個(gè)表達(dá)式的值賦給一個(gè)變量。

2/4/202316二、類型轉(zhuǎn)換

如果賦值運(yùn)算符兩側(cè)的類型不一致,但都是數(shù)值型或字符型時(shí),在賦值時(shí)要進(jìn)行類型轉(zhuǎn)換。不同類型的整型數(shù)據(jù)間的賦值:按存儲(chǔ)單元中的存儲(chǔ)形式直接傳送。

1將實(shí)型數(shù)據(jù)(包括單、雙精度)賦給整型變量時(shí),舍棄實(shí)數(shù)的小數(shù)部分。如i為整型變量,執(zhí)行“i=3.56”的結(jié)果是使i的值為3。2/4/202317類型轉(zhuǎn)換(1)2將整型數(shù)據(jù)賦給單、雙精度實(shí)型變量時(shí),數(shù)值不變,但以浮點(diǎn)數(shù)形式存儲(chǔ)到變量中,如將23賦給f1oat變量f,即f=23,先將23轉(zhuǎn)換成23.00000,再存儲(chǔ)在f中。如將23賦給double型變量d,即d=23,則將23補(bǔ)足有效位數(shù)字為23.00000000000000,然后以雙精度浮點(diǎn)數(shù)形式存儲(chǔ)到d中。3將一個(gè)double型數(shù)據(jù)賦給float變量時(shí),截取其前面7位有效數(shù)字,存放在float變量的存儲(chǔ)單元(32位)中。將一個(gè)float型數(shù)據(jù)賦給double變量時(shí),數(shù)值不變,有效數(shù)字?jǐn)U展為16位,在內(nèi)存中以64位存儲(chǔ)。2/4/202318類型轉(zhuǎn)換(2)4字符型數(shù)據(jù)賦給整型變量時(shí),由于字符只占一個(gè)字節(jié),而整型變量為2個(gè)字節(jié),因此將字符數(shù)據(jù)(8位)放到整型變量低8位中。有兩種情況:(1)如果所用系統(tǒng)將字符處理為無符號(hào)的量或?qū)nsignedchar型變量賦值,則將字符的8位放到整型變量低8位,高8位補(bǔ)零;(2)如果所用系統(tǒng)(如TurboC)將字符處理為帶符號(hào)的量(即signedchar),若字符最高位為0,則整型變量高8位補(bǔ)0;若字符最高位為1,則高8位全補(bǔ)1。這稱為“符號(hào)擴(kuò)展”,這樣做的目的是使數(shù)值保持不變。5將int、short、long型數(shù)據(jù)賦給一個(gè)char型變量時(shí),只將其低8位原封不動(dòng)地送到char型變量(即截?cái)啵?/4/202319類型轉(zhuǎn)換(3)6將帶符號(hào)的整型數(shù)據(jù)(int型)賦給long型變量時(shí),要進(jìn)行符號(hào)擴(kuò)展,如果int型數(shù)據(jù)為正值(符號(hào)位為0),則longint型變量的高16位補(bǔ)0。如果int型變量為負(fù)值(符號(hào)位為1),則long型變量的高16位補(bǔ)1,將整型數(shù)的16位送到long型低16位中,以保持?jǐn)?shù)值不改變。反之,若將一個(gè)longint型數(shù)據(jù)賦給一個(gè)int型變量,只將longint型數(shù)據(jù)中低16位原封不動(dòng)送到整型變量。7將unsignedint型數(shù)據(jù)賦給longint型變量時(shí),不存在符號(hào)擴(kuò)展問題,只需將高位補(bǔ)0即可。將一個(gè)unsigned類型數(shù)據(jù)賦給一個(gè)占字節(jié)數(shù)相同的整型變量,將unsigned型變量的內(nèi)容原樣送到非unsigned型變量中,但如果數(shù)據(jù)范圍超過相應(yīng)整型的范圍,則會(huì)出現(xiàn)數(shù)據(jù)錯(cuò)誤。如:unsignedinta=65535;intb;b=a;將a送到b中,由于b是int型,第1位是符號(hào)位,b的值為-1。該部分自學(xué)!2/4/202320例有符號(hào)數(shù)據(jù)傳送給無符號(hào)變量#include<stdio.h>voidmain(){unsigneda;intb=-1;a=b;printf(“%u”,a);}運(yùn)行結(jié)果為655352/4/202321三、復(fù)合賦值運(yùn)算符在賦值符“=”之前加上其它運(yùn)算符,可以構(gòu)成復(fù)合賦值運(yùn)算符。凡是二元(二目)運(yùn)算符,都可以與賦值符一起組合成復(fù)合賦值符。C語言規(guī)定可以使用10種復(fù)合賦值運(yùn)算符:+=,-=,*=,/=,%=(復(fù)合算術(shù)運(yùn)算符)<<=,>>=,&=,^=,|=(復(fù)合位運(yùn)算符)。例如:a+=3 等價(jià)于a=a+3:相當(dāng)于使a進(jìn)行一次自加(3)的操作;x*=y+8等價(jià)于x=x*(y+8)x%=3等價(jià)于x=x%3C采用這種復(fù)合運(yùn)算符,一是為了簡化程序,使程序精練;二是為了提高編譯效率。2/4/202322四、賦值表達(dá)式由賦值運(yùn)算符將一個(gè)變量和一個(gè)表達(dá)式連接起來的式子稱為“賦值表達(dá)式”,其一般形式為〈變量〉〈賦值運(yùn)算符〉〈表達(dá)式〉如“a=5”是一個(gè)賦值表達(dá)式。對(duì)賦值表達(dá)式求解的過程是:將賦值運(yùn)算符右側(cè)的“表達(dá)式”的值賦給左側(cè)的變量。賦值表達(dá)式的值就是被賦值的變量的值。上述一般形式的賦值表達(dá)式中的“表達(dá)式”又可以是一個(gè)賦值表達(dá)式。如:a=(b=5)括弧內(nèi)的“b=5”是一個(gè)賦值表達(dá)式,它的值等于5,因此“a=(b=5)”相當(dāng)于“a=5”,a的值等于5,整個(gè)賦值表達(dá)式的值也等于5。賦值運(yùn)算符按照“自右而左”的結(jié)合順序。2/4/202323四、賦值表達(dá)式(續(xù))賦值表達(dá)式也可以包含復(fù)合的賦值運(yùn)算符。如a+=a-=a*a也是一個(gè)賦值表達(dá)式。如果a的初值為12,此賦值表達(dá)式的求解為:①先進(jìn)行“a-=a*a”的運(yùn)算,它相當(dāng)于a=a-a*a=12-144=-132。②再進(jìn)行“a+=-132”的運(yùn)算,相當(dāng)于a=a+(-132)=-132-132=-2642/4/202324五、賦值語句賦值語句:賦值表達(dá)式加上一個(gè)分號(hào)構(gòu)成賦值語句。C語言的賦值語句具有其它高級(jí)語言中賦值語句的一切特點(diǎn)和功能。但也應(yīng)當(dāng)注意到它們的不同:(1)C語言中的賦值號(hào)“=”是一個(gè)運(yùn)算符,其它語言中的賦值號(hào)不是運(yùn)算符;(2)關(guān)于賦值表達(dá)式與賦值語句,其它多數(shù)高級(jí)語言沒有“賦值表達(dá)式”這一概念。賦值表達(dá)式可以被包括在其它表達(dá)式之中,例如:if((a=b)>0)t=a;(正確)if的條件中不能包含賦值語句:if((a=b;)>0)t=a;(錯(cuò)誤)2/4/2023254.3數(shù)據(jù)輸入輸出的概念

及在C語言中的實(shí)現(xiàn)(1)所謂輸入輸出是以計(jì)算機(jī)主機(jī)為主體而言的:從計(jì)算機(jī)向外部輸出設(shè)備(如顯示器、打印機(jī)、磁盤等)輸出數(shù)據(jù)稱為“輸出”;從外部設(shè)備(如鍵盤、磁盤、顯示器、掃描儀等)向計(jì)算機(jī)輸入數(shù)據(jù)稱為“輸入”。(2)C語言本身不提供輸入輸出語句,輸入和輸出操作是由函數(shù)來實(shí)現(xiàn)的。在C的標(biāo)準(zhǔn)函數(shù)庫中提供了一些輸入輸出函數(shù),如printf函數(shù)和scanf函數(shù),在使用時(shí),不要認(rèn)為它們是C語言的“輸入輸出語句”。printf和scanf不是C語言的關(guān)鍵字,而是兩個(gè)函數(shù);2/4/202326數(shù)據(jù)輸入輸出的概念

及在C語言中的實(shí)現(xiàn)(續(xù))(3)C提供的函數(shù)以庫的形式存放在系統(tǒng)中,它們不是C語言文本中的組成部分,因此,各函數(shù)的功能和名字,在不同的計(jì)算機(jī)系統(tǒng)中可能有所不同。有些通用的函數(shù)(如printf和scanf等),各種計(jì)算機(jī)系統(tǒng)都提供,成為各種計(jì)算機(jī)系統(tǒng)的標(biāo)準(zhǔn)函數(shù);(4)在使用標(biāo)準(zhǔn)庫函數(shù)時(shí),要用預(yù)編譯命令“#include”將“stdio.h”文件包括到用戶源文件中。即#include<stdio.h>或#include“stdio.h”stdio.h是standardinput&output的縮寫,包含了與標(biāo)準(zhǔn)I/O庫有關(guān)的變量定義和宏定義。在需要使用標(biāo)準(zhǔn)I/O庫中的函數(shù)時(shí),應(yīng)在程序前使用上述預(yù)編譯命令。2/4/2023274.4數(shù)據(jù)輸入輸出2/4/202328一、字符數(shù)據(jù)的輸入輸出1putchar函數(shù)(字符輸出函數(shù))putchar函數(shù)的作用是向終端輸出一個(gè)字符,例如:putchar(c);輸出字符變量c的值。c可以是字符型變量或整型變量。2/4/202329例輸出單個(gè)字符#include<stdio.h>voidmain(){chara,b,c;a=‘B’;b=’O’;c=’Y’;putchar(a);putchar(b);putchar(c);}運(yùn)行結(jié)果:BOY也可以輸出其它轉(zhuǎn)義字符,如:putchar(‘\101’) (輸出字符‘A’)putchar(‘\’’) (輸出單引號(hào)字符’)putchar(‘\015’)(使輸出回車,不換行)參看p48表2/4/2023302

getchar函數(shù)(字符輸入函數(shù))此函數(shù)的作用:從終端(或系統(tǒng)隱含指定的輸入設(shè)備)輸入一個(gè)字符。getchar函數(shù)沒有參數(shù),其一般形式為getchar()函數(shù)的值就是從輸入設(shè)備得到的字符。請(qǐng)注意,getchar()只能接收一個(gè)字符。getchar函數(shù)得到的字符可以賦給一個(gè)字符變量或整型變量,也可以不賦給任何變量,作為表達(dá)式的一部分。2/4/202331例:輸入單個(gè)字符#include<stdio.h>voidmain(){charc;c=getchar();putchar(c);}#include<stdio.h>voidmain(){putchar(getchar());}getchar函數(shù)得到的字符可以賦給一個(gè)字符變量getchar函數(shù)得到的字符作為表達(dá)式的一部分2/4/202332二、格式輸入輸出printf函數(shù)——格式輸出函數(shù)printf函數(shù)的作用是向終端(或系統(tǒng)默認(rèn)的輸出設(shè)備)輸出若干個(gè)任意類型的數(shù)據(jù)(printf可以輸出多個(gè)數(shù)據(jù),且為任意類型)。scanf函數(shù)——格式輸入函數(shù)用來從外部輸入設(shè)備向計(jì)算機(jī)主機(jī)輸入數(shù)據(jù)的函數(shù);getchar函數(shù)只能用來輸入一個(gè)字符,用scanf函數(shù)可以用來輸入任何類型的多個(gè)數(shù)據(jù)。2/4/202333printf函數(shù)——格式輸出函數(shù)printf函數(shù)的作用是向終端(或系統(tǒng)默認(rèn)的輸出設(shè)備)輸出若干個(gè)任意類型的數(shù)據(jù)(printf可以輸出多個(gè)數(shù)據(jù),且為任意類型)。2/4/202334例:圓半徑radius=1.5,求圓周長和圓面積

#include“stdio.h”voidmain(){floatradius,length,area,pi=3.1415926;

radius=1.5;

length=2*pi*radius; /*求圓周長*/

area=pi*radius*radius; /*求圓面積*/

printf(“radius=%f\n”,radius); /*輸出圓半徑*/

printf(“l(fā)ength=%7.2f,area=%7.2f\n”,length,area);/*輸出圓周長、面積*/

}程序運(yùn)行結(jié)果如下:radius=1.500000length=9.42,area=7.07 2/4/202335(1)printf函數(shù)的一般形式printf(格式控制,輸出表列)①“格式控制”是用雙引號(hào)括起來的字符串,也稱“轉(zhuǎn)換控制字符串”,它包括三種信息:(A)格式說明,由“%”和格式字符組成,如%d,%f等。它的作用是將輸出的數(shù)據(jù)轉(zhuǎn)換為指定的格式輸出。

格式說明總是由“%”字符開始!(B)普通字符,即需要原樣輸出的字符。(C)轉(zhuǎn)義字符,如'\n'就是轉(zhuǎn)義字符,輸出時(shí)產(chǎn)生一個(gè)“換行”操作。②“輸出表列”是需要輸出的一些數(shù)據(jù),可以是表達(dá)式。

printf(“a=%d,b=%d\n”,a,a+3);由于printf是函數(shù),因此,“格式控制”字符串和“輸出表列”實(shí)際上都是函數(shù)的參數(shù)。可以表示為printf(參數(shù)1,參數(shù)2,參數(shù)3,….,參數(shù)n)printf函數(shù)的功能是將參數(shù)2~參數(shù)n按參數(shù)1給定的格式輸出。2/4/202336(2)printf函數(shù)的格式字符①d格式符,用來輸出十進(jìn)制整數(shù)。(A)%d,按整型數(shù)據(jù)的實(shí)際長度輸出。(B)%md,m為指定的輸出字段的寬度。如果數(shù)據(jù)的位數(shù)小于m,則左端補(bǔ)以空格,若大于m,則按實(shí)際位數(shù)輸出。如printf(“%4d,%4d”,a,b)若a=123,d=12345,則輸出結(jié)果為123,12345(C)%ld,輸出長整型數(shù)據(jù)。如longa=135790;printf(“%ld”,a);如果用%d輸出,就會(huì)發(fā)生錯(cuò)誤,對(duì)long型數(shù)據(jù)應(yīng)當(dāng)用%ld格式輸出。對(duì)長整型數(shù)據(jù)也可以指定字段寬度,如將上面printf函數(shù)中的“%ld”可改為“%81d”。一個(gè)int型數(shù)據(jù)可以用%d或%ld格式輸出。2/4/202337(2)printf函數(shù)的格式字符(續(xù))②o格式符,以8進(jìn)制數(shù)形式輸出整數(shù)。由于是將內(nèi)存單元中的各位的值按八進(jìn)制形式輸出,因此輸出的數(shù)值不帶符號(hào),即將符號(hào)位也一起作為八進(jìn)制數(shù)的一部分輸出。③x格式符,以16進(jìn)制數(shù)形式輸出整數(shù)。④u格式符,用來輸出unsigned型數(shù)據(jù),即無符號(hào)數(shù),以十進(jìn)制形式輸出。一個(gè)有符號(hào)整數(shù)(int型)也可以用%u格式輸出;反之,一個(gè)unsigned型數(shù)據(jù)也可以用%d格式輸出。按相互賦值的規(guī)則處理。unsigned型數(shù)據(jù)也可用%o或%x格式輸出。2/4/202338例4.3無符號(hào)數(shù)據(jù)的輸出#include<stdio.h>voidmain(){unsignedinta=65535;

intb=-2;printf(“a=%d,%o,%x,%u\n”,a,a,a,a);printf(“b=%d,%o,%x,%u\n”,b,b,b,b);}運(yùn)行結(jié)果為:a=-1,177777,ffff,65535b=-2,177776,fffe,655341111111111111111111111111111111000000000000000101111111111111101加1按位取反2/4/202339(2)printf函數(shù)的格式字符(續(xù))⑤c格式符,用來輸出一個(gè)字符。如:charc=’a’;printf(“%c”,c);一個(gè)在0~255范圍內(nèi)的整數(shù),可以用字符形式輸出。在輸出前,將該整數(shù)轉(zhuǎn)換成相應(yīng)的ASCII字符;反之,一個(gè)字符數(shù)據(jù)可用整數(shù)輸出。2/4/202340(2)printf函數(shù)的格式字符(續(xù))⑥s格式符,用來輸出一個(gè)字符串。(A)%s,例如printf(“%s”,“CHINA”)輸出“CHINA”字符串(不包括雙引號(hào))。(B)%ms,輸出的字符串占m列,若字符串長度大于m,則突破m的限制,將字符串全部輸出。若串長小于m,則左補(bǔ)空格;(C)%-ms,若串長小于m,則在m列范圍內(nèi),字符串向左靠,右補(bǔ)空格。(D)%m.ns,輸出占m列,但只取字符串中左段n個(gè)字符。這n個(gè)字符輸出在m列的右側(cè),左補(bǔ)空格。(E)%-m.ns,其中m、n含義同上,n個(gè)字符輸出在m列范圍的左側(cè),右補(bǔ)空格。如果n>m,則m自動(dòng)取n值,即保證n個(gè)字符正常輸出。2/4/202341(2)printf函數(shù)的格式字符(續(xù))⑦f格式符,用來輸出實(shí)數(shù)(包括單、雙精度),以小數(shù)形式輸出:(A)%f,不指定字段寬度,由系統(tǒng)自動(dòng)指定,使整數(shù)部分全部如數(shù)輸出,并輸出6位小數(shù)。應(yīng)當(dāng)注意,并非全部數(shù)字都是有效數(shù)字。

單精度實(shí)數(shù)的有效位數(shù)一般為7位,雙精度有效數(shù)字為16位,給出6位小數(shù)。(B)%m.nf,指定輸出的數(shù)據(jù)共占m列,其中有n位小數(shù)。如果數(shù)值長度小于m,則左端補(bǔ)空格。(C)%-m.nf與%m.nf基本相同,輸出的數(shù)值向左端靠,右端補(bǔ)空格。2/4/202342f格式字符舉例#include<stdio.h>voidmain(){floatx,y;doublea,b;x=111111.111;y=222222.222;a=1111111111111.111111111;b=2222222222222.222222222;printf(“x+y=%f\n”,x+y);printf(“a+b=%f\n”,a+b);}運(yùn)行結(jié)果為:x+y=333333.328125a+b=3333333333333.3330102/4/202343(2)printf函數(shù)的格式字符(續(xù))⑧e格式符,以指數(shù)形式輸出實(shí)數(shù):(A)%e,不指定輸出數(shù)據(jù)所占的寬度和數(shù)字部分小數(shù)位數(shù),由系統(tǒng)自動(dòng)指定給出6位小數(shù),指數(shù)部分占5位(如e+002),其中“e”占一位,指數(shù)符號(hào)占一位,指數(shù)占3位。數(shù)值按標(biāo)準(zhǔn)化指數(shù)形式輸出(即小數(shù)點(diǎn)前必須有而且只有一位非零數(shù)字)。則用%e格式輸出的實(shí)數(shù)占13列寬度?。ú煌到y(tǒng)的規(guī)定略有不同!)(B)%m.ne和%-m.ne,m,n和“-”字符含義與前相同。n指數(shù)據(jù)的小數(shù)部分(又稱尾數(shù))的小數(shù)位數(shù)。2/4/202344f格式與e格式輸出舉例#include<stdio.h>voidmain(){floatfn=123.456;printf(“%f,%10f,%10.2f,%.2f,%-10.2f\n”,fn,fn,fn,fn,fn);printf(“%e,%10e,%10.2e,%.2e,%-10.2e\n”,fn,fn,fn,fn,fn);}輸出結(jié)果:123.456001,123.456001,□□□□123.46,123.46,123.46□□□□

1.234560e+002,1.234560e+002,□1.23e+002,1.23e+002,1.23e+002□□:代表“空格”2/4/202345printf格式字符格式字符說明d以帶符號(hào)的十進(jìn)制形式輸出整數(shù)(正數(shù)不輸出符號(hào))o以8進(jìn)制無符號(hào)形式輸出整數(shù)(不輸出前導(dǎo)符0)x,X以16進(jìn)制無符號(hào)形式輸出整數(shù)(不輸出前導(dǎo)符0x)u以無符號(hào)10進(jìn)制形式輸出整數(shù)c以字符形式輸出,只輸出一個(gè)字符s輸出字符串f以小數(shù)形式輸出單、雙精度數(shù),隱含輸出6位小數(shù)e,E以標(biāo)準(zhǔn)指數(shù)形式輸出單、雙精度數(shù),數(shù)字部分小數(shù)位數(shù)為6位。用e時(shí)指數(shù)以“e”表示,用E時(shí)指數(shù)以“E”表示。g,G選用%f或%e格式中輸出寬度較短的一種格式,不輸出無意義的0。用G時(shí),若以指數(shù)形式表示,則指數(shù)以大寫表示。2/4/202346關(guān)于printf函數(shù)的其它說明(1)務(wù)必注意數(shù)據(jù)類型與對(duì)應(yīng)格式說明的匹配,否則將會(huì)出現(xiàn)錯(cuò)誤;(2)除X、E、G外,其它格式字符必須用小寫字母;(3)d、o、x、u、c、s、f、e、g等字符,如果用在“%”后面就作為格式符號(hào);(4)如果想輸出字符“%”,應(yīng)該在“格式控制”字符串中用連續(xù)倆個(gè)%表示,如:printf(“%f%%”,1.0/3)2/4/2023472scanf函數(shù)——格式輸入函數(shù)在程序中給計(jì)算機(jī)提供數(shù)據(jù),可以用賦值語句,也可以用輸入函數(shù)??墒褂胹canf()函數(shù),通過鍵盤輸入多個(gè)數(shù)據(jù)。(1)一般形式scanf(格式控制,地址表列)“格式控制”的含義同printf()函數(shù)相似;“地址表列”是由若干個(gè)地址組成的表列,可以是變量的地址,或字符串的首地址。普通字符在輸入有效數(shù)據(jù)時(shí),必須原樣一起輸入。2/4/202348例:用scanf函數(shù)輸入數(shù)據(jù)

#include<stdio.h>voidmain(){inta,b,c,a1,b1,c1;scanf(“%d,%d,%d”,&a,&b,&c);scanf(“%d%d%d”,&a1,&b1,&c1);printf(“%d,%d,%d\n”,a,b,c);printf(“%d,%d,%d\n”,a1,b1,c1);}&a、&b、&c中的“&”是“地址運(yùn)算符”,&a指a在內(nèi)存中的地址。scanf函數(shù)的作用是:按照a、b、c在內(nèi)存的地址將a、b、c的值存進(jìn)去。2/4/202349關(guān)于scanf(“%d%d%d”,&a,&b,&c);“%d%d%d”表示要按十進(jìn)制整數(shù)輸入3個(gè)數(shù)據(jù);輸入數(shù)據(jù)時(shí),在兩個(gè)數(shù)據(jù)之間以一個(gè)或多個(gè)空格間隔,也可以用Enter鍵、Tab鍵;用“%d%d%d”格式輸入數(shù)據(jù)時(shí),不能用逗號(hào)作為兩個(gè)數(shù)據(jù)間的分隔符。345 合法!45 合法!3,4,5

不合法!2/4/2023502scanf函數(shù)(續(xù))(2)格式說明和printf函數(shù)中的格式說明相似,以%開始,以一個(gè)格式字符結(jié)束,中間可以插入附加的字符。①

對(duì)unsigned型變量所需要的數(shù)據(jù)可以用%u,%d或%o、%x格式輸入;②可以指定輸入數(shù)據(jù)所占列數(shù),系統(tǒng)自動(dòng)按它截取所需數(shù)據(jù);scanf(“%3d%3d”,&a,&b);③輸入數(shù)據(jù)時(shí)不能規(guī)定精度:scanf(“%7.2f”,&a);是不合法的。

2/4/202351scanf

格式

字符格式字符說明d用來輸入十進(jìn)制整數(shù)u用來輸入無符號(hào)的十進(jìn)制整數(shù)o用來輸入八進(jìn)制整數(shù)x,X用來輸入十六進(jìn)制整數(shù)c用來輸入單個(gè)字符s用來輸入字符串,將字符串送到一個(gè)字符數(shù)組中,在輸入時(shí)以非空白字符開始,以第一個(gè)空白字符結(jié)束。字符串以串結(jié)束標(biāo)志‘\0’作為其最后一個(gè)字符f用來輸入實(shí)數(shù),可以用小數(shù)形式或指數(shù)形式輸入e,E,g,G與f作用相同,e與f、g可以互相替換(大小寫作用相同)2/4/202352(3)使用scanf函數(shù)應(yīng)注意的問題①scanf函數(shù)中的“格式控制”后面應(yīng)當(dāng)是變量地址,而不應(yīng)是變量名;scanf(“%d,%d”,a,b);(錯(cuò)誤?。?!)scanf(“%d,%d”,&a,&b);(正確)②如果在“格式控制”字符串中除了格式說明以外還有其它字符,則在輸入數(shù)據(jù)時(shí)務(wù)必原樣輸入:若scanf(“%d,%d”,&a,&b);輸入時(shí)應(yīng)為:3,4若scanf(“a=%d:b=%d:c=%d”,&a,&b,&c);輸入時(shí)應(yīng)為:a=3:b=4:c=6③在用“%c”輸入字符時(shí),空格字符和“轉(zhuǎn)義字符”作為有效字符輸入。④在輸入數(shù)據(jù)時(shí),遇以下情況時(shí)該數(shù)據(jù)認(rèn)為結(jié)束:遇空格,或按“回車”或“跳格”(Tab)鍵;遇寬度結(jié)束,如“%3d”,只取3列;

遇非法輸入。2/4/202353提高人機(jī)交互性建議:為改善人機(jī)交互性,同時(shí)簡化輸入操作,在設(shè)計(jì)輸入操作時(shí),一般先用printf()函數(shù)輸出一個(gè)提示信息,再用scanf()函數(shù)進(jìn)行數(shù)據(jù)輸入。

例如,將scanf("num1=%d",&num1);改為:printf("num1=");scanf("%d",&num1);使用scanf函數(shù)時(shí)的建議2/4/2023544.5程序舉例在順序結(jié)構(gòu)程序中,各語句(或命令)是按照位置的先后次序,順序執(zhí)行的,且每個(gè)語句都會(huì)被執(zhí)行到。在順序結(jié)構(gòu)程序中,一般包括以下幾個(gè)部分:1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論