版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
C程序設(shè)計數(shù)學(xué)系計算機系列課程課件之一12/9/20221C程序設(shè)計數(shù)學(xué)系計算機系列課程課件之一12/9/20221第四章順序程序設(shè)計
本章要點4.1C語句概述4.2賦值語句4.3數(shù)據(jù)輸出語句4.4數(shù)據(jù)輸入語句4.5順序結(jié)構(gòu)程序設(shè)計
12/9/20222第四章順序程序設(shè)計本章要點4.1C語句概述12/一、C語句概述
本章介紹C語言程序設(shè)計的基本方法和基本的程序語句。
和其他高級語言一樣,C語言的語句用來向計算機系統(tǒng)發(fā)出操作指令。一個語句經(jīng)編譯后產(chǎn)生若干條機器指令。一個實際程序應(yīng)當包含若干語句。應(yīng)當指出,C語句都是用來完成一定任務(wù)定的。聲明部分的內(nèi)容不應(yīng)稱為語句。一個函數(shù)包含聲明部分和執(zhí)行部分,執(zhí)行部分即由語句組成。12/9/20223一、C語句概述本章介紹C語言程序設(shè)計的基本方法和基
程序應(yīng)該包括數(shù)據(jù)描述(由聲明部分實現(xiàn))和數(shù)據(jù)操作(由語句實現(xiàn))。數(shù)據(jù)描述主要定義數(shù)據(jù)結(jié)構(gòu)(用數(shù)據(jù)類型表示)和數(shù)據(jù)初值,數(shù)據(jù)操作的任務(wù)是對已提供的數(shù)據(jù)進行加工。
從程序流程的角度來看,程序可以分為三種基本結(jié)構(gòu),即順序結(jié)構(gòu)、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)。這三種基本結(jié)構(gòu)可以組成所有的各種復(fù)雜程序。C語言提供了多種語句來實現(xiàn)這些程序結(jié)構(gòu)。本章介紹這些基本語句及其應(yīng)用,使讀者對C程序有一個初步的認識,為后面各章的學(xué)習(xí)打下基礎(chǔ)。12/9/20224程序應(yīng)該包括數(shù)據(jù)描述(由聲明部分實現(xiàn))和數(shù)據(jù)操作(由
C語句可分為以下五類:
C程序的執(zhí)行部分是由語句組成的。程序的功能也是由執(zhí)行語句實現(xiàn)的。5)、空語句1)、表達式語句2)、函數(shù)調(diào)用語句3)、控制語句
4)、復(fù)合語句12/9/20225C語句可分為以下五類:C程序的執(zhí)行部分是1、表達式語句表達式語句由表達式加上分號“;”組成。其一般形式為:表達式;執(zhí)行表達式語句就是計算表達式的值。例如:x=y+z;賦值語句,計算結(jié)果賦予變量x;y+z;加法運算語句,計算結(jié)果不能保留,無實際意義;i++;自增1語句,i值增1,值保留在i中。12/9/202261、表達式語句表達式語句由表達式加上分號“;”組成。其一般由函數(shù)名、實際參數(shù)加上分號“;”組成。其一般形式為:函數(shù)名(實際參數(shù)表);執(zhí)行函數(shù)語句就是調(diào)用函數(shù)體并把實際參數(shù)賦予函數(shù)定義中的形式參數(shù),然后執(zhí)行被調(diào)函數(shù)體中的語句,求取函數(shù)值。(在第八章函數(shù)中再詳細介紹)例如printf("CProgram");調(diào)用庫函數(shù),輸出字符串。2、函數(shù)調(diào)用語句12/9/20227由函數(shù)名、實際參數(shù)加上分號“;”組成。其一般形式為:控制語句用于控制程序的流程,以實現(xiàn)程序的各種結(jié)構(gòu)方式。它們由特定的語句定義符組成。C語言有九種控制語句??煞殖梢韵氯悾?1)條件判斷語句:if語句,switch語句。(2)循環(huán)執(zhí)行語句:while語句,dowhile語句,for語句。(3)轉(zhuǎn)向語句:break語句,goto語句,continue語句,return語句。3、控制語句12/9/20228控制語句用于控制程序的流程,以實現(xiàn)程序的各種結(jié)構(gòu)方式。3、控把多個語句用括號{}括起來組成的一個語句稱復(fù)合語句。在程序中應(yīng)把復(fù)合語句看成是單條語句,而不是多條語句,例如: { x=y+z;a=b+c; printf(“%d,%d”,x,a); }是一條復(fù)合語句。復(fù)合語句內(nèi)的各條語句都必須以分號“;”結(jié)尾,在括號“}”外不能加分號。4、復(fù)合語句12/9/20229把多個語句用括號{}括起來組成的一個語句稱復(fù)合語只有分號“;”組成的語句稱為空語句??照Z句是什么也不執(zhí)行的語句。在程序中空語句可用來作空循環(huán)體。例如while(getchar()!='\n');本語句的功能是,只要從鍵盤輸入的字符不是回車則重新輸入。這里的循環(huán)體為空語句。5、空語句C語言允許一行寫幾個語句,也允許一個語句拆開寫在幾行上,書寫格式無固定要求,但初學(xué)時應(yīng)注意書寫格式。12/9/202210只有分號“;”組成的語句稱為空語句。空語句是什么二、賦值語句
賦值語句的功能是將右邊表達式的值賦予左邊的變量(即將表達式的值存儲到變量所指的存儲單元中)。這里表達式的含義是廣義的,它可以是一個數(shù)值,變量或表達式。也就是說,賦值語句的右邊可以是數(shù)值或變量或表達式,而它的左邊只能是一個(僅此一個)變量,它是程序中使用最多的語句之一。賦值語句是由賦值表達式再加上分號構(gòu)成的表達式語句。其一般形式為:變量=表達式;12/9/202211二、賦值語句賦值語句的功能是將右邊表達式的值賦予左2、由于在賦值符“=”右邊的表達式也可以又是一個賦值表達式,因此,下述形式:
變量=(變量=表達式);
是成立的,從而形成嵌套的情形。將其展開之后的一般形式為:變量=變量=…=表達式;在賦值語句的使用中需要注意以下幾點:1、C語言中的賦值號“=”是一個運算符,在其他大多數(shù)語言中賦值號不作為運算符;例如:a=b=c=d=e=5;按照賦值運算符的右結(jié)合性,因此實際上等效于: e=5;d=e;c=d;b=c;a=b;12/9/2022122、由于在賦值符“=”右邊的表達式也可以又是一個賦值
4、在變量說明中,不允許連續(xù)給多個變量賦初值。如下述說明是錯誤的:inta=b=c=5;必須寫為inta=5,b=5,c=5;而賦值語句允許連續(xù)賦值。
3、注意在變量說明中給變量賦初值和賦值語句的區(qū)別。給變量賦初值是變量說明的一部分,賦初值后的變量與其后的其它同類變量之間仍必須用逗號間隔,而賦值語句則必須用分號結(jié)尾。12/9/2022134、在變量說明中,不允許連續(xù)給多個變量賦初值。如下述下述語句是合法的:if((x=y+5)>0)z=x;語句的功能是,若表達式x=y+5大于0則z=x。下述語句是非法的:if((x=y+5;)>0)z=x;因為x=y+5;是語句,不能出現(xiàn)在表達式中。
5、注意賦值表達式和賦值語句的區(qū)別。賦值表達式是一種表達式,它可以出現(xiàn)在任何允許表達式出現(xiàn)的地方,而賦值語句則不能。12/9/202214下述語句是合法的:if((x=y+5)>0)z=x;三、數(shù)據(jù)輸出語句
數(shù)據(jù)的輸入和輸出是計算機完成數(shù)據(jù)操作的關(guān)鍵,在C語言中完成數(shù)據(jù)的輸入和輸出是通過以下手段來實現(xiàn)的:
(1)、所謂輸入輸出是以計算機主機為主體而言的。從計算機向外部輸出設(shè)備(如顯示器、打印機、磁盤等)輸出數(shù)據(jù)稱為“輸出”,從外部向輸入設(shè)備(如鍵盤、鼠標、磁盤等)輸入數(shù)據(jù)稱為“輸入”,通常把這些設(shè)備稱為標準設(shè)備。12/9/202215三、數(shù)據(jù)輸出語句數(shù)據(jù)的輸入和輸出是計算機完成數(shù)據(jù)操
(2)、C語言本身不提供輸入輸出語句,輸入和輸出操作是由函數(shù)來實現(xiàn)的。在C標準函數(shù)庫中提供了一些輸入輸出函數(shù),以方便用戶使用。在C語言函數(shù)庫中有一批“標準輸入輸出函數(shù)”,它是以標準的輸入輸出設(shè)備為輸入輸出對象的。其中有printf(格式輸出),putchar(輸出字符),puts(輸出字符串),scanf(格式輸入),getchar(輸入字符),gets(輸入字符串)。12/9/202216(2)、C語言本身不提供輸入輸出語句,輸入和輸出操作(3)、在使用C語言庫函數(shù)時,要用預(yù)編譯命令“#include”將有關(guān)“頭文件”包含到用戶編寫的源程序文件中。在頭文件中包含了與用到的函數(shù)有關(guān)的信息。如在使用標準輸入輸出庫函數(shù)時要用到“stdio.h”文件,則在文件開頭應(yīng)有預(yù)編譯命令:#include<stdio.h>或#include“stdio.h”。stdio.h是standardinput&output的縮寫,h是head的縮寫。12/9/202217(3)、在使用C語言庫函數(shù)時,要用預(yù)編譯命令“#in本小節(jié)先介紹printf函數(shù)和putchar函數(shù)。printf函數(shù)稱為格式輸出函數(shù),其關(guān)鍵字最末一個字母f即為“格式”(format)之意。其功能是按用戶指定的格式,把指定的數(shù)據(jù)顯示到顯示器屏幕上。在前面的例題中我們已多次使用過這個函數(shù)。12/9/202218本小節(jié)先介紹printf函數(shù)和putchar函數(shù)。prin1、printf函數(shù)的一般形式printf函數(shù)是一個標準庫函數(shù),它的函數(shù)原型在頭文件“stdio.h”中。因此在使用printf函數(shù)之前必須包含“stdio.h”文件,即在每一個程序開頭有#include<stdio.h>語句。printf函數(shù)調(diào)用的一般形式為:
printf(“格式控制字符”,輸出表列);12/9/2022191、printf函數(shù)的一般形式printf函數(shù)是一個
其中格式控制字符用于指定輸出格式。格式控制字符可由格式字符串和非格式字符串兩種組成。格式字符串是以%開頭的字符串,在%后面跟有各種格式字符,以說明輸出數(shù)據(jù)的類型、形式、長度、小數(shù)位數(shù)等。如“%d”表示按十進制整型輸出,“%ld”表示按十進制長整型輸出,“%c”表示按字符型輸出等。后面將專門給予討論。非格式字符串在輸出時原樣照印,在顯示中起提示作用。輸出表列中給出了各個輸出項,要求格式字符串和各輸出項在數(shù)量和類型上應(yīng)該一一對應(yīng)。12/9/202220其中格式控制字符用于指定輸出格式。格式控制字符可由格例EX4_1輸出兩個數(shù)的值。voidmain(){ inta=88,b=89; printf(“%d%d\n”,a,b); printf("%d,%d\n",a,b); printf(“%c,%c\n”,a,b); printf("a=%d,b=%d\n",a,b);}12/9/202221例EX4_1輸出兩個數(shù)的值。12/9/202221由于printf是函數(shù),因此“格式控制”字符串和“輸出表列”實際上都是函數(shù)的參數(shù)。printf函數(shù)的一般形式可以表示為:
printf(參數(shù)1,參數(shù)2,參數(shù)3,…參數(shù)n);12/9/202222由于printf是函數(shù),因此“格式控制”字符串和“輸在TurboC中格式字符串的一般形式為:[標志][輸出最小寬度][.精度][長度]類型其中方括號[]中的項為可選項。各項的意義介紹如下:2、格式字符12/9/202223在TurboC中格式字符串的一般形式為:2、格式字1)、類型字符用以表示輸出數(shù)據(jù)的類型,其格式符和意義下表所示:表示輸出類型的格式字符 格式字符意義d 以十進制形式輸出帶符號整數(shù)(正數(shù)不輸出符號)o 以八進制形式輸出無符號整數(shù)(不輸出前綴0)x 以十六進制形式輸出無符號整數(shù)(不輸出前綴0X)u 以十進制形式輸出無符號整數(shù)f 以小數(shù)形式輸出單、雙精度實數(shù)e 以指數(shù)形式輸出單、雙精度實數(shù)g 以%f%e中較短的輸出寬度輸出單、雙精度實數(shù)c 輸出單個字符s 輸出字符串12/9/2022241)、類型字符用以表示輸出數(shù)據(jù)的類型,其格式符和意義下表所示2)、標志標志字符為-、+、#、空格四種,其意義下表所示:標志格式字符標志意義- 結(jié)果左對齊,右邊填空格+ 輸出符號(正號或負號)空格輸出值為正 時冠以空格,為負時冠以負號# 對c,s,d,u類無影響;對o類,在輸 出時加前綴o 對x類,在輸出時加前綴0x;對e,g,f類 當結(jié)果有小數(shù)時才給出小數(shù)點12/9/2022252)、標志12/9/2022253)、輸出最小寬度用十進制整數(shù)來表示輸出的最少位數(shù)。若實際位數(shù)多于定義的寬度,則按實際位數(shù)輸出,若實際位數(shù)少于定義的寬度則補以空格或0。4)、精度精度格式符以“.”開頭,后跟十進制整數(shù)。本項的意義是:如果輸出數(shù)字,則表示小數(shù)的位數(shù);如果輸出的是字符,則表示輸出字符的個數(shù);若實際位數(shù)大于所定義的精度數(shù),則截去超過的部分。5)、長度長度格式符為h,l兩種,h表示按短整型量輸出,l表示按長整型量輸出。12/9/2022263)、輸出最小寬度4)、精度5)、例EX4_2_1輸出各種類型數(shù)據(jù)的值。voidmain(){ inta=15;floatb=138.3576278; doublec=35648256.3645687; chard='p'; printf("a=%d,%5d,%o,%x\n",a,a,a,a); printf("b=%f,%lf,%5.4lf,%e\n",b,b,b,b); printf("c=%lf,%f,%8.4lf\n",c,c,c); printf("d=%c,%8c\n",d,d);}12/9/202227例EX4_2_1輸出各種類型數(shù)據(jù)的值。12/9/202227例EX4_2_2輸出各種類型數(shù)據(jù)的值。main(){ inta=29;floatb=1243.2341; doublec=24212345.24232; chard='h'; printf("a=%d,%5d,%o,%x\n",a,a,a,a); printf("b=%f,%lf,%5.4lf,%e\n",b,b,b,b); printf("c=%lf,%f,%8.4lf\n",c,c,c); printf("d=%c,%8c\n",d,d);}12/9/202228例EX4_2_2輸出各種類型數(shù)據(jù)的值。12/9/202228使用printf函數(shù)時還要注意一個問題,那就是輸出表列中的求值順序。不同的編譯系統(tǒng)不一定相同,可以從左到右,也可從右到左。TurboC是按從右到左進行的。如把例3_11_3改寫如下述形式:voidmain(){ inti=8; printf("%d\n%d\n%d\n%d\n%d\n%d\n", ++i,--i,i++,i--,-i++,-i--);}12/9/202229使用printf函數(shù)時還要注意一個問題,那就是輸出表列中的求例如:putchar('A'); 輸出大寫字母A putchar(x); 輸出字符變量x的值 putchar(‘\n’); 換行對控制字符則執(zhí)行 控制功能,不在屏幕上顯示使用本函數(shù)前必須要用文件包含命令:
#include<stdio.h>3、字符輸出函數(shù)putchar函數(shù)是字符輸出函數(shù),其功能是在顯示器上輸出單個字符。其一般形式為:putchar(字符變量);12/9/202230例如:putchar('A'); 輸出大寫字母A3、字符輸出例EX4_3輸出字符型數(shù)據(jù)的值。voidmain(){ chara='B',b='o',c='k'; putchar(a);putchar(b); putchar(b);putchar(c);putchar('\t'); putchar(a);putchar(b);putchar('\n'); putchar(b);putchar(c);}12/9/202231例EX4_3輸出字符型數(shù)據(jù)的值。12/9/202231四、數(shù)據(jù)輸入語句C語言的數(shù)據(jù)輸入也是由函數(shù)語句完成的。本節(jié)介紹從標準輸入設(shè)備-鍵盤上輸入數(shù)據(jù)的函數(shù)scanf和getchar。scanf函數(shù)稱為格式輸入函數(shù),即按用戶指定的格式從鍵盤上把數(shù)據(jù)輸入到指定的變量之中。12/9/202232四、數(shù)據(jù)輸入語句C語言的數(shù)據(jù)輸入也是由函數(shù)語句完成的。1scanf函數(shù)的一般形式為:scanf(“格式控制字符串”,地址表列);
1、scanf函數(shù)的一般形式scanf函數(shù)是一個標準庫函數(shù),它的函數(shù)原型在頭文件“stdio.h”中,與printf函數(shù)相同,在使用scanf函數(shù)之前必須包含“stdio.h”文件。12/9/202233scanf函數(shù)的一般形式為:1、scanf函數(shù)的一般其中,格式控制字符串的作用與printf函數(shù)相同,但不能顯示非格式字符串,也就是不能顯示提示字符串。地址表列中給出各變量的地址。地址是由地址運算符“&”后跟變量名組成的。例如,&a,&b分別表示變量a和變量b的地址。這個地址就是編譯系統(tǒng)在內(nèi)存中給a,b變量分配的地址。在C語言中,使用了地址這個概念,這是與其它語言不同的。應(yīng)該把變量的值和變量的地址這兩個不同的概念區(qū)別開來。12/9/202234其中,格式控制字符串的作用與printf函數(shù)相同,但不能顯變量的地址是C編譯系統(tǒng)分配的,用戶不必關(guān)心具體的地址是多少。變量的地址和變量值的關(guān)系如下:&a=>a<=567,a為變量名,567是變量的值,&a是變量a的地址。在賦值表達式中給變量賦值,如:a=567在賦值號左邊是變量名,不能寫地址,而scanf函數(shù)在本質(zhì)上也是給變量賦值,但要求寫變量的地址,如&a。這兩者在形式上是不同的。&是一個取地址運算符,&a是一個表達式,其功能是求變量的地址。12/9/202235變量的地址是C編譯系統(tǒng)分配的,用戶不必關(guān)心具體的地址是多少。例4_4scanf函數(shù)的使用方法voidmain(){ inta,b,c; printf("inputa,b,c\n"); scanf("%d%d%d",&a,&b,&c); printf("a=%d,b=%d,c=%d",a,b,c);}12/9/202236例4_4scanf函數(shù)的使用方法12/9/202236注意&的用法!在本例中,由于scanf函數(shù)本身不能顯示提示串,故先用printf語句在屏幕上輸出提示,請用戶輸入a、b、c的值。執(zhí)行scanf語句,則退出TC屏幕進入用戶屏幕等待用戶輸入。用戶輸入7、8、9后按下回車鍵,此時,系統(tǒng)又將返回TC屏幕。在scanf語句的格式串中由于沒有非格式字符在“%d%d%d”之間作輸入時的間隔,因此在輸入時要用一個以上的空格或回車鍵作為每兩個輸入數(shù)之間的間隔。如:789<CR>或7<CR>8<CR>9<CR>其中<CR>表示回車。最好的方法是在格式符之間用逗號分隔,即“%d,%d,%d”,在輸入數(shù)據(jù)時也以逗號間隔,如:7,8,9<CR>。12/9/202237注意&的用法!在本例中,由于scanf函數(shù)本身不能顯其中有方括號[]的項為任選項。各項的意義如下:1)、類型表示輸入數(shù)據(jù)的類型,其格式符和意義下表所示。格式 字符意義
d 輸入十進制整數(shù)
o 輸入八進制整數(shù)
x 輸入十六進制整數(shù)
u 輸入無符號十進制整數(shù)
f或e 輸入實型數(shù)(用小數(shù)形式或指數(shù)形式)
c 輸入單個字符
s 輸入字符串2、格式字符串格式字符串的一般形式為:
%[*][輸入數(shù)據(jù)寬度][長度]類型12/9/202238其中有方括號[]的項為任選項。各項的意義如下:2、格式字符3)、寬度用十進制整數(shù)指定輸入的寬度(即字符數(shù))。例如:scanf("%5d",&a);輸入:12345678只把12345賦予變量a,其余部分被截去。又如:scanf("%4d%4d",&a,&b);輸入:12345678將把1234賦予a,而把5678賦予b。2)、“*”符用以表示該輸入項讀入后不賦予相應(yīng)的變量,即跳過該輸入值。如scanf("%d%*d%d",&a,&b);當輸入為:123時,把1賦予a,2被跳過,3賦予b。12/9/2022393)、寬度2)、“*”符12/9/202239A、scanf函數(shù)中沒有精度控制,如:scanf("%5.2f",&a);是非法的。不能企圖用此語句輸入小數(shù)為2位的實數(shù)。4)、長度長度格式符為l和h,l表示輸入長整型數(shù)據(jù)(如%ld)和雙精度浮點數(shù)(如%lf)。h表示輸入短整型數(shù)據(jù)。使用scanf函數(shù)還必須注意以下幾點:B、scanf中要求給出變量地址,如給出變量名則會出錯。如scanf("%d",a);是非法的,應(yīng)改為scnaf("%d",&a);才是合法的。12/9/202240A、scanf函數(shù)中沒有精度控制,如:scanf("%5.2D、在輸入字符數(shù)據(jù)時,若格式控制串中無非格式字符,則認為所有輸入的字符均為有效字符。例如:scanf("%c%c%c",&a,&b,&c);輸入為:def則把'd'賦予a,''賦予b,'e'賦予c。只有當輸入為:def時,才能把'd'賦于a,'e'賦予b,'f'賦予c。如果在格式控制中加入空格作為間隔,如scanf("%c%c%c",&a,&b,&c);則輸入時各數(shù)據(jù)之間可加空格。C、在輸入多個數(shù)值數(shù)據(jù)時,若格式控制串中沒有非格式字符作輸入數(shù)據(jù)之間的間隔則可用空格,TAB或回車作間隔。C編譯在碰到空格,TAB,回車或非法數(shù)據(jù)(如對“%d”輸入“12A”時,A即為非法數(shù)據(jù))時即認為該數(shù)據(jù)結(jié)束。12/9/202241D、在輸入字符數(shù)據(jù)時,若格式控制串中無非格式字符,則認為所有例4_4_2scanf函數(shù)的使用方法voidmain(){ chara,b; printf("inputcharactera,b\n"); scanf("%c%c",&a,&b); printf("%c%c\n",a,b);}printf("%c%c\n",a,b);由于scanf函數(shù)"%c%c"中沒有空格,輸入MN,結(jié)果輸出只有M。而輸入改為MN時則可輸出MN兩字符,見下面的輸入運行情況。12/9/202242例4_4_2scanf函數(shù)的使用方法printf("%c例4_4_3scanf函數(shù)的使用方法voidmain(){ chara,b; printf("inputcharactera,b\n"); scanf("%c%c",&a,&b); printf("\n%c%c\n",a,b);}本例表示scanf格式控制串"%c%c"之間有空格時,輸入的數(shù)據(jù)之間可以有空格間隔。12/9/202243例4_4_3scanf函數(shù)的使用方法本例表示scF、如輸入的數(shù)據(jù)與輸出的類型不一致時,雖然編譯能夠通過,但結(jié)果將不正確。E、如果格式控制串中有非格式字符則輸入時也要輸入該非格式字符。例如:scanf("%d,%d,%d",&a,&b,&c);其中用非格式符“,”作間隔符,故輸入時應(yīng)為:5,6,7<CR>又如:scanf("a=%d,b=%d,c=%d",&a,&b,&c);則輸入應(yīng)為a=5,b=6,c=7<CR>12/9/202244F、如輸入的數(shù)據(jù)與輸出的類型不一致時,雖然編譯能夠通過,但結(jié)例4_4_4scanf函數(shù)的使用方法voidmain(){ inta; printf("inputanumber\n"); scanf("%d",&a); printf("%ld\n",a);}由于輸入數(shù)據(jù)類型為整型,而輸出語句的格式串中說明為長整型,因此輸出結(jié)果和輸入數(shù)據(jù)不符。如改動程序如下:12/9/202245例4_4_4scanf函數(shù)的使用方法由于輸入數(shù)據(jù)例4_4_5scanf函數(shù)的使用方法voidmain(){ longa; printf("inputalonginteger:\n"); scanf("%ld",&a); printf("%ld\n",a);}運行結(jié)果為:inputalonginteger:12345678901234567890當輸入數(shù)據(jù)改為長整型后,輸入輸出數(shù)據(jù)相等。12/9/202246例4_4_5scanf函數(shù)的使用方法運行結(jié)果為:inpugetchar函數(shù)的功能是從鍵盤上輸入一個字符。其一般形式為:
getchar();
3、鍵盤輸入函數(shù)通常把輸入的字符賦予一個字符變量,構(gòu)成賦值語句,如: charc;c=getchar();
12/9/202247getchar函數(shù)的功能是從鍵盤上輸入一個字符。其一般形式為例EX4_5putchar函數(shù)的使用方法#include<stdio.h>voidmain(){ charc; printf("inputacharacter\n"); c=getchar(); putchar(c);}12/9/202248例EX4_5putchar函數(shù)的使用方法12/9/202使用getchar函數(shù)還應(yīng)注意幾個問題:1、getchar函數(shù)只能接受單個字符,輸入數(shù)字也按字符處理。輸入多于一個字符時,只接收第一個字符。2、使用本函數(shù)前必須包含文件“stdio.h”。3、在TC屏幕下運行含本函數(shù)程序時,將退出TC屏幕進入用戶屏幕等待用戶輸入。輸入完畢再返回TC屏幕。12/9/202249使用getchar函數(shù)還應(yīng)注意幾個問題:12/9/20224例EX4_6輸入輸出函數(shù)的使用。voidmain(){ chara,b,c; printf("inputcharactera,b,c\n"); scanf("%c%c%c",&a,&b,&c); printf("%d,%d,%d\n%c,%c,%c\n", a,b,c,a-32,b-32,c-32);}12/9/202250例EX4_6輸入輸出函數(shù)的使用。12/9/202250例EX4_7輸出各種數(shù)據(jù)類型的字節(jié)長度。voidmain(){ inta;longb;floatf; doubled;charc; printf("%d,%d,%d,%d,%d", sizeof(a),sizeof(b),sizeof(f), sizeof(d),sizeof(c));}12/9/202251例EX4_7輸出各種數(shù)據(jù)類型的字節(jié)長度。12/9/20225五、順序結(jié)構(gòu)程序設(shè)計例EX4_8用海淪公式計算三角形的面積。海淪公式為:area=其中,據(jù)此編寫程序如下:注意:a,b,c三個數(shù)值能構(gòu)成一個三角形,否則該程序不能完成計算操作。12/9/202252五、順序結(jié)構(gòu)程序設(shè)計例EX4_8用海淪公式計算三角形的面積#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)); printf(“a=%7.2f,b=%7.2f,c=%7.2f, s=%7.2f\n”,a,b,c,s);}12/9/202253#include<stdio.h>12/9/202253例EX4_9求二次方程的根。a,b,c由鍵盤輸入,設(shè)b2-4ac>0。一元二次方程的根為:,令,則方程的要根為:,據(jù)此編寫程序如下:12/9/202254例EX4_9求二次方程的根。a,b,c由鍵盤輸入,設(shè)b2#include<stdio.h>#include<math.h>main(){ floata,b,c,disc,x1,x2,p,q; scanf(“a=%f,b=%f,c=%f”,&a,&b,&c); disc=b*b–4*a*c; p=–b/(2*a);q=sqrt(disc)/(2*a); x1=p+q;x2=p–q; printf(“\n\nx1=%5.2f\nx2=%5.2f\n”,x1,x2);}12/9/202255#include<stdio.h>12/9/202255六、本章要點
1、C語句的五種類型:表達式語句,函數(shù)調(diào)用語句,控制語句,復(fù)合語句和空語句;2、賦值語句是C語言中使用最頻繁的語句,要透澈理解,牢固掌握,熟練運用;3、數(shù)據(jù)的輸出(包括數(shù)值數(shù)據(jù)和字符數(shù)據(jù))由函數(shù)構(gòu)成,主要有格式輸出(printf函數(shù))和字符輸出(putchar函數(shù)),要著重理解格式的含義及格式控制字符的使用(P77-P78)。4、數(shù)據(jù)的輸入,目前介紹格式輸入(scanf函數(shù)P80)和字符輸入(getchar)兩類,在后續(xù)內(nèi)容中將逐步介紹。對于格式輸出和輸入兩類函數(shù),建議要多上機操作和練習(xí)。5、最簡單的C程序介紹,要了解順序程序的結(jié)構(gòu)特點,為以后進一步學(xué)習(xí)奠定一定的基礎(chǔ)。12/9/202256六、本章要點1、C語句的五種類型:表達式語句,函C程序設(shè)計數(shù)學(xué)系計算機系列課程課件之一12/9/202257C程序設(shè)計數(shù)學(xué)系計算機系列課程課件之一12/9/20221第四章順序程序設(shè)計
本章要點4.1C語句概述4.2賦值語句4.3數(shù)據(jù)輸出語句4.4數(shù)據(jù)輸入語句4.5順序結(jié)構(gòu)程序設(shè)計
12/9/202258第四章順序程序設(shè)計本章要點4.1C語句概述12/一、C語句概述
本章介紹C語言程序設(shè)計的基本方法和基本的程序語句。
和其他高級語言一樣,C語言的語句用來向計算機系統(tǒng)發(fā)出操作指令。一個語句經(jīng)編譯后產(chǎn)生若干條機器指令。一個實際程序應(yīng)當包含若干語句。應(yīng)當指出,C語句都是用來完成一定任務(wù)定的。聲明部分的內(nèi)容不應(yīng)稱為語句。一個函數(shù)包含聲明部分和執(zhí)行部分,執(zhí)行部分即由語句組成。12/9/202259一、C語句概述本章介紹C語言程序設(shè)計的基本方法和基
程序應(yīng)該包括數(shù)據(jù)描述(由聲明部分實現(xiàn))和數(shù)據(jù)操作(由語句實現(xiàn))。數(shù)據(jù)描述主要定義數(shù)據(jù)結(jié)構(gòu)(用數(shù)據(jù)類型表示)和數(shù)據(jù)初值,數(shù)據(jù)操作的任務(wù)是對已提供的數(shù)據(jù)進行加工。
從程序流程的角度來看,程序可以分為三種基本結(jié)構(gòu),即順序結(jié)構(gòu)、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)。這三種基本結(jié)構(gòu)可以組成所有的各種復(fù)雜程序。C語言提供了多種語句來實現(xiàn)這些程序結(jié)構(gòu)。本章介紹這些基本語句及其應(yīng)用,使讀者對C程序有一個初步的認識,為后面各章的學(xué)習(xí)打下基礎(chǔ)。12/9/202260程序應(yīng)該包括數(shù)據(jù)描述(由聲明部分實現(xiàn))和數(shù)據(jù)操作(由
C語句可分為以下五類:
C程序的執(zhí)行部分是由語句組成的。程序的功能也是由執(zhí)行語句實現(xiàn)的。5)、空語句1)、表達式語句2)、函數(shù)調(diào)用語句3)、控制語句
4)、復(fù)合語句12/9/202261C語句可分為以下五類:C程序的執(zhí)行部分是1、表達式語句表達式語句由表達式加上分號“;”組成。其一般形式為:表達式;執(zhí)行表達式語句就是計算表達式的值。例如:x=y+z;賦值語句,計算結(jié)果賦予變量x;y+z;加法運算語句,計算結(jié)果不能保留,無實際意義;i++;自增1語句,i值增1,值保留在i中。12/9/2022621、表達式語句表達式語句由表達式加上分號“;”組成。其一般由函數(shù)名、實際參數(shù)加上分號“;”組成。其一般形式為:函數(shù)名(實際參數(shù)表);執(zhí)行函數(shù)語句就是調(diào)用函數(shù)體并把實際參數(shù)賦予函數(shù)定義中的形式參數(shù),然后執(zhí)行被調(diào)函數(shù)體中的語句,求取函數(shù)值。(在第八章函數(shù)中再詳細介紹)例如printf("CProgram");調(diào)用庫函數(shù),輸出字符串。2、函數(shù)調(diào)用語句12/9/202263由函數(shù)名、實際參數(shù)加上分號“;”組成。其一般形式為:控制語句用于控制程序的流程,以實現(xiàn)程序的各種結(jié)構(gòu)方式。它們由特定的語句定義符組成。C語言有九種控制語句??煞殖梢韵氯悾?1)條件判斷語句:if語句,switch語句。(2)循環(huán)執(zhí)行語句:while語句,dowhile語句,for語句。(3)轉(zhuǎn)向語句:break語句,goto語句,continue語句,return語句。3、控制語句12/9/202264控制語句用于控制程序的流程,以實現(xiàn)程序的各種結(jié)構(gòu)方式。3、控把多個語句用括號{}括起來組成的一個語句稱復(fù)合語句。在程序中應(yīng)把復(fù)合語句看成是單條語句,而不是多條語句,例如: { x=y+z;a=b+c; printf(“%d,%d”,x,a); }是一條復(fù)合語句。復(fù)合語句內(nèi)的各條語句都必須以分號“;”結(jié)尾,在括號“}”外不能加分號。4、復(fù)合語句12/9/202265把多個語句用括號{}括起來組成的一個語句稱復(fù)合語只有分號“;”組成的語句稱為空語句??照Z句是什么也不執(zhí)行的語句。在程序中空語句可用來作空循環(huán)體。例如while(getchar()!='\n');本語句的功能是,只要從鍵盤輸入的字符不是回車則重新輸入。這里的循環(huán)體為空語句。5、空語句C語言允許一行寫幾個語句,也允許一個語句拆開寫在幾行上,書寫格式無固定要求,但初學(xué)時應(yīng)注意書寫格式。12/9/202266只有分號“;”組成的語句稱為空語句??照Z句是什么二、賦值語句
賦值語句的功能是將右邊表達式的值賦予左邊的變量(即將表達式的值存儲到變量所指的存儲單元中)。這里表達式的含義是廣義的,它可以是一個數(shù)值,變量或表達式。也就是說,賦值語句的右邊可以是數(shù)值或變量或表達式,而它的左邊只能是一個(僅此一個)變量,它是程序中使用最多的語句之一。賦值語句是由賦值表達式再加上分號構(gòu)成的表達式語句。其一般形式為:變量=表達式;12/9/202267二、賦值語句賦值語句的功能是將右邊表達式的值賦予左2、由于在賦值符“=”右邊的表達式也可以又是一個賦值表達式,因此,下述形式:
變量=(變量=表達式);
是成立的,從而形成嵌套的情形。將其展開之后的一般形式為:變量=變量=…=表達式;在賦值語句的使用中需要注意以下幾點:1、C語言中的賦值號“=”是一個運算符,在其他大多數(shù)語言中賦值號不作為運算符;例如:a=b=c=d=e=5;按照賦值運算符的右結(jié)合性,因此實際上等效于: e=5;d=e;c=d;b=c;a=b;12/9/2022682、由于在賦值符“=”右邊的表達式也可以又是一個賦值
4、在變量說明中,不允許連續(xù)給多個變量賦初值。如下述說明是錯誤的:inta=b=c=5;必須寫為inta=5,b=5,c=5;而賦值語句允許連續(xù)賦值。
3、注意在變量說明中給變量賦初值和賦值語句的區(qū)別。給變量賦初值是變量說明的一部分,賦初值后的變量與其后的其它同類變量之間仍必須用逗號間隔,而賦值語句則必須用分號結(jié)尾。12/9/2022694、在變量說明中,不允許連續(xù)給多個變量賦初值。如下述下述語句是合法的:if((x=y+5)>0)z=x;語句的功能是,若表達式x=y+5大于0則z=x。下述語句是非法的:if((x=y+5;)>0)z=x;因為x=y+5;是語句,不能出現(xiàn)在表達式中。
5、注意賦值表達式和賦值語句的區(qū)別。賦值表達式是一種表達式,它可以出現(xiàn)在任何允許表達式出現(xiàn)的地方,而賦值語句則不能。12/9/202270下述語句是合法的:if((x=y+5)>0)z=x;三、數(shù)據(jù)輸出語句
數(shù)據(jù)的輸入和輸出是計算機完成數(shù)據(jù)操作的關(guān)鍵,在C語言中完成數(shù)據(jù)的輸入和輸出是通過以下手段來實現(xiàn)的:
(1)、所謂輸入輸出是以計算機主機為主體而言的。從計算機向外部輸出設(shè)備(如顯示器、打印機、磁盤等)輸出數(shù)據(jù)稱為“輸出”,從外部向輸入設(shè)備(如鍵盤、鼠標、磁盤等)輸入數(shù)據(jù)稱為“輸入”,通常把這些設(shè)備稱為標準設(shè)備。12/9/202271三、數(shù)據(jù)輸出語句數(shù)據(jù)的輸入和輸出是計算機完成數(shù)據(jù)操
(2)、C語言本身不提供輸入輸出語句,輸入和輸出操作是由函數(shù)來實現(xiàn)的。在C標準函數(shù)庫中提供了一些輸入輸出函數(shù),以方便用戶使用。在C語言函數(shù)庫中有一批“標準輸入輸出函數(shù)”,它是以標準的輸入輸出設(shè)備為輸入輸出對象的。其中有printf(格式輸出),putchar(輸出字符),puts(輸出字符串),scanf(格式輸入),getchar(輸入字符),gets(輸入字符串)。12/9/202272(2)、C語言本身不提供輸入輸出語句,輸入和輸出操作(3)、在使用C語言庫函數(shù)時,要用預(yù)編譯命令“#include”將有關(guān)“頭文件”包含到用戶編寫的源程序文件中。在頭文件中包含了與用到的函數(shù)有關(guān)的信息。如在使用標準輸入輸出庫函數(shù)時要用到“stdio.h”文件,則在文件開頭應(yīng)有預(yù)編譯命令:#include<stdio.h>或#include“stdio.h”。stdio.h是standardinput&output的縮寫,h是head的縮寫。12/9/202273(3)、在使用C語言庫函數(shù)時,要用預(yù)編譯命令“#in本小節(jié)先介紹printf函數(shù)和putchar函數(shù)。printf函數(shù)稱為格式輸出函數(shù),其關(guān)鍵字最末一個字母f即為“格式”(format)之意。其功能是按用戶指定的格式,把指定的數(shù)據(jù)顯示到顯示器屏幕上。在前面的例題中我們已多次使用過這個函數(shù)。12/9/202274本小節(jié)先介紹printf函數(shù)和putchar函數(shù)。prin1、printf函數(shù)的一般形式printf函數(shù)是一個標準庫函數(shù),它的函數(shù)原型在頭文件“stdio.h”中。因此在使用printf函數(shù)之前必須包含“stdio.h”文件,即在每一個程序開頭有#include<stdio.h>語句。printf函數(shù)調(diào)用的一般形式為:
printf(“格式控制字符”,輸出表列);12/9/2022751、printf函數(shù)的一般形式printf函數(shù)是一個
其中格式控制字符用于指定輸出格式。格式控制字符可由格式字符串和非格式字符串兩種組成。格式字符串是以%開頭的字符串,在%后面跟有各種格式字符,以說明輸出數(shù)據(jù)的類型、形式、長度、小數(shù)位數(shù)等。如“%d”表示按十進制整型輸出,“%ld”表示按十進制長整型輸出,“%c”表示按字符型輸出等。后面將專門給予討論。非格式字符串在輸出時原樣照印,在顯示中起提示作用。輸出表列中給出了各個輸出項,要求格式字符串和各輸出項在數(shù)量和類型上應(yīng)該一一對應(yīng)。12/9/202276其中格式控制字符用于指定輸出格式。格式控制字符可由格例EX4_1輸出兩個數(shù)的值。voidmain(){ inta=88,b=89; printf(“%d%d\n”,a,b); printf("%d,%d\n",a,b); printf(“%c,%c\n”,a,b); printf("a=%d,b=%d\n",a,b);}12/9/202277例EX4_1輸出兩個數(shù)的值。12/9/202221由于printf是函數(shù),因此“格式控制”字符串和“輸出表列”實際上都是函數(shù)的參數(shù)。printf函數(shù)的一般形式可以表示為:
printf(參數(shù)1,參數(shù)2,參數(shù)3,…參數(shù)n);12/9/202278由于printf是函數(shù),因此“格式控制”字符串和“輸在TurboC中格式字符串的一般形式為:[標志][輸出最小寬度][.精度][長度]類型其中方括號[]中的項為可選項。各項的意義介紹如下:2、格式字符12/9/202279在TurboC中格式字符串的一般形式為:2、格式字1)、類型字符用以表示輸出數(shù)據(jù)的類型,其格式符和意義下表所示:表示輸出類型的格式字符 格式字符意義d 以十進制形式輸出帶符號整數(shù)(正數(shù)不輸出符號)o 以八進制形式輸出無符號整數(shù)(不輸出前綴0)x 以十六進制形式輸出無符號整數(shù)(不輸出前綴0X)u 以十進制形式輸出無符號整數(shù)f 以小數(shù)形式輸出單、雙精度實數(shù)e 以指數(shù)形式輸出單、雙精度實數(shù)g 以%f%e中較短的輸出寬度輸出單、雙精度實數(shù)c 輸出單個字符s 輸出字符串12/9/2022801)、類型字符用以表示輸出數(shù)據(jù)的類型,其格式符和意義下表所示2)、標志標志字符為-、+、#、空格四種,其意義下表所示:標志格式字符標志意義- 結(jié)果左對齊,右邊填空格+ 輸出符號(正號或負號)空格輸出值為正 時冠以空格,為負時冠以負號# 對c,s,d,u類無影響;對o類,在輸 出時加前綴o 對x類,在輸出時加前綴0x;對e,g,f類 當結(jié)果有小數(shù)時才給出小數(shù)點12/9/2022812)、標志12/9/2022253)、輸出最小寬度用十進制整數(shù)來表示輸出的最少位數(shù)。若實際位數(shù)多于定義的寬度,則按實際位數(shù)輸出,若實際位數(shù)少于定義的寬度則補以空格或0。4)、精度精度格式符以“.”開頭,后跟十進制整數(shù)。本項的意義是:如果輸出數(shù)字,則表示小數(shù)的位數(shù);如果輸出的是字符,則表示輸出字符的個數(shù);若實際位數(shù)大于所定義的精度數(shù),則截去超過的部分。5)、長度長度格式符為h,l兩種,h表示按短整型量輸出,l表示按長整型量輸出。12/9/2022823)、輸出最小寬度4)、精度5)、例EX4_2_1輸出各種類型數(shù)據(jù)的值。voidmain(){ inta=15;floatb=138.3576278; doublec=35648256.3645687; chard='p'; printf("a=%d,%5d,%o,%x\n",a,a,a,a); printf("b=%f,%lf,%5.4lf,%e\n",b,b,b,b); printf("c=%lf,%f,%8.4lf\n",c,c,c); printf("d=%c,%8c\n",d,d);}12/9/202283例EX4_2_1輸出各種類型數(shù)據(jù)的值。12/9/202227例EX4_2_2輸出各種類型數(shù)據(jù)的值。main(){ inta=29;floatb=1243.2341; doublec=24212345.24232; chard='h'; printf("a=%d,%5d,%o,%x\n",a,a,a,a); printf("b=%f,%lf,%5.4lf,%e\n",b,b,b,b); printf("c=%lf,%f,%8.4lf\n",c,c,c); printf("d=%c,%8c\n",d,d);}12/9/202284例EX4_2_2輸出各種類型數(shù)據(jù)的值。12/9/202228使用printf函數(shù)時還要注意一個問題,那就是輸出表列中的求值順序。不同的編譯系統(tǒng)不一定相同,可以從左到右,也可從右到左。TurboC是按從右到左進行的。如把例3_11_3改寫如下述形式:voidmain(){ inti=8; printf("%d\n%d\n%d\n%d\n%d\n%d\n", ++i,--i,i++,i--,-i++,-i--);}12/9/202285使用printf函數(shù)時還要注意一個問題,那就是輸出表列中的求例如:putchar('A'); 輸出大寫字母A putchar(x); 輸出字符變量x的值 putchar(‘\n’); 換行對控制字符則執(zhí)行 控制功能,不在屏幕上顯示使用本函數(shù)前必須要用文件包含命令:
#include<stdio.h>3、字符輸出函數(shù)putchar函數(shù)是字符輸出函數(shù),其功能是在顯示器上輸出單個字符。其一般形式為:putchar(字符變量);12/9/202286例如:putchar('A'); 輸出大寫字母A3、字符輸出例EX4_3輸出字符型數(shù)據(jù)的值。voidmain(){ chara='B',b='o',c='k'; putchar(a);putchar(b); putchar(b);putchar(c);putchar('\t'); putchar(a);putchar(b);putchar('\n'); putchar(b);putchar(c);}12/9/202287例EX4_3輸出字符型數(shù)據(jù)的值。12/9/202231四、數(shù)據(jù)輸入語句C語言的數(shù)據(jù)輸入也是由函數(shù)語句完成的。本節(jié)介紹從標準輸入設(shè)備-鍵盤上輸入數(shù)據(jù)的函數(shù)scanf和getchar。scanf函數(shù)稱為格式輸入函數(shù),即按用戶指定的格式從鍵盤上把數(shù)據(jù)輸入到指定的變量之中。12/9/202288四、數(shù)據(jù)輸入語句C語言的數(shù)據(jù)輸入也是由函數(shù)語句完成的。1scanf函數(shù)的一般形式為:scanf(“格式控制字符串”,地址表列);
1、scanf函數(shù)的一般形式scanf函數(shù)是一個標準庫函數(shù),它的函數(shù)原型在頭文件“stdio.h”中,與printf函數(shù)相同,在使用scanf函數(shù)之前必須包含“stdio.h”文件。12/9/202289scanf函數(shù)的一般形式為:1、scanf函數(shù)的一般其中,格式控制字符串的作用與printf函數(shù)相同,但不能顯示非格式字符串,也就是不能顯示提示字符串。地址表列中給出各變量的地址。地址是由地址運算符“&”后跟變量名組成的。例如,&a,&b分別表示變量a和變量b的地址。這個地址就是編譯系統(tǒng)在內(nèi)存中給a,b變量分配的地址。在C語言中,使用了地址這個概念,這是與其它語言不同的。應(yīng)該把變量的值和變量的地址這兩個不同的概念區(qū)別開來。12/9/202290其中,格式控制字符串的作用與printf函數(shù)相同,但不能顯變量的地址是C編譯系統(tǒng)分配的,用戶不必關(guān)心具體的地址是多少。變量的地址和變量值的關(guān)系如下:&a=>a<=567,a為變量名,567是變量的值,&a是變量a的地址。在賦值表達式中給變量賦值,如:a=567在賦值號左邊是變量名,不能寫地址,而scanf函數(shù)在本質(zhì)上也是給變量賦值,但要求寫變量的地址,如&a。這兩者在形式上是不同的。&是一個取地址運算符,&a是一個表達式,其功能是求變量的地址。12/9/202291變量的地址是C編譯系統(tǒng)分配的,用戶不必關(guān)心具體的地址是多少。例4_4scanf函數(shù)的使用方法voidmain(){ inta,b,c; printf("inputa,b,c\n"); scanf("%d%d%d",&a,&b,&c); printf("a=%d,b=%d,c=%d",a,b,c);}12/9/202292例4_4scanf函數(shù)的使用方法12/9/202236注意&的用法!在本例中,由于scanf函數(shù)本身不能顯示提示串,故先用printf語句在屏幕上輸出提示,請用戶輸入a、b、c的值。執(zhí)行scanf語句,則退出TC屏幕進入用戶屏幕等待用戶輸入。用戶輸入7、8、9后按下回車鍵,此時,系統(tǒng)又將返回TC屏幕。在scanf語句的格式串中由于沒有非格式字符在“%d%d%d”之間作輸入時的間隔,因此在輸入時要用一個以上的空格或回車鍵作為每兩個輸入數(shù)之間的間隔。如:789<CR>或7<CR>8<CR>9<CR>其中<CR>表示回車。最好的方法是在格式符之間用逗號分隔,即“%d,%d,%d”,在輸入數(shù)據(jù)時也以逗號間隔,如:7,8,9<CR>。12/9/202293注意&的用法!在本例中,由于scanf函數(shù)本身不能顯其中有方括號[]的項為任選項。各項的意義如下:1)、類型表示輸入數(shù)據(jù)的類型,其格式符和意義下表所示。格式 字符意義
d 輸入十進制整數(shù)
o 輸入八進制整數(shù)
x 輸入十六進制整數(shù)
u 輸入無符號十進制整數(shù)
f或e 輸入實型數(shù)(用小數(shù)形式或指數(shù)形式)
c 輸入單個字符
s 輸入字符串2、格式字符串格式字符串的一般形式為:
%[*][輸入數(shù)據(jù)寬度][長度]類型12/9/202294其中有方括號[]的項為任選項。各項的意義如下:2、格式字符3)、寬度用十進制整數(shù)指定輸入的寬度(即字符數(shù))。例如:scanf("%5d",&a);輸入:12345678只把12345賦予變量a,其余部分被截去。又如:scanf("%4d%4d",&a,&b);輸入:12345678將把1234賦予a,而把5678賦予b。2)、“*”符用以表示該輸入項讀入后不賦予相應(yīng)的變量,即跳過該輸入值。如scanf("%d%*d%d",&a,&b);當輸入為:123時,把1賦予a,2被跳過,3賦予b。12/9/2022953)、寬度2)、“*”符12/9/202239A、scanf函數(shù)中沒有精度控制,如:scanf("%5.2f",&a);是非法的。不能企圖用此語句輸入小數(shù)為2位的實數(shù)。4)、長度長度格式符為l和h,l表示輸入長整型數(shù)據(jù)(如%ld)和雙精度浮點數(shù)(如%lf)。h表示輸入短整型數(shù)據(jù)。使用scanf函數(shù)還必須注意以下幾點:B、scanf中要求給出變量地址,如給出變量名則會出錯。如scanf("%d",a);是非法的,應(yīng)改為scnaf("%d",&a);才是合法的。12/9/202296A、scanf函數(shù)中沒有精度控制,如:scanf("%5.2D、在輸入字符數(shù)據(jù)時,若格式控制串中無非格式字符,則認為所有輸入的字符均為有效字符。例如:scanf("%c%c%c",&a,&b,&c);輸入為:def則把'd'賦予a,''賦予b,'e'賦予c。只有當輸入為:def時,才能把'd'賦于a,'e'賦予b,'f'賦予c。如果在格式控制中加入空格作為間隔,如scanf("%c%c%c",&a,&b,&c);則輸入時各數(shù)據(jù)之間可加空格。C、在輸入多個數(shù)值數(shù)據(jù)時,若格式控制串中沒有非格式字符作輸入數(shù)據(jù)之間的間隔則可用空格,TAB或回車作間隔。C編譯在碰到空格,TAB,回車或非法數(shù)據(jù)(如對“%d”輸入“12A”時,A即為非法數(shù)據(jù))時即認為該數(shù)據(jù)結(jié)束。12/9/202297D、在輸入字符數(shù)據(jù)時,若格式控制串中無非格式字符,則認為所有例4_4_2scanf函數(shù)的使用方法voidmain(){ chara,b; printf("inputcharactera,b\n"); scanf("%c%c",&a,&b); printf("%c%c\n",a,b);}printf("%c%c\n",a,b);由于scanf函數(shù)"%c%c"中沒有空格,輸入MN,結(jié)果輸出只有M。而輸入改為MN時則可輸出MN兩字符,見下面的輸入運行情況。12/9/202298例4_4_2scanf函數(shù)的使用方法printf("%c例4_4_3scanf函數(shù)的使用方法voidmain(){ chara,b; printf("inputcharactera,b\n"); scanf("%c%c",&a,&b); printf("\n%c%c\n",a,b);}本例表示scanf格式控制串"%c%c"之間有空格時,輸入的數(shù)據(jù)之間可以有空格間隔。12/9/202299例4_4_3scanf函數(shù)的使用方法本例表示scF、如輸入的數(shù)據(jù)與輸出的類型不一致時,雖然編譯能夠通過,但結(jié)果將不正確。E、如果格式控制串中有非格式字符則輸入時也要輸入該非格式字符。例如:scanf("%d,%d,%d",&a,&b,&c);其中用非格式符“,”作間隔符,故輸入時應(yīng)為:5,6,7<CR>又如:scanf("a=%d,b=%d,c=%d",&a,&b,&c);則輸入應(yīng)為a=5,b=6,c=7<CR>12/9/2022100F、如輸入的數(shù)據(jù)與輸出的類型不一致時,雖然編譯能夠通過,但結(jié)例4_4_4scanf函數(shù)的使用方法voidmain(){ inta; printf("inputanumber\n"); scanf("%d",&a); printf("%ld\n",a);}
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑工程承包合同(2篇)
- 2025年度個人股權(quán)變更及分紅權(quán)轉(zhuǎn)讓合同4篇
- 2025年度個人信托產(chǎn)品購買合同樣本3篇
- 二零二五版人工智能技術(shù)研發(fā)公司并購合同3篇
- 親情記敘文800字6篇
- 二零二五年度養(yǎng)老產(chǎn)業(yè)用地租賃協(xié)議4篇
- 高級數(shù)據(jù)分析課程設(shè)計
- 2024年育嬰員(高級)理論考試題庫附答案(培訓(xùn)復(fù)習(xí)用)
- 二零二五年度苗圃苗木移植與景觀設(shè)計實施合同4篇
- 課程設(shè)計答疑記錄表
- 2025年湖北武漢工程大學(xué)招聘6人歷年高頻重點提升(共500題)附帶答案詳解
- 【數(shù) 學(xué)】2024-2025學(xué)年北師大版數(shù)學(xué)七年級上冊期末能力提升卷
- GB/T 26846-2024電動自行車用電動機和控制器的引出線及接插件
- 遼寧省沈陽市皇姑區(qū)2024-2025學(xué)年九年級上學(xué)期期末考試語文試題(含答案)
- 2024年國家工作人員學(xué)法用法考試題庫及參考答案
- 妊娠咳嗽的臨床特征
- 國家公務(wù)員考試(面試)試題及解答參考(2024年)
- 《阻燃材料與技術(shù)》課件 第6講 阻燃纖維及織物
- 2024年金融理財-擔保公司考試近5年真題附答案
- 泰山產(chǎn)業(yè)領(lǐng)軍人才申報書
- 高中語文古代文學(xué)課件:先秦文學(xué)
評論
0/150
提交評論