版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第3章 順序程序設(shè)計(jì),1. 目的、要求 掌握數(shù)據(jù)的輸入和輸出函數(shù)scanf(),printf(),getchar(),putchar()。2. 重點(diǎn)、難點(diǎn) 數(shù)據(jù)的格式輸入輸出及其應(yīng)用。,一個(gè)c程序由若干個(gè)源程序文件組成,每個(gè)源程序文件又由預(yù)編譯命令和若干個(gè)函數(shù)組成,每個(gè)函數(shù)包括說明部分和執(zhí)行部分(語句),由此介紹幾種語句。 通過示例介紹函數(shù)scanf(),printf(),getcha
2、r(),putchar()的應(yīng)用場合及其格式參數(shù)的使用方法。,3. 講課思路,C程序結(jié)構(gòu),數(shù)據(jù)描述:由數(shù)據(jù)定義部分實(shí)現(xiàn),主要定義數(shù)據(jù)結(jié)構(gòu)(用數(shù)據(jù)類型表示)和初值。數(shù)據(jù)操作:由語句來實(shí)現(xiàn),其任務(wù)是對已提供的數(shù)據(jù)進(jìn)行加工。,C語句可以分為下列5類:1)控制語句:用于完成一定的控制功能。 注意“()”和“~”的書寫意義,如: if () ~ else ~ 可以寫成:
3、 if (x>y) z=x;else z=y;可見:“()”:表示其中是一個(gè)條件; “ ~ ”:表示內(nèi)嵌的語句。,2)函數(shù)調(diào)用語句:由一次函數(shù)調(diào)用加一個(gè)分號構(gòu)成。如: printf(“This is a C statement.”);3)表達(dá)式語句:由表達(dá)式加上分號構(gòu)成。4)空語句:只有一個(gè)分號,什么都不做。5)復(fù)合語句:用“{}”括
4、起來的語句,又稱為分程序。如: { c=a+b; d=100*c; printf(“%f”,c); },C沒有固定的書寫格式要求,允許一行寫幾個(gè)語句,也允許將一個(gè)語句寫在幾行上。,賦值語句,賦值語句由賦值表達(dá)式和一個(gè)分號構(gòu)成。賦值表達(dá)式可以包括在其他表達(dá)式之中。如:if((a=b)>
5、;0)t=a;其作用是先將b的值賦給a,再判斷a是否大于零。注意:a=b是表達(dá)式而不是語句,下列寫法錯(cuò)誤:if((a=b;)>0)t=a;,數(shù)據(jù)的輸入和輸出,C語言不提供輸入輸出語句,所有輸入輸出操作都是由函數(shù)來實(shí)現(xiàn)的。,注意:不同的計(jì)算機(jī)系統(tǒng)提供的函數(shù) 數(shù)量、名字和功能不完全相同。,使用(Turbo c允許除printf 和scanf 函數(shù)以外)任何標(biāo)準(zhǔn)I/O庫函數(shù),都應(yīng)在程序前加上預(yù)編譯命令
6、include。,putchar函數(shù)(字符輸出函數(shù)),注意:使用putchar函數(shù)時(shí),要用預(yù)編譯命令“#include” 將“stdio.h”文件包括到用戶源文件中。,例:1)putchar(getchar()); 2)If ((ch=getchar ()) !=‘#’) {……} 3)While(( ch=getchar ()) !=‘#’) {……},不是“#”就執(zhí)行指定的操作,,getchar函
7、數(shù)(字符輸入函數(shù)),注意:使用getchar函數(shù)時(shí),要用預(yù)編譯命令“#include” 將“stdio.h”文件包括到用戶源文件中。,getchar()函數(shù)得到的字符可以賦給字符變量或整型變量。getchar()函數(shù)得到的字符也可不賦給其他變量,而直接,作為表達(dá)式的一部分。如putchar(getchar ()) ;,getchar()函數(shù)只能接受一個(gè)字符。,[例]:字符輸入輸出函數(shù) :小寫字母變大寫,#include main
8、(){ char ch1,ch2='b'; ch1=getchar(); if(ch1>='a' && ch1<='z') ch2=ch1-32; putchar(ch1); putchar('\n'); putchar(ch2); putchar('\n');},輸入 A輸出
9、 A b,輸入 a輸出 a A,運(yùn)行結(jié)果:,格式:printf(“格式控制串”,輸出列表)功能:按指定格式向顯示器輸出數(shù)據(jù),輸出表:要輸出的數(shù)據(jù)(可以沒有,多個(gè)時(shí)以“,”分隔)格式控制串:包含兩種信息 格式說明:%[修飾符]格式字符 ,用于指定輸出格式 普通字符或轉(zhuǎn)義序列:原樣輸出,格式輸出函數(shù),printf 函數(shù)(格式輸出函數(shù)) 格式:print
10、f(格式控制,輸出表列),因?yàn)椤案袷娇刂啤弊址汀拜敵霰砹小倍际呛瘮?shù)參數(shù)所以printf函數(shù)可表示成下列通用形式:,格式字符,printf格式字符,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”,“
11、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,%,說明格式字符要用小寫格式字符與輸出項(xiàng)個(gè)數(shù)應(yīng)相同,按先后順序一一對應(yīng)輸出轉(zhuǎn)換:格式字符與輸
12、出項(xiàng)類型不一致,自動(dòng)按指定格式輸出,,,表格,,,,,.n,對實(shí)數(shù),指定小數(shù)點(diǎn)后位數(shù)(四舍五入),修飾符,功 能,,m,輸出數(shù)據(jù)域?qū)?數(shù)據(jù)長度<m,左補(bǔ)空格;否則按實(shí)輸出,輸出數(shù)據(jù)在域內(nèi)左對齊(缺省右對齊),-,,指定在有符號數(shù)的正數(shù)前顯示正號(+),+,輸出數(shù)值時(shí)指定左面不使用的空位置自動(dòng)填0,0,在八進(jìn)制和十六進(jìn)制數(shù)前顯示前導(dǎo)0,0x,#,在d,o,x,u前,指定輸出精度為long型在
13、e,f,g前,指定輸出精度為double型,l,,,,,,附加格式說明符(修飾符),對字符串,指定實(shí)際輸出位數(shù),,1、d格式符:按有符號十進(jìn)制格式輸出。,%d 輸出數(shù)字長度為變量數(shù)值的實(shí)際長度%md 輸出m位(不足時(shí)左補(bǔ)空格,大于m位時(shí)按實(shí)際長度輸出)%ld,%mld l(小寫字母L)表示輸出“長整型”數(shù)據(jù)%0md,%0mld 0(數(shù)字0)表示位數(shù)不足m時(shí)補(bǔ)0注:%后面的m(位數(shù)控制)、0(位數(shù)不足補(bǔ)0)對于其他格式符也適用。
14、,合法的printf()函數(shù):,1.printf(“I am a student.\n”);2.printf(“%d”,3+2);3.printf(“a=%d b=%5d\n”,a,a+3);,注意:格式字符必須與輸出列表中輸出項(xiàng)的數(shù)據(jù)類型一致,且個(gè)數(shù)相同。,例:格式輸出,#includemain(){ int i=123;long j=123456; printf("i=%d,i=%5d,i=%-5d,i=%2
15、d\n",i,i,i,i); printf("j=%ld,j=%8ld,j=%5ld\n",j,j,j);},運(yùn)行結(jié)果: i=123,i= 123,i=123 ,i=123 j=123456,j= 123456,j=123456,s格式符:以字符串格式輸出,%s 例、printf("%s","CHINA");%ms m指
16、定寬度(不足時(shí)左補(bǔ)空格,大于時(shí)按實(shí)際寬度輸出,即右對齊)%-ms 左對齊,不足m時(shí)右補(bǔ)空格%m.ns 輸出占m個(gè)字符位置,其中字符數(shù)最多n個(gè),左補(bǔ)空格%-m.ns 同上,右補(bǔ)空格,%f 按實(shí)數(shù)格式輸出,整數(shù)部分按實(shí)際位數(shù)輸出,6位小數(shù) %m.nf 總位數(shù)m(含小數(shù)點(diǎn)),其中n位小數(shù),右對齊 %-m.nf 同上,左對齊,f格式符:按實(shí)數(shù)格式輸出,#includemain(){ printf("%s,%
17、5s,%10s", "Internet", "Internet", "Internet"); printf("%10.5s,%-10.5s,%4.5s\n","Internet","Internet","Internet");},例:格式字符,運(yùn)行結(jié)果: Internet, Int
18、ernet, Internet , Inter,Inter ,Inter,域?qū)捙c精度的應(yīng)用實(shí)例,……float a=1.27;printf(“%08.1f”,a);……,000001.3,輸出結(jié)果,……printf(“|%-15s|%6.2f| \n”,”ZHANG WEI”,165.35);printf (“|%-15s|%6.2f| \n”,”LI CHANG”,82.0);……,|ZHANG W
19、EI |165.35||LI CHANG | 82.00|,輸出結(jié)果,例 int a=1234; float f=123.456; printf(“%08d\n”,a); printf(“%010.2f\n”,f); printf(“%0+8d\n”,a);
20、 printf(“0+10.2f\n”,f);,0 、+,例 int a=123; printf(“%o,%#o,%X,%#X\n”,a,a,a,a);,例 #,例 long a=65536; printf(“%d,%8ld\n”,a, a);,例 L,//00001234,//0000123.46,//000+1234,//000+123.56,//173,0173,7B,0X7B,
21、//0, 65536,例,scanf 函數(shù)(格式輸入函數(shù)),因此,scanf 函數(shù)實(shí)際是將數(shù)據(jù)傳送到地址參數(shù)所指定的內(nèi)存中。 求地址運(yùn)算符&得到的是符號地址,并且是變量所占存儲空間的首地址。編譯時(shí)將符號地址轉(zhuǎn)換為實(shí)際地址。,格式:getchar( )功能:從鍵盤讀一字符,字符輸入函數(shù),例,#include main(){ int c; printf("Enter a characte
22、r:"); c=getchar(); printf("%c--->hex%x\n",c,c);},運(yùn)行結(jié)果:Enter a character:A?A--->hex41,數(shù)據(jù)輸入,格式: scanf(“格式控制串”,地址表)功能:按指定格式從鍵盤讀入數(shù)據(jù),存入地址表指定的 存儲單元中,并按回車鍵結(jié)束返值:正常,返回輸入數(shù)據(jù)個(gè)數(shù),地址表:變量的地址,常用取地址運(yùn)算
23、符&格式字符:d,o,x,u,c,s,f,e,例 scanf(“%d”,&a); 輸入:10 ? 則 a=10,例 scanf(“%x”,&a); 輸入:11 ? 則 a=17,格式輸入函數(shù),附加格式說明符(修飾符),,,,,l,修飾符,功 能,,h,m,*,,,用于d,o,x前,指定輸入為sho
24、rt型整數(shù),用于d,o,x前,指定輸入為long型整數(shù),用于e,f前,指定輸入為double型實(shí)數(shù),指定輸入數(shù)據(jù)寬度,遇空格或不可轉(zhuǎn)換字符則結(jié)束,抑制符,指定輸入項(xiàng)讀入后不賦給變量,,例 scanf(“%4d%2d%2d”,&yy,&mm,&dd); 輸入 19991015 ? 則1999?yy, 10 ?mm, 15 ?dd,修飾符功能,一般以空格、TAB或回車鍵作為分隔符其它字符
25、做分隔符:格式串中兩個(gè)格式符間字符,例 scanf(“%d%o%x”,&a,&b,&c); printf(“a=%d,b=%d,c=%d\n”,a,b,c); 輸入 123 123 123? 輸出 a=123,b=83,c=291,例 scanf(“%d:%d:%d”,&h,&m,&s); 輸入 12:30:45?
26、 則12 ?h, 30 ?m, 45 ?s,例 scanf(“%d,%d”,&a,&b) 輸入 3,4 ? 則3?a, 4 ?b,例 scanf(“a=%d,b=%d,c=%d”,&a,&b,&c); 輸入 a=12,b=24,c=36 ?,,輸入分隔符的指定,,,#include "stdio.h"main(){ char
27、 c1,c2; c1=getchar(); printf("%c,%d\n",c1,c1); c2=c1+32; printf("%c,%d\n",c2,c2);},輸入:A ?輸出:A,65 a,97,例 從鍵盤輸入大寫字母,用小寫字母輸出,scanf格式字符,scanf的格式說明與printf函數(shù)相似,以%開始格式字符結(jié)束。,附加格
28、式說明符,用在%和格式字符之間。,注意:指定輸入數(shù)據(jù)的寬度時(shí)沒有n。,輸入多個(gè)數(shù)據(jù)時(shí),兩個(gè)數(shù)據(jù)之間可以用下列方法分隔: 1)當(dāng)輸入數(shù)據(jù)流中的數(shù)據(jù)類型與格式字符不符,認(rèn)為本項(xiàng)數(shù)據(jù)輸入結(jié)束;,[例]:輸入數(shù)據(jù)流的分隔,#includemain(){ int a; char b; float c; printf("input a b c:"); scanf("%
29、d%c%f",&a,&b,&c); printf("a=%d,b=%c,c=%f \n",a,b,c);},輸入1234r1234.567 a b c,,,,scanf("%d %c %f",&a,&b,&c);,2)根據(jù)格式項(xiàng)中的域?qū)挿指魯?shù)據(jù);,[例:輸入數(shù)據(jù)流的分隔,main(){
30、 int a; float b,c; scanf("%2d%3f%4f",&a,&b,&c); printf("a=%d,b=%f,c=%f \n",a,b,c);},輸入12345678987654321 則輸出:,a=12 b=345.000000 c=6789.000000,3)使用分隔符分隔:空格、跳格鍵、回車等。,
31、[例]:輸入數(shù)據(jù)流的分隔,#includemain(){ int a; float b,c; scanf("%d%f%f",&a,&b,&c); printf("a=%d,b=%f,c=%f \n",a,b,c);},輸入12 345 6789 87654321 則輸出:,a=12 b=345.000000
32、 c=6789.000000,4) 使用自己指定的非格式字符來分隔數(shù)據(jù),如“,”。,[例]:輸入數(shù)據(jù)流的分隔,#includemain(){ int a; float b,c; scanf("%d,%f,%f",&a,&b,&c); printf("a=%d,b=%f,c=%f \n",a,b,c);},輸入12345,678,976.38
33、 則輸出:,a=12345 b=678.000000 c=976.380000,[例]:輸入數(shù)據(jù)流的分隔,#includemain(){ int a; float b,c; scanf("a=%d,b=%f,c=%f",&a,&b,&c); printf("a=%d,b=%f,c=%f \n",a,b,c);},輸入a=
34、12345,b=678,c=976.38 則輸出:,a=12345 b=678.000000 c=976.380000,4) 使用自己指定的非格式字符來分隔數(shù)據(jù),如“a= ,”。,抑制字符* 虛讀,即按格式說明讀入的數(shù)據(jù)不送給任何變量。,[例]:scanf的虛讀,#includemain(){ int a; float b; scanf("%3d%*4d%f
35、",&a,&b); printf("a=%d,b=%f \n",a,b);},則:a=123 b=8765.43 4567不送任何變量,輸入:12345678765.43,scanf 函數(shù)的結(jié)束: 正常結(jié)束:格式項(xiàng)用完。 非正常結(jié)束:輸入數(shù)據(jù)流與格式項(xiàng)不匹配。scanf 函數(shù)的返回值: 輸入數(shù)據(jù)流與格式項(xiàng)成功匹配
36、的項(xiàng)數(shù)。,[例]:scanf的返回值,#includemain(){ int a,b,c; printf("%d\n",scanf("%3d-%2d-%4d",&a,&b,&c)); printf("a=%d,b=%d,c=%d \n",a,b,c);},輸出:3 a=123,b=45,c=6789,輸入
37、:123-45-6789,順序結(jié)構(gòu)程序設(shè)計(jì)舉例,[例4.10]:已知三邊求三角形面積,#include#include main(){float a,b,c,s,area; scanf("%f,%f,%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
38、.2f, c=%7.2f, s=%7.2f\n",a,b,c,s); printf("area=%7.2f\n",area);},輸入:3,4,6,area=□ □ □5.33,[例4.11]:大寫改小寫輸出,#include main(){char c1,c2; c1=getchar(); printf("輸入大寫字母為%c,ASCII碼是%d\n",c1,c1);
39、c2=c1+32; printf("對應(yīng)小寫字母為%c,ASCII碼是%d\n",c2,c2);},將鍵盤輸入的大寫字母改用小寫字母輸出,同時(shí)輸出其對應(yīng)的ASCII碼值。,[例4.12]:求一元二次方程根(假定為實(shí)根),#include main(){ float a,b,c,disc,x1,x2,p,q; scanf("a=%f,b=%f,c=%f",&a,&b,&a
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 實(shí)驗(yàn)2 順序結(jié)構(gòu)程序設(shè)計(jì)
- 順序結(jié)構(gòu)程序設(shè)計(jì)
- 語言順序結(jié)構(gòu)程序設(shè)計(jì)
- 程序設(shè)計(jì)初步順序結(jié)構(gòu)教學(xué)設(shè)計(jì)
- 實(shí)驗(yàn)二 順序結(jié)構(gòu)、分支結(jié)構(gòu)程序設(shè)計(jì)
- vb課程設(shè)計(jì)之順序結(jié)構(gòu)程序設(shè)計(jì)
- 最簡單的c程序設(shè)計(jì)――順序程序設(shè)計(jì)
- 初識python程序設(shè)計(jì)的順序結(jié)構(gòu)和循環(huán)結(jié)構(gòu)
- c語言 第3講順序結(jié)構(gòu)程序設(shè)計(jì)
- 4最簡單的c程序設(shè)計(jì)順序程序設(shè)計(jì)1
- 一順序與分支程序設(shè)計(jì)
- 程序設(shè)計(jì)教案 程序設(shè)計(jì)——數(shù)據(jù)結(jié)構(gòu)
- [教育]運(yùn)算符與順序程序設(shè)計(jì)
- 第四章 順序程序設(shè)計(jì)
- 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)
- 選擇結(jié)構(gòu)程序設(shè)計(jì)
- 基本結(jié)構(gòu)程序設(shè)計(jì)
- 微機(jī)原理順序、分支、循環(huán)、子程序設(shè)計(jì)
- 《c語言程序設(shè)計(jì)》實(shí)驗(yàn)設(shè)計(jì)習(xí)題答案順序結(jié)構(gòu)與邏輯運(yùn)算
- 語言程序設(shè)計(jì)(2)
評論
0/150
提交評論