版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第3章 簡(jiǎn)單的C程序設(shè)計(jì),哈爾濱工業(yè)大學(xué)計(jì)算機(jī)學(xué)院蘇小紅sxh@hit.edu.cn,C語(yǔ)言大學(xué)實(shí)用教程,內(nèi)容提要,字符輸入輸出函數(shù)格式輸入輸出函數(shù),C語(yǔ)言中的語(yǔ)句,變量聲明語(yǔ)句int x, y;表達(dá)式語(yǔ)句i++;i = i + 1;空語(yǔ)句;復(fù)合語(yǔ)句{t = x; x = y; y = t;}控制語(yǔ)句,順序結(jié)構(gòu)程序的基本操作,如何在程序中給變量賦值?賦值表達(dá)式語(yǔ)句賦值表達(dá)式;Total = m * pow(
2、1+r, n);如何進(jìn)行數(shù)據(jù)的輸入輸出?輸入:從標(biāo)準(zhǔn)輸入設(shè)備上輸入數(shù)據(jù)到計(jì)算機(jī)內(nèi)存輸出:將計(jì)算機(jī)內(nèi)存中的數(shù)據(jù)送到標(biāo)準(zhǔn)輸出設(shè)備C語(yǔ)言中輸入輸出操作通過(guò)調(diào)用標(biāo)準(zhǔn)庫(kù)函數(shù)來(lái)實(shí)現(xiàn)#include "stdio.h" 在當(dāng)前目錄和TC指定的目錄中找該文件#include 在由TC指定的文件目錄中找該文件,復(fù)合語(yǔ)句,在什么情況下使用復(fù)合語(yǔ)句?條件語(yǔ)句和循環(huán)語(yǔ)句在語(yǔ)法上只允許帶一條語(yǔ)句當(dāng)分支和循環(huán)中需要進(jìn)
3、行多項(xiàng)操作時(shí),{ t=x; x=y; y=t;},被當(dāng)作一條語(yǔ)句來(lái)處理,,例3.1,main(){ int a = 0; { int a = 1; printf("In: a = %d\n", a); } printf("Out: a = %d\n", a);},In: a = 1Out: a = 0,空語(yǔ)句
4、,空語(yǔ)句有什么作用?什么也不做,只表示語(yǔ)句的存在自頂向下程序設(shè)計(jì)時(shí)用在那些未完成的模塊中延時(shí)用的空循環(huán),main(){ DataInitialze(); DataProcess(); DataOutput();},DataInitialze(){ ; },字符輸入輸出函數(shù),字符輸出函數(shù)putchar(ch)輸出一個(gè)字符ch字符輸入函數(shù)getchar()無(wú)參數(shù)函數(shù)值為從輸入設(shè)備接收的字符,#in
5、clude main(){ char ch; printf("Press a key and then press Enter:"); ch = getchar(); printf("You pressed "); putchar(ch); putchar('
6、;\n');},運(yùn)行程序,Press a key and then press Enter:,311,,,,,,,,A↙,You pressed,A,例3.2,該語(yǔ)句的作用是什么?,格式輸出函數(shù),格式輸出函數(shù)printf(格式控制字符串, 輸出項(xiàng)表列);輸出若干個(gè)任意類型的數(shù)據(jù)printf("a=%d b=%f", a, b);,函數(shù)名,輸出表列,普通字符,,,,輸出常用輸出函數(shù):printf
7、 將信息送到標(biāo)準(zhǔn)輸出(一般送到屏幕或特定窗口) printf(格式描述串, 其他參數(shù));函數(shù)調(diào)用形式:函數(shù)名,括號(hào),函數(shù)參數(shù),多個(gè)參數(shù)用逗號(hào)分隔,語(yǔ)句:程序基本單位,以分號(hào)為結(jié)束符 printf("Good morning!\n");一個(gè)完成輸出的語(yǔ)句,printf的功能: printf(格式描述串, 其他參數(shù))第一個(gè)參數(shù)應(yīng)是字符串,可以有其他參數(shù)。如果“格式描述串”里沒(méi)有 %,也沒(méi)有其他參數(shù)
8、,printf輸出格式描述串。,printf("Welcome\nto\nBeijing!\n");輸出三行字符:WelcometoBeijing!,轉(zhuǎn)換描述(描述數(shù)據(jù)的輸出轉(zhuǎn)換方式)格式串中%開始的段意義特殊( “轉(zhuǎn)換描述”)每個(gè)轉(zhuǎn)換描述說(shuō)明一參數(shù)的輸出形式(轉(zhuǎn)換方式)。特別注意(!!):轉(zhuǎn)換描述和“其他參數(shù)”個(gè)數(shù)一致。轉(zhuǎn)換描述和對(duì)應(yīng)參數(shù)的類型必須一致。,輸出整數(shù):printf(”Test: %
9、d + %d = %d\n", 2, 3, 5);,輸出長(zhǎng)整數(shù):printf(”Test: %ld + %d", 3L, 5);,d 以帶符號(hào)十進(jìn)制整數(shù)輸出o 以八進(jìn)制無(wú)符號(hào)整數(shù)輸出(無(wú)前導(dǎo)0)x 以十六進(jìn)制無(wú)符號(hào)整數(shù)輸出(無(wú)前導(dǎo)0x)u 以十進(jìn)制無(wú)符號(hào)整數(shù)輸出c 以字符形式輸出單個(gè)字符s 輸出一個(gè)字符串f 以小數(shù)形式輸出浮點(diǎn)數(shù)(6位小數(shù))e 以標(biāo)準(zhǔn)指數(shù)形式輸出(6位小數(shù))g 選用%f,%e中輸出寬
10、度較小的一種格式,printf格式字符,l 長(zhǎng)整型整數(shù),加在d、o、x、u前L long double型數(shù),加在f、e、g前m 表示數(shù)據(jù)占用的最小寬度 數(shù)據(jù)寬度大于m,按實(shí)際寬度輸出 數(shù)據(jù)寬度小于m時(shí),補(bǔ)空格n 對(duì)實(shí)數(shù)表示輸出n位小數(shù) 對(duì)字符串表示最多輸出的字符個(gè)數(shù)- 改變輸出內(nèi)容的對(duì)齊方式 缺省為右對(duì)齊,printf附加格式說(shuō)明符,#include main()
11、{float f1 = 100.15799, f2 = 12.55, f3 = 1.7;int n1 = 123, n2 = 45, n3 = 6; printf("printf WITHOUT width or precision specifications:\n");printf("%f\n%f\n%f\n&q
12、uot;, f1, f2, f3);printf("%d\n%d\n%d\n", n1, n2, n3);printf("printf WITH width and precision specifications:\n");printf("%5.2f\n%6.1f\n%3.0f\n", f1, f2, f3);printf("%5d\n%
13、6d\n%3d\n\n", n1, n2, n3);},例3.8,格式輸入函數(shù),格式輸入函數(shù)scanf(格式控制字符串, 地址表列);scanf("%d,%f”, &a,&b);,格式輸入函數(shù),常見錯(cuò)誤scanf("%d,%f\n”,&a,&b);scanf("%d,%f”,a,b);scanf("%7.2f",&a);,d
14、 以帶符號(hào)十進(jìn)制形式輸入整型數(shù)據(jù)o 以八進(jìn)制無(wú)符號(hào)形式輸入(無(wú)前導(dǎo)0)x 以十六進(jìn)制無(wú)符號(hào)形式輸入(無(wú)前導(dǎo)0x)c 以字符形式輸入單個(gè)字符s 輸入字符串,以非空字符開始,遇第一個(gè) 空白字符結(jié)束f 以小數(shù)形式輸入浮點(diǎn)數(shù)e 以標(biāo)準(zhǔn)指數(shù)形式輸入,scanf格式字符,l 加在d、o、x、u前:輸入長(zhǎng)整型 加在f、e 前:輸入雙精度型L 加在f、e 前:輸入long double型h 加在d、o、x
15、前:輸入短整型m 表示數(shù)據(jù)占用的寬度* 本輸入項(xiàng)在讀入后不賦給相應(yīng)的變量,scanf附加格式說(shuō)明符,注: 調(diào)用函數(shù)printf()時(shí),float類型的參數(shù)都是轉(zhuǎn)化為double類型后再傳遞的,所以%f可以輸出double和float兩種類型的數(shù)據(jù),不必用%lf輸出double型數(shù)據(jù)。 調(diào)用函數(shù)scanf()時(shí), 如果是float類型則對(duì)應(yīng)輸入轉(zhuǎn)換符為%f,而double類型的輸入轉(zhuǎn)換符為%lf。
16、例: float x; double y; scanf(“%f %lf”,&x,&y); printf(“x=%f,y=%f”,x,y);,#include main(){ int a, b; printf("Please input a and b:"); scanf("%d%d", &a, &
17、;b); printf("a=%d, b=%d, a+b=%d\n",a,b,a+b);},Please input a and b:,a=12, b=34, a+b = 46,12 34↙,例,遇空格、TAB 鍵時(shí)結(jié)束,#include main(){ int a, b; printf("Please input a and b:"); scanf("
18、;%d%d", &a, &b); printf("a=%d, b=%d, a+b=%d\n",a,b,a+b);},Please input a and b:,a=12, b=34, a+b = 46,12↙,例,遇回車鍵時(shí)結(jié)束,34↙,#include main(){ int a, b; printf("Please input a and b:&q
19、uot;); scanf("%2d%2d", &a, &b); printf("a=%d, b=%d, a+b=%d\n",a,b,a+b);},Please input a and b:,a=12, b=34, a+b = 46,1234↙,例,遇寬度時(shí)結(jié)束,#include main(){ int a, b; printf("Ple
20、ase input a and b:"); scanf("%2d%2d", &a, &b); printf("a=%d, b=%d, a+b=%d\n",a,b,a+b);},Please input a and b:,a=12, b=3, a+b = 15,123a↙,例,遇非法輸入時(shí)結(jié)束,#include main(){ int a, b;
21、 printf("Please input a and b:"); scanf("%d,%d", &a, &b); printf("a=%d, b=%d, a+b=%d\n",a,b,a+b);},Please input a and b:,a=12, b=34, a+b = 46,12,34↙,例,這里逗號(hào)需要原樣輸入,#include
22、 main(){ int a, b; printf("Please input a and b:"); scanf("%2d%*2d%2d", &a, &b); printf("a=%d, b=%d, a+b=%d\n",a,b,a+b);},Please input a and b:,a=12, b=56, a+b = 68,
23、123456↙,例3.9,跳過(guò)一個(gè)輸入項(xiàng),#include main() {int a, b;scanf("%d %d", &a, &b);printf("a = %d, b = %d\n", a, b);},問(wèn)題1:當(dāng)要求程序輸出結(jié)果為 a = 12, b = 34時(shí),用戶應(yīng)該如何輸入數(shù)據(jù)?,12 3
24、4↙,輸入數(shù)據(jù)的格式控制——例3.10,#include main() {int a, b;scanf("%d %d", &a, &b);printf("a = %d, b = %d\n", a, b);},問(wèn)題2:當(dāng)限定用戶輸入數(shù)據(jù)以逗號(hào)為分隔符,即輸入數(shù)據(jù)格式為: 12,34↙時(shí),應(yīng)修改程序中的哪條語(yǔ)句?怎樣修改?,scan
25、f("%d,%d", &a, &b);,輸入數(shù)據(jù)的格式控制——例3.10,#include main() {int a, b;scanf("%d %d", &a, &b);printf("a = %d, b = %d\n", a, b);},問(wèn)題3:語(yǔ)句scanf("%d %d", &a
26、mp;a, &b);修改為scanf("a = %d, b = %d", &a, &b);時(shí),用戶應(yīng)該如何輸入數(shù)據(jù)?,a = 12, b = 34↙,輸入數(shù)據(jù)的格式控制——例3.10,#include main() {int a, b;scanf("%d %d", &a, &b);printf("a = %d
27、, b = %d\n", a, b);},問(wèn)題4:限定用戶輸入數(shù)據(jù)為以下格式為 1234↙ 同時(shí)要求程序輸出結(jié)果為a = 12, b = 34,scanf("%2d%2d", &a, &b);,輸入數(shù)據(jù)的格式控制——例3.10,#include main() {int a, b;scanf("%d %d", &a
28、, &b);printf("a = %d, b = %d\n", a, b);},問(wèn)題5:限定用戶輸入數(shù)據(jù)為以下格式為12↙34↙ 同時(shí)要求程序輸出結(jié)果為a = "12", b = "34",scanf("%d%d", &a, &b);printf("a = \"%d\", b = \&
29、quot;%d\"\n", a, b);,輸入數(shù)據(jù)的格式控制——例3.10,#include main() {int a, b;scanf("%d %d", &a, &b);printf("a = %d, b = %d\n", a, b);},問(wèn)題6:設(shè)計(jì)程序使得用戶可以以任意字符(回車、空格、制表符、逗號(hào)、其它)作為分隔
30、符進(jìn)行數(shù)據(jù)的輸入,scanf("%d%*c%d", &a, &b);,輸入數(shù)據(jù)的格式控制——例3.10,#include main(){int data1, data2, sum;char op; printf("Please enter the expression data1 + data2\n");scanf("%d%
31、c%d",&data1, &op, &data2);printf("%d%c%d = %d\n", data1, op, data2, data1+data2);},Please enter the expression data1 + data2,第1次測(cè)試,12 + 3↙,12 3129 = 3141,,,C格式符存在的問(wèn)題及其解決—例3.1
32、1,#include main(){int data1, data2, sum;char op; printf("Please enter the expression data1 + data2\n");scanf("%d%c%d",&data1, &op, &data2);printf("%d%c%d =
33、%d\n", data1, op, data2, data1+data2);},Please enter the expression data1 + data2,第2次測(cè)試,12 3↙,12 3 = 15,C格式符存在的問(wèn)題及其解決—例3.11,#include main(){int data1, data2, sum;char op; printf(&q
34、uot;Please enter the expression data1 + data2\n");scanf("%d%c%d",&data1, &op, &data2);printf("%d%c%d = %d\n", data1, op, data2, data1+data2);},Please enter t
35、he expression data1 + data2,第3次測(cè)試,12+3↙,12+3 = 15,C格式符存在的問(wèn)題及其解決—例3.11,#include main(){ int a; char b; float c; printf("Please input an integer:"); scanf("%d", &a);
36、 printf("integer: %d\n", a); printf("Please input a character:"); scanf("%c", &b); printf("character: %c\n", b); printf("Please input a float number
37、:"); scanf("%f", &c); printf("float: %f\n", c);},Please input an integer:,希望得到的運(yùn)行結(jié)果,12↙,Please input an character :,a↙,Please input a float number:,3.5↙,integer:12,character :a,
38、float number:3.500000,C格式符存在的問(wèn)題及其解決—例3.12,#include main(){ int a; char b; float c; printf("Please input an integer:"); scanf("%d", &a); printf("integer: %d
39、\n", a); printf("Please input a character:"); scanf("%c", &b); printf("character: %c\n", b); printf("Please input a float number:"); scanf(&quo
40、t;%f", &c); printf("float: %f\n", c);},Please input an integer:,結(jié)果好像很奇怪嘛!,12↙,Please input an character :,character:,Please input a float number:,3.5↙,integer:12,,float number:3.500000,C格式符存在的問(wèn)題及
41、其解決—例3.12,#include main(){ int a; char b; float c; printf("Please input an integer:"); scanf("%d", &a); printf("integer: %d\n", a); printf("P
42、lease input a character:"); scanf("%c", &b); printf("character: %c\n", b); printf("Please input a float number:"); scanf("%f", &c); printf(
43、"float: %f\n", c);},C格式符存在的問(wèn)題及其解決—例3.12,輸入數(shù)據(jù)12后,按的回車鍵被當(dāng)作有效字符讀給字符型變量b了。,#include main(){ int a; char b; float c; printf("Please input an integer:"); scanf("%d&quo
44、t;, &a); printf("integer: %d\n", a); printf("Please input a character:"); getchar(); /*吸收掉前面輸入整型數(shù)據(jù)后面鍵入的回車字符*/ scanf("%c", &b); printf("character: %c\n&q
45、uot;, b); printf("Please input a float number:"); scanf("%f", &c); printf("float: %f\n", c);},Please input an integer:,程序修改后得到的運(yùn)行結(jié)果,12↙,Please input an character :,a↙,P
46、lease input a float number:,3.5↙,integer:12,character :a,float number:3.500000,C格式符存在的問(wèn)題及其解決—例3.12,#include main(){ int a; char b; float c; printf("Please input an integer:"); sc
47、anf("%d", &a); printf("integer: %d\n", a); printf("Please input a character:"); scanf("%1s", &b); /*第2種解決方案*/ printf("character: %c\n", b);
48、 printf("Please input a float number:"); scanf("%f", &c); printf("float: %f\n", c);},C格式符存在的問(wèn)題及其解決—例3.12,這里s前面的符號(hào)是數(shù)字1,不是字母L的小寫將程序的%c改為%1s用于讀入單個(gè)字符,由于%1s完全忽略空格和回車符,可以避免回車符被
49、作為單個(gè)字符讀入。,#include main(){int data1, data2, sum;char op; printf("Please enter the expression data1 + data2\n");scanf("%d%1s%d",&data1, &op, &data2);printf("
50、%d%c%d = %d\n", data1, op, data2, data1+data2);},12+3↙,12 + 3↙,12↙+↙3↙,再回頭來(lái)看例3.11,以任意分隔符輸入加法算式,可能嗎?,這一章我們學(xué)習(xí)了,字符輸入函數(shù)getchar()字符輸出函數(shù)putchar()格式輸入函數(shù)scanf()格式輸出函數(shù)printf()格式控制問(wèn)題——難點(diǎn),幾點(diǎn)忠告,不要拘泥于細(xì)節(jié)不要死
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- c語(yǔ)言程序設(shè)計(jì)蘇小紅版答案
- c語(yǔ)言程序設(shè)計(jì)ppt課件_第2章_簡(jiǎn)單程序設(shè)計(jì)-
- c語(yǔ)言程序設(shè)計(jì)第6章課件-
- c語(yǔ)言程序設(shè)計(jì)教程
- 譚浩強(qiáng)c語(yǔ)言程序設(shè)計(jì)教程學(xué)習(xí)筆記第8章
- c語(yǔ)言程序設(shè)計(jì)教程 (第2版)
- c語(yǔ)言程序設(shè)計(jì)第8章
- 譚浩強(qiáng)c語(yǔ)言程序設(shè)計(jì)教程學(xué)習(xí)筆記第8章
- c語(yǔ)言程序設(shè)計(jì)案例教程
- 《c語(yǔ)言大學(xué)實(shí)用教程》第2版(蘇小紅 陳惠鵬 孫志崗)課后習(xí)題答案 電子工業(yè)出版社
- 第02章c語(yǔ)言程序設(shè)計(jì)基礎(chǔ)
- c語(yǔ)言程序設(shè)計(jì)3
- c-++-程序設(shè)計(jì)教程課件
- c語(yǔ)言程序設(shè)計(jì)(第3版)何欽銘-顏-暉-第2章--c語(yǔ)言編寫程序
- c語(yǔ)言程序設(shè)計(jì)----簡(jiǎn)單計(jì)算器
- 一c++語(yǔ)言概述c++簡(jiǎn)單程序設(shè)計(jì)
- c語(yǔ)言程序設(shè)計(jì)ppt-第2版-第7章-指針程序設(shè)計(jì)
- c語(yǔ)言 第3講順序結(jié)構(gòu)程序設(shè)計(jì)
- 《c語(yǔ)言程序設(shè)計(jì)教程》課后題答案
- c語(yǔ)言程序設(shè)計(jì)與項(xiàng)目實(shí)踐第14章
評(píng)論
0/150
提交評(píng)論