版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第3章順序結(jié)構(gòu)程序設(shè)計(jì)本章要點(diǎn):格式化輸出函數(shù)──printf()格式輸入函數(shù)——scanf()字符輸出函數(shù)——putchar()字符輸入函數(shù)——getchar()順序結(jié)構(gòu)程序設(shè)計(jì)
學(xué)習(xí)方法建議:本章是程序設(shè)計(jì)的基礎(chǔ),建議重點(diǎn)掌握格式輸入輸出函數(shù)和字符輸入輸出函數(shù)的使用方法,掌握順序結(jié)構(gòu)程序的編寫方法,本章難點(diǎn)是格式輸入輸出函數(shù)中的格式描述符的用法。
3.1引例1.問題分析——華氏溫度與攝氏溫度的轉(zhuǎn)換。將華氏溫度轉(zhuǎn)換為對(duì)應(yīng)的攝氏溫度。已知華氏溫度與攝氏溫度的轉(zhuǎn)換公式為:程序代碼#include"stdio.h"voidmain(){doublef,c;/*定義變量f和c分別表示華氏溫度和攝氏溫度*/
scanf("f=%lf",&f);/*輸入華氏溫度值*/c=5*(f-32)/9;/*計(jì)算攝氏溫度*/
printf("c=%.2f\n",c);/*輸出攝氏溫度*/}3.2C語言的基本語句
C語言的語句可以分為以下5類:1.控制語句控制語句用于完成一定的控制功能。C語言中有9種控制語句:①if()…else… (條件語句)②for()… (循環(huán)語句)③while()… (循環(huán)語句)④do…while() (循環(huán)語句)⑤continue (結(jié)束本次循環(huán)語句)⑥break (中止執(zhí)行switch或循環(huán)語句)⑦switch (多分支選擇語句)⑧goto
(轉(zhuǎn)向語句)⑨return (從函數(shù)返回語句)
2.表達(dá)式語句表達(dá)式語句由一個(gè)表達(dá)式加一個(gè)分號(hào)構(gòu)成,最典型的是,由賦值表達(dá)式構(gòu)成一個(gè)賦值語句。例如:a=3是一個(gè)賦值表達(dá)式,而a=3;是一個(gè)賦值語句。3.函數(shù)調(diào)用語句函數(shù)調(diào)用語句由一個(gè)函數(shù)調(diào)用加一個(gè)分號(hào)構(gòu)成,例如:
printf("ThisisaCprogram.");4.空語句空語句只有一個(gè)語句結(jié)束符“;”,它不執(zhí)行任何操作,稱為空語句。5.復(fù)合語句可以用{}把一些語句括起來構(gòu)成復(fù)合語句(又稱分程序)。例如下面的語句是一個(gè)復(fù)合語句。
{t=x;x=y;y=t;}注意:復(fù)合語句中最后一個(gè)語句中最后的分號(hào)不能忽略不寫。復(fù)合語句在語法上和單一語句相同,即單一語句可以出現(xiàn)的地方,可以出現(xiàn)復(fù)合語句。復(fù)合語句可以嵌套,即復(fù)合語句中也可出現(xiàn)復(fù)合語句。3.3字符數(shù)據(jù)的輸入輸出
C語言本身不提供輸入輸出語句,輸入和輸出操作是由函數(shù)來實(shí)現(xiàn)的。在C標(biāo)準(zhǔn)函數(shù)庫中提供了一些輸入輸出函數(shù),由于C編譯系統(tǒng)與C函數(shù)庫是分別進(jìn)行設(shè)計(jì)的,因此不同的C系統(tǒng)所提供函數(shù)的數(shù)量、名字和功能是不完全相同的。但有些通用的函數(shù)(如printf()和scanf()等),各種C系統(tǒng)都提供,成為各種C系統(tǒng)的標(biāo)準(zhǔn)函數(shù)。3.3.1putchar函數(shù)putchar函數(shù)(字符輸出函數(shù))的作用是向終端輸出一個(gè)字符。其一般格式如下:
putchar(ch);它輸出字符變量ch的值,ch可以是字符變量或整型變量。【例3.1】輸出單個(gè)字符。#include<stdio.h>main(){chara,b,c;a='B';b='O';c='Y';putchar(a);putchar(b);putchar(c);putchar('\n');putchar(a);putchar('\n');/*輸出a的值,并換行*/putchar(b);putchar('\n');/*輸出b的值,并換行*/putchar(c);putchar('\n');/*輸出c的值,并換行*/}
getchar函數(shù)(字符輸入函數(shù))的作用是從終端(或系統(tǒng)隱含的輸入設(shè)備)輸入一個(gè)字符。getchar函數(shù)沒有參數(shù),其一般格式如下:
getchar();(1)getchar()函數(shù)只能用于單個(gè)字符的輸入,一次輸入一個(gè)字符。(2)在輸入時(shí),空格、回車符都將作為字符輸入,而且只有在敲回車鍵時(shí),讀入才開始執(zhí)行。3.3.2getchar函數(shù)運(yùn)行結(jié)果為:輸入new↙NEW【例3.2】將輸入的小寫字母轉(zhuǎn)換成大寫字母后輸出。
#include<stdio.h> /*編譯預(yù)處理命令:文件包含*/
voidmain()
{
charch1,ch2,ch3;
ch1=getchar();/*輸入小字母分別賦給變量ch1,ch2,ch3*/
ch2=getchar();
ch3=getchar();
ch1-=32;/*將小字母轉(zhuǎn)換成大寫字母*/
ch2-=32;
ch3-=32;
putchar(ch1);putchar(ch2);putchar(ch3);putchar('\n');
}
從鍵盤輸入字符時(shí),要求new連續(xù)輸入再回車,如果輸入n↙e↙w↙,則字符n賦給ch1,字符↙賦給ch2,字符e賦給ch3,就不對(duì)了。注意:程序中如果使用putchar()函數(shù)和getchar()函數(shù)時(shí),在程序(或文件)的開頭必須加上編譯預(yù)處理命令,即:
#include“stdio.h”或#include<stdio.h>。3.4格式輸入與輸出3.4.1printf()函數(shù)printf()函數(shù)的作用是向計(jì)算機(jī)系統(tǒng)默認(rèn)的輸出設(shè)備(一般指終端或顯示器)輸出一個(gè)或多個(gè)任意類型的數(shù)據(jù)。1.printf()函數(shù)printf函數(shù)的一般格式為:
printf(格式控制,輸出表列);功能:輸出任何類型的數(shù)據(jù)。例如:printf("radius=%f",radius);(1)格式控制
格式控制由雙引號(hào)括起來的字符串,主要包括格式說明和需要原樣輸出的字符。
①格式說明
由“%”和格式字符組成,如%d,%f等,作用是將要輸出的數(shù)據(jù)轉(zhuǎn)換為指定的格式后輸出。
②普通字符
需要原樣輸出的字符。如“printf("radius=%f",radius);”語句中的“radius=”就是普通字符。
(2)輸出表列:是需要輸出的一些數(shù)據(jù),可以是常量、變量和表達(dá)式。2.格式字符(1)d格式字符:以十進(jìn)制整數(shù)形式輸出數(shù)據(jù)。①%d:按整型數(shù)據(jù)的實(shí)際寬度輸出。②%md:m為一個(gè)正整數(shù),用以指定輸出數(shù)據(jù)所占的寬度。如果數(shù)據(jù)的位數(shù)小于m,則右對(duì)齊,左端補(bǔ)以空格,若數(shù)據(jù)位數(shù)大于m,則按實(shí)際位數(shù)輸出。③%-md:m為一個(gè)正整數(shù),用以指定輸出數(shù)據(jù)所占的寬度。如果數(shù)據(jù)的位數(shù)小于m,則左對(duì)齊,右端補(bǔ)以空格,若數(shù)據(jù)位數(shù)大于m,則按實(shí)際位數(shù)輸出。④%ld:輸出長整型數(shù)據(jù)。【例3.3】觀察printf()的輸出效果。
#include"stdio.h"
main()
{inta=123;
longb=12345;
printf("a=%d\tb=%ld\n",a,b);
printf("a=%2d\tb=%3ld\n",a,b);
printf("a=%5d\tb=%8ld\n",a,b);
printf("a=%-5d\tb=%-8ld\n",a,b);
}(2)c格式符:用來輸出一個(gè)字符。
【例3.4】字符數(shù)據(jù)的輸出。
#include"stdio.h"
main()
{
charc='b';
inti=98;
printf("%c,%d\n",c,c);
printf("%c,%d\n",i,i);
}(3)s格式符:用來輸出一個(gè)字符串。
①%s,輸出一個(gè)字符串
②%ms,輸出的字符串占m列,如字符串本身長度大于m,將字符串全部輸出。若串長小于m,則右對(duì)齊左補(bǔ)空格。
③%-ms,輸出的字符串占m列,如字符串本身長度大于m,將字符串全部輸出。若串長小于m,則左對(duì)齊右補(bǔ)空格。
④%m.ns,輸出占m列,但只取字符串中左端n個(gè)字符。這n個(gè)字符輸出在m列的右側(cè),左補(bǔ)空格。如果n>m,則m自動(dòng)取n值,即保證n個(gè)字符正常輸出。
⑤%-m.ns,其中m、n含義同上,n個(gè)字符輸出在m列范圍的左側(cè),右補(bǔ)空格。如果n>m,則m自動(dòng)取n值,即保證n個(gè)字符正常輸出?!纠?.5】字符串的輸出。
#include"stdio.h"
main()
{
printf("%2s,%8.3s,%.4s,%-7.2s\n","hello","hello","hello","hello");
}(4)f格式符:用來輸出實(shí)數(shù),以小數(shù)形式輸出。①%f,不指定字段寬度,由系統(tǒng)自動(dòng)指定,使整數(shù)部分全部輸出,并輸出6位小數(shù)。雙精度數(shù)也可以用%lf格式輸出。②%m.nf,指定輸出的數(shù)據(jù)共占m列,其中有n位小數(shù)。如果數(shù)值長度小于m,則左端補(bǔ)空格。③%-m.nf與%m.nf基本相同,只是使輸出的數(shù)值向左端靠,右端補(bǔ)空格?!纠?.6】輸出下列單精度實(shí)數(shù)和雙精度實(shí)數(shù)。#include"stdio.h"main(){floatf1,f2;doubled1,d2;f1=111111.111;f2=222222.222;d1=1111111111111.111111111;d2=2222222222222.222222222;printf("%f\n",f1+f2);printf("%f\n",d1+d2);
}【例3.7】輸出實(shí)數(shù)時(shí)指定小數(shù)位數(shù)。#include"stdio.h"main(){floatf=123.456;printf("%f%10f%10.2f%.2f%-10.2f\n",f,f,f,f,f);}(4)e格式符,以指數(shù)形式輸出實(shí)數(shù)。①%e,不指定輸出數(shù)據(jù)所占的寬度和數(shù)字部分的小數(shù)位數(shù),數(shù)值按規(guī)范化指數(shù)形式輸出(即小數(shù)點(diǎn)前必須有而且只有1位非零數(shù)字)。②%m.ne和%-m.ne,m、n和“-”字符含義與前面的相同。此處n指擬輸出的數(shù)據(jù)的小數(shù)部分(又稱尾數(shù))的位數(shù)。表3-1printf函數(shù)格式字符格式字符作用d或i十進(jìn)制整數(shù)形式帶符號(hào)輸出(正數(shù)不帶符號(hào))o八進(jìn)制整數(shù)形式無符號(hào)輸出(不帶前綴0)xX無符號(hào)輸出十六進(jìn)制整數(shù)(不帶前綴0x),其中字母小寫無符號(hào)輸出十六進(jìn)制整數(shù)(不帶前綴0x),其中字母大寫u十進(jìn)制整數(shù)形式無符號(hào)輸出f十進(jìn)制小數(shù)形式輸出單、雙精度數(shù)(默認(rèn)6位小數(shù))eE指數(shù)形式輸出單、雙精度數(shù)(默認(rèn)6位小數(shù))字母e小寫指數(shù)形式輸出單、雙精度數(shù)(默認(rèn)6位小數(shù))字母E大寫gG自動(dòng)選用f或e形式,字母e小寫自動(dòng)選用f或e形式,字母E大寫c輸出1個(gè)字符s輸出1個(gè)字符串ld長整型輸出lo長八進(jìn)制整型輸出lx長十六進(jìn)制整型輸出lu無符號(hào)長整型輸出m格式字符按寬度m輸出,右對(duì)齊-m格式字符按寬度m輸出,左對(duì)齊m.m格式字符按寬度m,n位小數(shù),或截取字符串前n個(gè)字符輸出,右對(duì)齊-m.n格式字符按寬度m,n位小數(shù),或截取字符串前n個(gè)字符輸出,左對(duì)齊3.printf()函數(shù)應(yīng)用舉例【例3.8】用不同的格式輸出同一變量。#include"stdio.h"main(){charch='b';
intx=65;
printf("ch=%c,%4c,%d\n",ch,ch,ch);printf("x=%d,%c\n",x,x);}【例3.9】輸出不同的數(shù)據(jù)類型的應(yīng)用。#include"stdio.h"main(){int
a,b;floatc;charch;a=123;b=-1;c=1.23;
ch='a';
printf("a=%d,a=%4d\n",a,a);/*輸出整數(shù)a的值*/
printf("%d,%o,%x,%u\n",b,b,b,b);/*輸出b的值*/
printf("%f,%6.1f\n",c,c);/*輸出實(shí)數(shù)c的值*/
printf("%c\n",ch);/*輸出字符變量ch的值*/}
1.scanf()函數(shù)scanf函數(shù)的一般格式為
scanf(格式控制,地址表列);“格式控制”的含義同printf函數(shù),“地址表列”是由若干個(gè)地址組成的表列,可以是變量的地址,或字符串的首地址。3.4.2scanf()函數(shù)【例3.10】用scanf()函數(shù)輸入數(shù)據(jù)。#include"stdio.h"main(){int
a,b,c;scanf("%d%d%d",&a,&b,&c);printf("%d,%d,%d\n",a,b,c);}其中:&a、&b、&c中的“&”是“地址運(yùn)算符”,&a指a在內(nèi)存中的地址。
scanf函數(shù)的作用是:按照a、b、c在內(nèi)存的地址將a、b、c的值存進(jìn)去,如圖3-1所示。運(yùn)行結(jié)果為:輸入123↙1,2,3圖3-1變量在內(nèi)存中存放的情況(1)格式說明格式說明主要由“%”和格式符組成的,如%d,%f等,作用是將輸入數(shù)據(jù)轉(zhuǎn)換為指定格式后存入到由地址表所指的相應(yīng)變量中。表3-2scanf()函數(shù)的類型字符格式字符作用d,i輸入有符號(hào)的十進(jìn)制整數(shù)U輸入無符號(hào)的十進(jìn)制整數(shù)O輸入無符號(hào)的八進(jìn)制整數(shù)X,x輸入無符號(hào)的十六進(jìn)制整數(shù)(大小寫作用一樣)C輸入單個(gè)字符S輸入1個(gè)字符串F輸入單精度實(shí)型數(shù)據(jù),(可以用小數(shù)形式或指數(shù)形式)E,e,g,G與f作用相同(大小寫作用一樣)lf、le、lg輸入雙精度實(shí)型數(shù)據(jù)ld、lo、lx、lu輸入長整型數(shù)據(jù)hd、ho、hx輸入短整型數(shù)據(jù)(2)地址表列scanf()函數(shù)中的“地址表列”部分是由變量的地址組成的,如果有多個(gè)變量,則各變量之間用逗號(hào)隔開。地址運(yùn)算符為“&”,如變量a的地址可以寫為&a。注意:scanf()函數(shù)中的“格式控制”后面應(yīng)當(dāng)是變量地址,而不應(yīng)是變量名。例如:scanf("%d%d",a,b);是不對(duì)的,應(yīng)改為scanf("%d%d",&a,&b);如果在“格式控制”字符串中除了格式說明以外還有其他字符,則在輸入數(shù)據(jù)時(shí)在對(duì)應(yīng)位置應(yīng)輸入與這些字符相同的字符。例如:scanf("a=%db=%d",&a,&b);應(yīng)輸入a=3b=4↙。在用“%c”格式輸入字符時(shí),空格字符和“轉(zhuǎn)義字符”都作為有效字符輸入。2.scanf()函數(shù)應(yīng)用舉例【例3.11】附加格式說明符n(寬度)。#include"stdio.h"main(){
inta,b;charch1,ch2;scanf("%2c%3c",&ch1,&ch2);printf("ch1=%c,ch2=%c\n",ch1,ch2);}運(yùn)行結(jié)果為:ABCDEF↙ch1=A,ch2=C【例3.12】“*”號(hào)附加說明符的應(yīng)用。
main(){int
a,b;
scanf("%2d%*3d%2d",&a,&b);
printf("a=%d,b=%d\n",a,b);}運(yùn)行結(jié)果為:從鍵盤輸入:23□482□60↙a=23,b=603.5程序設(shè)計(jì)舉例【例3.13】輸入任意二個(gè)整數(shù),求它們的和及平均值。main(){intn1,n2,sum=0;floataver;
printf("Pleaseinputtwonumbers:");
scanf("%d,%d",&n1,&n2);/*輸入二個(gè)整數(shù)*/sum=n1+n2; /*求和*/aver=sum/2.0;
/*求平均值*/printf("n1=%d,n2=%d\n",n1,n2);/*輸出結(jié)果*/
printf("sum=%d,aver=%5.2f\n",sum,aver);}運(yùn)行結(jié)果為:Pleaseinputtwonumbers:5,10↙n1=5,n2=10sum=15,aver=□7.50【例3.14】交換兩個(gè)變量的值。#include<stdio.h>main(){intx,y,temp;
scanf("%d%d",&x,&y);
printf("x=%d,y=%d\n",x,y);temp=x;x=y;y=temp;
printf("x=%d,y=%d\n",x,y);}運(yùn)行結(jié)果為:程序輸入:
1234↙x=12,y=34x=34,y=12【例3.15】輸入一個(gè)double類型的數(shù),使該數(shù)保留小數(shù)點(diǎn)后兩位,對(duì)第三位小數(shù)進(jìn)行四舍五入。#include"stdio.h"main(){doublex,y;
printf("Input
x:\n");
scanf("%lf",&x);
printf("x=%f\n",x);y=(int)(x*100+0.5)/100.0;
printf("y=%f\n",y);}main(){floatradius,high,carea,volume,pi=3.14159;
printf("請(qǐng)輸入圓的半徑:\n");
scanf("%f",&radius);/*從鍵盤輸入一個(gè)實(shí)數(shù)賦給變量radius*/
printf("請(qǐng)輸入圓柱體的高:\n");
scanf("%f",&high);/*從鍵盤輸入一個(gè)實(shí)數(shù)賦給變量high*/
carea=2.0*pi*radius*high;/*求圓柱體側(cè)面積*/volume=pi*radius*radius*high;/*求圓柱體體積*/
printf("radius=%f\n",radius);/*輸出圓柱體底面半徑*/
printf("radius=%f\n",high); /*輸出圓柱體的高*/
printf("carea=%7.2f,volume=%7.2f\n",carea,volume);}【例3.16】輸入圓柱體的半徑和高,計(jì)算圓柱體的側(cè)面積和體積。運(yùn)行結(jié)果為:請(qǐng)輸入圓的半徑:1↙請(qǐng)輸入圓柱體的高:2↙radius=1.00000high=2.00000carea=□□12.57,volume=□□□6.28上機(jī)實(shí)驗(yàn)1.掌握printf()和scanf()
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 生物分離原理試題及答案
- 糖尿病足部護(hù)理培訓(xùn)教材
- 2026 年初中英語《陳述句》專項(xiàng)練習(xí)與答案 (100 題)
- 2026年深圳中考語文知識(shí)體系構(gòu)建試卷(附答案可下載)
- 2026年深圳中考英語學(xué)困生補(bǔ)差試卷(附答案可下載)
- 《GA 2177-2024移民管理警察冬執(zhí)勤頭盔》專題研究報(bào)告
- 2026年大學(xué)大二(教育學(xué))教育統(tǒng)計(jì)學(xué)階段測(cè)試試題及答案
- 衛(wèi)生類崗位題庫及答案
- 2026年深圳中考生物沖刺名校專項(xiàng)試卷(附答案可下載)
- 面試財(cái)務(wù)題庫及答案解析
- 半導(dǎo)體安全培訓(xùn)課件
- 遼寧省錦州市2024-2025學(xué)年八年級(jí)下學(xué)期期末物理試題(含答案)
- 頂管施工臨時(shí)用電方案
- 廣東省惠州市高三上學(xué)期第一次調(diào)研考英語試題-1
- 瀘州老窖釀酒有限責(zé)任公司釀酒廢棄物熱化學(xué)能源化與資源化耦合利用技術(shù)環(huán)評(píng)報(bào)告
- 防范圍標(biāo)串標(biāo)行為操作指南
- 公司收款管理辦法
- 綜合能力測(cè)試題(含答案)
- 食用農(nóng)產(chǎn)品流通管理制度
- 啞終端設(shè)備管理制度
- 單位微信群規(guī)定管理制度
評(píng)論
0/150
提交評(píng)論