

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第3章 順序程序設計,1. 目的、要求 掌握數據的輸入和輸出函數scanf(),printf(),getchar(),putchar()。2. 重點、難點 數據的格式輸入輸出及其應用。,一個c程序由若干個源程序文件組成,每個源程序文件又由預編譯命令和若干個函數組成,每個函數包括說明部分和執(zhí)行部分(語句),由此介紹幾種語句。 通過示例介紹函數scanf(),printf(),getcha
2、r(),putchar()的應用場合及其格式參數的使用方法。,3. 講課思路,C程序結構,數據描述:由數據定義部分實現(xiàn),主要定義數據結構(用數據類型表示)和初值。數據操作:由語句來實現(xiàn),其任務是對已提供的數據進行加工。,C語句可以分為下列5類:1)控制語句:用于完成一定的控制功能。 注意“()”和“~”的書寫意義,如: if () ~ else ~ 可以寫成:
3、 if (x>y) z=x;else z=y;可見:“()”:表示其中是一個條件; “ ~ ”:表示內嵌的語句。,2)函數調用語句:由一次函數調用加一個分號構成。如: printf(“This is a C statement.”);3)表達式語句:由表達式加上分號構成。4)空語句:只有一個分號,什么都不做。5)復合語句:用“{}”括
4、起來的語句,又稱為分程序。如: { c=a+b; d=100*c; printf(“%f”,c); },C沒有固定的書寫格式要求,允許一行寫幾個語句,也允許將一個語句寫在幾行上。,賦值語句,賦值語句由賦值表達式和一個分號構成。賦值表達式可以包括在其他表達式之中。如:if((a=b)>
5、;0)t=a;其作用是先將b的值賦給a,再判斷a是否大于零。注意:a=b是表達式而不是語句,下列寫法錯誤:if((a=b;)>0)t=a;,數據的輸入和輸出,C語言不提供輸入輸出語句,所有輸入輸出操作都是由函數來實現(xiàn)的。,注意:不同的計算機系統(tǒng)提供的函數 數量、名字和功能不完全相同。,使用(Turbo c允許除printf 和scanf 函數以外)任何標準I/O庫函數,都應在程序前加上預編譯命令
6、include。,putchar函數(字符輸出函數),注意:使用putchar函數時,要用預編譯命令“#include” 將“stdio.h”文件包括到用戶源文件中。,例:1)putchar(getchar()); 2)If ((ch=getchar ()) !=‘#’) {……} 3)While(( ch=getchar ()) !=‘#’) {……},不是“#”就執(zhí)行指定的操作,,getchar函
7、數(字符輸入函數),注意:使用getchar函數時,要用預編譯命令“#include” 將“stdio.h”文件包括到用戶源文件中。,getchar()函數得到的字符可以賦給字符變量或整型變量。getchar()函數得到的字符也可不賦給其他變量,而直接,作為表達式的一部分。如putchar(getchar ()) ;,getchar()函數只能接受一個字符。,[例]:字符輸入輸出函數 :小寫字母變大寫,#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,運行結果:,格式:printf(“格式控制串”,輸出列表)功能:按指定格式向顯示器輸出數據,輸出表:要輸出的數據(可以沒有,多個時以“,”分隔)格式控制串:包含兩種信息 格式說明:%[修飾符]格式字符 ,用于指定輸出格式 普通字符或轉義序列:原樣輸出,格式輸出函數,printf 函數(格式輸出函數) 格式:print
10、f(格式控制,輸出表列),因為“格式控制”字符串和“輸出表列”都是函數參數所以printf函數可表示成下列通用形式:,格式字符,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,%,說明格式字符要用小寫格式字符與輸出項個數應相同,按先后順序一一對應輸出轉換:格式字符與輸
12、出項類型不一致,自動按指定格式輸出,,,表格,,,,,.n,對實數,指定小數點后位數(四舍五入),修飾符,功 能,,m,輸出數據域寬,數據長度<m,左補空格;否則按實輸出,輸出數據在域內左對齊(缺省右對齊),-,,指定在有符號數的正數前顯示正號(+),+,輸出數值時指定左面不使用的空位置自動填0,0,在八進制和十六進制數前顯示前導0,0x,#,在d,o,x,u前,指定輸出精度為long型在
13、e,f,g前,指定輸出精度為double型,l,,,,,,附加格式說明符(修飾符),對字符串,指定實際輸出位數,,1、d格式符:按有符號十進制格式輸出。,%d 輸出數字長度為變量數值的實際長度%md 輸出m位(不足時左補空格,大于m位時按實際長度輸出)%ld,%mld l(小寫字母L)表示輸出“長整型”數據%0md,%0mld 0(數字0)表示位數不足m時補0注:%后面的m(位數控制)、0(位數不足補0)對于其他格式符也適用。
14、,合法的printf()函數:,1.printf(“I am a student.\n”);2.printf(“%d”,3+2);3.printf(“a=%d b=%5d\n”,a,a+3);,注意:格式字符必須與輸出列表中輸出項的數據類型一致,且個數相同。,例:格式輸出,#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);},運行結果: i=123,i= 123,i=123 ,i=123 j=123456,j= 123456,j=123456,s格式符:以字符串格式輸出,%s 例、printf("%s","CHINA");%ms m指
16、定寬度(不足時左補空格,大于時按實際寬度輸出,即右對齊)%-ms 左對齊,不足m時右補空格%m.ns 輸出占m個字符位置,其中字符數最多n個,左補空格%-m.ns 同上,右補空格,%f 按實數格式輸出,整數部分按實際位數輸出,6位小數 %m.nf 總位數m(含小數點),其中n位小數,右對齊 %-m.nf 同上,左對齊,f格式符:按實數格式輸出,#includemain(){ printf("%s,%
17、5s,%10s", "Internet", "Internet", "Internet"); printf("%10.5s,%-10.5s,%4.5s\n","Internet","Internet","Internet");},例:格式字符,運行結果: Internet, Int
18、ernet, Internet , Inter,Inter ,Inter,域寬與精度的應用實例,……float a=1.27;printf(“%08.1f”,a);……,000001.3,輸出結果,……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|,輸出結果,例 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 函數(格式輸入函數),因此,scanf 函數實際是將數據傳送到地址參數所指定的內存中。 求地址運算符&得到的是符號地址,并且是變量所占存儲空間的首地址。編譯時將符號地址轉換為實際地址。,格式:getchar( )功能:從鍵盤讀一字符,字符輸入函數,例,#include main(){ int c; printf("Enter a characte
22、r:"); c=getchar(); printf("%c--->hex%x\n",c,c);},運行結果:Enter a character:A?A--->hex41,數據輸入,格式: scanf(“格式控制串”,地址表)功能:按指定格式從鍵盤讀入數據,存入地址表指定的 存儲單元中,并按回車鍵結束返值:正常,返回輸入數據個數,地址表:變量的地址,常用取地址運算
23、符&格式字符:d,o,x,u,c,s,f,e,例 scanf(“%d”,&a); 輸入:10 ? 則 a=10,例 scanf(“%x”,&a); 輸入:11 ? 則 a=17,格式輸入函數,附加格式說明符(修飾符),,,,,l,修飾符,功 能,,h,m,*,,,用于d,o,x前,指定輸入為sho
24、rt型整數,用于d,o,x前,指定輸入為long型整數,用于e,f前,指定輸入為double型實數,指定輸入數據寬度,遇空格或不可轉換字符則結束,抑制符,指定輸入項讀入后不賦給變量,,例 scanf(“%4d%2d%2d”,&yy,&mm,&dd); 輸入 19991015 ? 則1999?yy, 10 ?mm, 15 ?dd,修飾符功能,一般以空格、TAB或回車鍵作為分隔符其它字符
25、做分隔符:格式串中兩個格式符間字符,例 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函數相似,以%開始格式字符結束。,附加格
28、式說明符,用在%和格式字符之間。,注意:指定輸入數據的寬度時沒有n。,輸入多個數據時,兩個數據之間可以用下列方法分隔: 1)當輸入數據流中的數據類型與格式字符不符,認為本項數據輸入結束;,[例]:輸入數據流的分隔,#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)根據格式項中的域寬分隔數據;,[例:輸入數據流的分隔,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、[例]:輸入數據流的分隔,#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) 使用自己指定的非格式字符來分隔數據,如“,”。,[例]:輸入數據流的分隔,#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,[例]:輸入數據流的分隔,#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) 使用自己指定的非格式字符來分隔數據,如“a= ,”。,抑制字符* 虛讀,即按格式說明讀入的數據不送給任何變量。,[例]: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 函數的結束: 正常結束:格式項用完。 非正常結束:輸入數據流與格式項不匹配。scanf 函數的返回值: 輸入數據流與格式項成功匹配
36、的項數。,[例]: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,順序結構程序設計舉例,[例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("對應小寫字母為%c,ASCII碼是%d\n",c2,c2);},將鍵盤輸入的大寫字母改用小寫字母輸出,同時輸出其對應的ASCII碼值。,[例4.12]:求一元二次方程根(假定為實根),#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)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 實驗2 順序結構程序設計
- 順序結構程序設計
- 語言順序結構程序設計
- 程序設計初步順序結構教學設計
- 實驗二 順序結構、分支結構程序設計
- vb課程設計之順序結構程序設計
- 最簡單的c程序設計――順序程序設計
- 初識python程序設計的順序結構和循環(huán)結構
- c語言 第3講順序結構程序設計
- 4最簡單的c程序設計順序程序設計1
- 一順序與分支程序設計
- 程序設計教案 程序設計——數據結構
- [教育]運算符與順序程序設計
- 第四章 順序程序設計
- 循環(huán)結構程序設計
- 選擇結構程序設計
- 基本結構程序設計
- 微機原理順序、分支、循環(huán)、子程序設計
- 《c語言程序設計》實驗設計習題答案順序結構與邏輯運算
- 語言程序設計(2)
評論
0/150
提交評論