c語(yǔ)言第3章_第1頁(yè)
已閱讀1頁(yè),還剩27頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第3章 簡(jiǎn)單程序設(shè)計(jì),掌握C語(yǔ)言中的語(yǔ)句類(lèi)型、程序結(jié)構(gòu)掌握賦值語(yǔ)句和基本輸入/輸出函數(shù)的使用學(xué)會(huì)用正確的格式進(jìn)行簡(jiǎn)單的輸入輸出程序設(shè)計(jì),學(xué)習(xí)目標(biāo),3.1 C語(yǔ)言語(yǔ)句,表達(dá)式語(yǔ)句 表達(dá)式; 例如: x=100 /*表達(dá)式*/ x=100; /*語(yǔ)句*/函數(shù)調(diào)用語(yǔ)句 函數(shù)名(參數(shù)列表);例如:printf("Hello World!\n");,3.1 C語(yǔ)言語(yǔ)句,控制語(yǔ)句 控制語(yǔ)句用于完

2、成一定的控制功能,以實(shí)現(xiàn)程序的結(jié)構(gòu)化。 C語(yǔ)言有9種控制語(yǔ)句,可分為以下3類(lèi): 條件判斷語(yǔ)句:if語(yǔ)句、switch語(yǔ)句。轉(zhuǎn)向語(yǔ)句:break語(yǔ)句、continue語(yǔ)句、goto語(yǔ)句、return語(yǔ)句。循環(huán)語(yǔ)句:for語(yǔ)句、while語(yǔ)句、do-while語(yǔ)句。,3.1 C語(yǔ)言語(yǔ)句,復(fù)合語(yǔ)句 復(fù)合語(yǔ)句是用花括號(hào)將若干語(yǔ)句組合在一起,又稱(chēng)分程序 例如,下面是一個(gè)復(fù)合語(yǔ)句:{ i=5; printf("

3、;%d\n",i);} 空語(yǔ)句 ;,3.2 程序結(jié)構(gòu),3.2.1 程序結(jié)構(gòu)簡(jiǎn)介 在C語(yǔ)言中,程序結(jié)構(gòu)一般分為順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)。任何復(fù)雜的程序都是由這3種基本結(jié)構(gòu)組成的。 【例3-1】簡(jiǎn)單的程序結(jié)構(gòu)。#include void main( ){ int a,b,c; /*聲明部分,定義了3個(gè)整型變量*/ a=100; /*執(zhí)行部分開(kāi)始,直到最后的花括號(hào)*/

4、 b=200; c=a+b; printf("a+b=%d\n",c);},3.2 程序結(jié)構(gòu),【例3-2】由多個(gè)函數(shù)構(gòu)成的程序結(jié)構(gòu)。#include void main() /*主函數(shù)*/{ int a,b,c; /*聲明部分,定義變量的類(lèi)型*/ scanf("%d,%d",&a,&b); /*通過(guò)輸入函數(shù),給變量a、b

5、賦值*/ c=sum(a,b); /*調(diào)用sum函數(shù),將函數(shù)值賦給變量c*/ printf("a+b=%d\n",c); /*輸出變量c的值*/}int sum(int a,int b) /*定義一個(gè)sum函數(shù)*/{ int c; c=a+b; return (c); /*將變量c的值通過(guò)返回語(yǔ)句帶回調(diào)用處*/},3.2 程序結(jié)構(gòu),3.2.

6、2 順序結(jié)構(gòu) 程序運(yùn)行時(shí)按語(yǔ)句書(shū)寫(xiě)的次序依次執(zhí)行 最簡(jiǎn)單、最基本的結(jié)構(gòu) 【例3-3】分析下面程序結(jié)構(gòu)。#include void main(){ int a,b,c; scanf("%d,%d",&a,&b); c=a+b; printf("c=%d\n",c); },3.3 賦值語(yǔ)句,3.3.1 基本賦值語(yǔ)句變量 = 表達(dá)式;

7、正確的賦值語(yǔ)句: a=100;a=a+200; /*兩個(gè)賦值語(yǔ)句,最后a變成300*/ a=b=c=100; /*相當(dāng)于 a=(b=c=100); */ c=(a=100,b=a,a+b);/*右邊是逗號(hào)表達(dá)式*/錯(cuò)誤的賦值語(yǔ)句: c+2=a+b; /*左邊不是變量名,是表達(dá)式*/ 賦值運(yùn)算符“=”可以理解成?,例如:c=a+b可以看成:c ? a+b。,3.3 賦值語(yǔ)句,3.3.2

8、復(fù)合賦值語(yǔ)句 a+=3; /*相當(dāng)于a=a+3 */b-=6; /*相當(dāng)于b=b-6 */c/=2; /*相當(dāng)于c=c/2 */在構(gòu)造以上賦值語(yǔ)句之前,變量必須已經(jīng)初始化或賦值。下面的程序是錯(cuò)誤的:int a;a+=10; 因?yàn)閍+=10相當(dāng)于a=a+10,而右邊表達(dá)式中的a是剛剛定義的,還沒(méi)有具體的值。,3.4 數(shù)據(jù)輸入與輸出,數(shù)據(jù)輸入指從輸入設(shè)備(例如鍵盤(pán)、磁盤(pán)、光盤(pán)、掃描儀等)向計(jì)算機(jī)輸送。數(shù)據(jù)輸出

9、指從計(jì)算機(jī)向外部輸出設(shè)備(例如顯示器、打印機(jī)、磁盤(pán)等)輸送數(shù)據(jù)。C語(yǔ)言本身不提供輸入輸出語(yǔ)句,其數(shù)據(jù)的輸入和輸出功能是由函數(shù)來(lái)實(shí)現(xiàn)的 。#include printf(格式輸出)、scanf(格式輸入)、putchar(輸出字符),getchar(輸入字符)Turbo C中允許在使用這兩個(gè)函數(shù)時(shí)不用#include命令 使用數(shù)學(xué)函數(shù)庫(kù)時(shí),要用到math.h文件,3.4 數(shù)據(jù)輸入與輸出,3.4.1 格式化輸出函數(shù)print

10、f功能是向系統(tǒng)指定的設(shè)備輸出若干個(gè)任意類(lèi)型的數(shù)據(jù) 調(diào)用形式 printf(格式控制字符串,輸出列表); 格式控制字符串是用雙引號(hào)括起來(lái)的字符串,它包括兩個(gè)信息: 格式說(shuō)明。由“%”和格式字符組成,如%d、%c、%f等。它的作用是將要輸出的數(shù)據(jù)轉(zhuǎn)化成指定的格式輸出,格式說(shuō)明都是由“%”字符開(kāi)始的。一般字符?;蛘叻Q(chēng)為非格式說(shuō)明符,即按原樣輸出的字符。,格式:printf(“格式控制串”,輸出表)功能:按指定格式向顯示器輸出

11、數(shù)據(jù)返值:正常,返回輸出字節(jié)數(shù);出錯(cuò),返回EOF(-1),輸出表:要輸出的數(shù)據(jù)(可以沒(méi)有,多個(gè)時(shí)以“,”分隔)格式控制串:包含兩種信息格式說(shuō)明: %[修飾符]格式字符 ,用于指定輸出格式普通字符或轉(zhuǎn)義序列:原樣輸出格式字符,格式輸出函數(shù),3.4 數(shù)據(jù)輸入與輸出,輸出列表是需要輸出的變量、函數(shù)、表達(dá)式。例如:printf("a+b=%d\n",c);“%d”是格式說(shuō)明,用來(lái)控制輸出項(xiàng)c的輸出格式。

12、“a+b=”和“\n”都是一般字符,原樣輸出,“\n”是轉(zhuǎn)義字符,代表?yè)Q行符。假設(shè)c為300,則輸出結(jié)果為:a+b=300,3.4 數(shù)據(jù)輸入與輸出,格式說(shuō)明 %[標(biāo)志][最小寬度][.精度][長(zhǎng)度] 類(lèi)型[ ]表示可選項(xiàng) [標(biāo)志] 可以是-、+、0,3.4 數(shù)據(jù)輸入與輸出,[最小寬度]:十進(jìn)制整數(shù),表示輸出的最少位數(shù)。 [.精度]:“.”加上十進(jìn)制整數(shù)n,其含義是:如果輸出的是數(shù)值,則該數(shù)表示小數(shù)位數(shù),若實(shí)際小數(shù)

13、位數(shù)大于該值,則超出部分四舍五入;如果輸出的是字符,則表示輸出字符的個(gè)數(shù)。[長(zhǎng)度]:可以是h、l。h表示按短整型量輸出,l表示按長(zhǎng)整型量或雙精度量輸出。,int a=567;printf ( “%d”,a);,int a=255;printf(“%x”,a);,int a=65;printf(“%o”,a);,int a=567;printf(“%u”,a);,char a=65;printf(“%c”,a);,printf(“%s”

14、,“ABC”);,float a=567.789;printf(“%e”,a);,float a=567.789;printf(“%f”,a);,float a=567.789;printf(“%g”,a);,printf(“%%”);,567,ff,101,567,A,ABC,5.677890e+02,567.789000,567.789,%,說(shuō)明格式字符要用小寫(xiě)格式字符與輸出項(xiàng)個(gè)數(shù)應(yīng)相同,按先后順序一一對(duì)應(yīng)輸出轉(zhuǎn)換:格式字符

15、與輸出項(xiàng)類(lèi)型不一致,自動(dòng)按指定格式輸出,表格,,,,,.n,對(duì)實(shí)數(shù),指定小數(shù)點(diǎn)后位數(shù)(四舍五入),修飾符,功 能,,m,輸出數(shù)據(jù)域?qū)?數(shù)據(jù)長(zhǎng)度<m,左補(bǔ)空格;否則按實(shí)際輸出,輸出數(shù)據(jù)在域內(nèi)左對(duì)齊(缺省右對(duì)齊),-,,指定在有符號(hào)數(shù)的正數(shù)前顯示正號(hào)(+),+,輸出數(shù)值時(shí)指定左面不使用的空位置自動(dòng)填0,0,在八進(jìn)制和十六進(jìn)制數(shù)前顯示前導(dǎo)0,0x,#,在d,o,x,u前,指定輸出精度為long型

16、在e,f,g前,指定輸出精度為double型,l,,,,,,,附加格式說(shuō)明符(修飾符),對(duì)字符串,指定實(shí)際輸出位數(shù),例 int a=1234; float f=123.456; printf(“%08d\n”,a); printf(“%010.2f\n”,f); printf(“%0+8d\n”,a); printf(“0+10.2f\n”,f);,

17、0 、+,例 int a=123; printf(“%o,%#o,%X,%#X\n”,a,a,a,a);,例 #,例 long a=65536; printf(“%d,%8ld\n”,a, a);,例,//00001234,//0000123.46,//000+1234,//000+123.56,//173,0173,7B,0X7B,//0, 65536,例,格式:getchar( )功能:從鍵盤(pán)讀

18、一字符返值:正常,返回讀取的代碼值;出錯(cuò),返回EOF(-1),字符輸入函數(shù),例,/*ch3_2.c*/#include main(){ int c; printf("Enter a character:"); c=getchar(); printf("%c--->hex%x\n",c,c);},運(yùn)行結(jié)果:Enter a character:A?A--->

19、;hex41,數(shù)據(jù)輸入,格式: scanf(“格式控制串”,地址表)功能:按指定格式從鍵盤(pán)讀入數(shù)據(jù),存入地址表指定的 存儲(chǔ)單元中,并按回車(chē)鍵結(jié)束返值:正常,返回輸入數(shù)據(jù)個(gè)數(shù),地址表:變量的地址,常用取地址運(yùn)算符&格式字符:d,i,o,x,u,c,s,f,e,例 scanf(“%d”,&a); 輸入:10 ? 則 a=10,例 scanf(“%x”,&a)

20、; 輸入:11 ? 則 a=17,格式輸入函數(shù),附加格式說(shuō)明符(修飾符),,,,,l,修飾符,功 能,,h,m,,*,,,用于d,o,x前,指定輸入為short型整數(shù),用于d,o,x前,指定輸入為long型整數(shù),用于e,f前,指定輸入為double型實(shí)數(shù),指定輸入數(shù)據(jù)寬度,遇空格或不可轉(zhuǎn)換字符則結(jié)束,抑制符,指定輸入項(xiàng)讀入后不賦給變量,,例 scanf(“%4d

21、%2d%2d”,&yy,&mm,&dd); 輸入 20111015 ? 則2011?yy, 10 ?mm, 15 ?dd,修飾符功能,一般以空格、TAB或回車(chē)鍵作為分隔符其它字符做分隔符:格式串中兩個(gè)格式符間字符,例 scanf(“%d%o%x”,&a,&b,&c); printf(“a=%d,b=%d,c=%d\n”,a,b,c); 輸

22、入 123 123 123? 輸出 a=123,b=83,c=291,例 scanf(“%d:%d:%d”,&h,&m,&s); 輸入 12:30:45? 則12 ?h, 30 ?m, 45 ?s,例 scanf(“%d,%d”,&a,&b) 輸入 3,4 ? 則3?a, 4 ?b,例 scanf(“a=%d,

23、b=%d,c=%d”,&a,&b,&c); 輸入 a=12,b=24,c=36 ?,,輸入分隔符的指定,用“%c”格式符時(shí),空格和轉(zhuǎn)義字符作為有效字符輸入,如 scanf(“%c%c%c”,&c1,&c2,&c3); 若輸入abc? 則a?c1,  ?c2, b ?c3,輸入數(shù)據(jù)時(shí),遇以下情況認(rèn)為該數(shù)據(jù)結(jié)束: 遇空格、TAB、或回車(chē) 遇

24、寬度結(jié)束 遇非法輸入,如 scanf(“%d%c%f”,&a,&b,&c); 若輸入1234a123o.26 ? 則 1234 ?a, ‘a(chǎn)’ ?b, 123 ?c,輸入函數(shù)留下的“垃圾”:,例 int x; char ch; scanf(“%d”,&x); ch=getchar(); printf(“x=%d,ch=%d\n”

25、,x,ch);執(zhí)行:123?輸出:x=123,ch=10,例 int x; char ch; scanf(“%d”,&x); scanf(“%c”,&ch); printf(“x=%d,ch=%d\n”,x,ch);執(zhí)行:123?輸出:x=123,ch=10,解決方法:(1)用getchar()清除(2)用函數(shù)fflush(stdin)清除全部剩余內(nèi)容 (3

26、) 用格式串中空格或“%*c”來(lái)“吃掉”,例 int x; char ch; scanf(“%d”,&x); scanf(“ %c”,&ch);或 scanf(“%*c%c”,&ch);,,說(shuō)明:,/*ch3_3.c*/#include #include main(){ float a,b,c,s,area; scanf("%f,%f,%

27、f",&a,&b,&c); s=1.0/2*(a+b+c); 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); printf("area=%7.2f\n",area);},,輸入:3,4,6 ?輸出:a=

28、 3.00, b= 4.00, c= 6.00 s= 6.50 area= 5.33,例 輸入三角形邊長(zhǎng),求面積,,/*ch3_4.c*/#include "stdio.h"main(){ char c1,c2; c1=getchar(); printf("%c,%d\n",c1,c1); c

29、2=c1+32; printf("%c,%d\n",c2,c2);},輸入:A ?輸出:A,65 a,97,例 從鍵盤(pán)輸入大寫(xiě)字母,用小寫(xiě)字母輸出,【例3-10】從鍵盤(pán)上輸入兩個(gè)整數(shù)放入變量a和b中,編程將這兩個(gè)變量中的數(shù)據(jù)交換,#include void main(){ int a,b,t; a=3;b=5; t=a;a=b;b=t; printf

30、("a=%d,b=%d\n",a,b);},3.8 案例:求一元二次方程的根,【例3-12】設(shè)計(jì)程序計(jì)算方程的解。其中a、b、c用scanf函數(shù)輸入(設(shè)為2、3、1 )【分析】由數(shù)學(xué)知識(shí)可知:求ax2+bx+c=0的根可用求根公式。即當(dāng)b2-4ac≥0時(shí),方程的兩個(gè)根可用如下公式進(jìn)行求解:,,#include #include void main(){ float a,b,c,d,x1,x2;

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論