第3章(2) 順序結(jié)構(gòu)程序設(shè)計課件_第1頁
第3章(2) 順序結(jié)構(gòu)程序設(shè)計課件_第2頁
第3章(2) 順序結(jié)構(gòu)程序設(shè)計課件_第3頁
第3章(2) 順序結(jié)構(gòu)程序設(shè)計課件_第4頁
第3章(2) 順序結(jié)構(gòu)程序設(shè)計課件_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

問題:用程序解決問題的一般過程包括哪幾步?例1:將用戶給出的華氏溫度轉(zhuǎn)換成攝氏溫度。分析問題:(1)數(shù)據(jù)定義:設(shè)f表示華氏溫度,c表示攝氏溫度。(2)算法描述:輸入華氏溫度f;按照轉(zhuǎn)換公式c=5/9*(f-32)計算;

輸出結(jié)果。編寫程序:#include<stdio.h>intmain(){ floatf,c; printf("enteraFahrenheit:"); scanf(“%f”,&f);//輸入華氏溫度 c=5.0/9*(f-32);//計算 printf(“f=%f,c=%f”,f,c);//輸出結(jié)果 return0;}簡單程序流程分析:數(shù)據(jù)定義數(shù)據(jù)處理:數(shù)據(jù)的輸入計算處理結(jié)果的輸出提出問題:如何實(shí)現(xiàn)數(shù)據(jù)的輸入和結(jié)果的輸出呢?主要內(nèi)容簡單的輸入輸出順序結(jié)構(gòu)程序設(shè)計要求:

學(xué)會根據(jù)要處理的數(shù)據(jù)的類型不同合理選用合適的輸入/輸出函數(shù)和格式。Ch3-2順序結(jié)構(gòu)程序設(shè)計3.4數(shù)據(jù)的輸入/輸出例3.1中用scanf()實(shí)現(xiàn)了數(shù)據(jù)的輸入,用printf()實(shí)現(xiàn)了數(shù)據(jù)的輸出。輸入輸出:是相對于計算機(jī)的主機(jī)而言的。

輸入是指從計算機(jī)的外部設(shè)備將數(shù)據(jù)讀入主機(jī),

輸出是指將數(shù)據(jù)從主機(jī)送到外設(shè)(顯示器、打印機(jī)、磁盤等)。輸入設(shè)備(如鍵盤)主機(jī)輸出設(shè)備(如顯示器)輸入輸出3.4數(shù)據(jù)的輸入/輸出輸入輸出的實(shí)現(xiàn):C語言本身沒有專門的輸入輸出語句,輸入輸出操作是通過函數(shù)調(diào)用來實(shí)現(xiàn)的。輸入輸出函數(shù)的使用:編程時必須先將輸入輸出函數(shù)所在的頭文件:stdio.h包含進(jìn)本程序中。使用命令:

#include<stdio.h>

約定:C語言中的標(biāo)準(zhǔn)輸入輸出設(shè)備約定為用戶終端,即鍵盤和顯示器。輸入/輸出函數(shù)使用提示:調(diào)用輸入函數(shù)時應(yīng)該明確:數(shù)據(jù)從哪兒輸入(省略為鍵盤)、以什么格式輸入、輸入的數(shù)據(jù)存放在哪里;調(diào)用輸出函數(shù)時應(yīng)該明確:

要輸出什么內(nèi)容、按什么格式輸出、輸出到哪個設(shè)備(省略為顯示器)。3.4.3格式輸出函數(shù)1.printf()函數(shù)的一般調(diào)用格式:

printf(格式控制字符串,輸出表列);如前面例題中:

printf(“\nenteraFahrenheit:");printf(“f=%f,c=%f”,f,c);提示:格式控制串包含兩部分,即格式控制符、普通字符。其中,普通字符原樣輸出,而每個格式控制符控制輸出表列中的一個數(shù)據(jù)的輸出格式。格式字符的使用例2輸入三角形的三邊長(設(shè)為整數(shù)),求三角形的面積。

要求:輸出三條邊、面積,并且每個數(shù)據(jù)占7列寬度、小數(shù)點(diǎn)后保留2位。分析:首先定義變量保存要處理的數(shù)據(jù)和結(jié)果;然后設(shè)計算法:輸入、計算、輸出結(jié)果;最后編寫程序。/*輸入三角形的三邊,求面積*/#include<stdio.h>#include<math.h>intmain(){ inta,b,c;doubles,area; printf("\nenter3sides(integer):"); scanf("%d%d%d",&a,&b,&c);//輸入數(shù)據(jù)

s=(a+b+c)/2.0; area=sqrt(s*(s-a)*(s-b)*(s-c));//計算面積

printf("3sides:a=%7d,b=%7d,c=%7d\n",a,b,c);

printf("area=%7.2f\n",area);//輸出結(jié)果 return0;}enter3sides(integer):3453sides:a=3,b=4,c=5area=6.00格式字符的作用:其中,%7d表示按照十進(jìn)制整型格式輸出,域?qū)挒?;%7.2f表示按浮點(diǎn)型格式輸出,域?qū)挒?,且小數(shù)點(diǎn)后保留2位,右對齊。若將%7.2f改為%-7.2f則實(shí)現(xiàn)左對齊。具體的格式說明符參見P74表3.6

其他格式符的使用:對照例題,上機(jī)調(diào)試,理解常用輸出格式控制符的作用,如%c,%s,%ld,%lf等。3.4.4格式輸入函數(shù)2.scanf()的一般調(diào)用格式:

scanf(格式控制串,地址表列);

其中,格式控制串規(guī)定了用戶的輸入格式,地址表列指出了數(shù)據(jù)存放的地址。例如:上例中輸入三角形的三邊。

方法一:格式控制串中只包含格式控制符scanf("%d%d%d",&a,&b,&c);/*常用*/

方法二:格式控制串中包含普通字符;scanf("a=%d,b=%d,c=%d",&a,&b,&c);/*不常用,why?*/用scanf()時數(shù)據(jù)的輸入格式:scanf("%d%d%d",&a,&b,&c);/*常用*/運(yùn)行時輸入:345

或者每個數(shù)據(jù)之后按一下回車。

總之,數(shù)據(jù)之間以空格或回車分隔即可。scanf("a=%d,b=%d,c=%d",&a,&b,&c);

運(yùn)行時輸入:a=3,b=4,c=5

提示:必須按照以上格式輸入,否則出錯。比較兩種方式:若無特別要求,哪種更方便?scanf()應(yīng)用提示:(1)地址表列中的每個參數(shù)都是地址,即指出數(shù)據(jù)的存放位置;如:scanf("%d%d%d",&a,&b,&c);(2)約定:輸入數(shù)值數(shù)據(jù)時,當(dāng)遇到空格、回車、Tab鍵等則認(rèn)為該數(shù)據(jù)結(jié)束。若無特別要求,一般在格式控制串中不使用普通字符或其他復(fù)雜的格式符。(3)格式符與數(shù)據(jù)類型要匹配。如%d控制輸入整數(shù),%f控制輸入浮點(diǎn)數(shù)據(jù),%c控制字符輸入,%s控制字符串輸入。scanf()格式輸入函數(shù)應(yīng)用:例3:輸入某商品的編號(整型)、類別(A~Z字符型)、價格(實(shí)型),并輸出該信息。特點(diǎn)分析:

混合數(shù)據(jù)輸入#include<stdio.h>intmain(){ intnum;charclass1;floatprice; printf("\nentertheNo,class(A~Z)andpriceforgoods:"); scanf("%d%c%f",&num,&class1,&price);

printf("no=%d,class=%c,price=%6.2f\n",num,class1,price); return0;}entertheNo,class(A~Z)andpriceforgoods:10B98.8no=10,class=B,price=98.80用scanf()輸入混合數(shù)據(jù):scanf("%d%c%f",&num,&class1,&price);運(yùn)行時輸入:10B98.8問題:用scanf()實(shí)現(xiàn)混合數(shù)據(jù)輸入麻煩、易出錯.解決方法:合理使用scanf()和getchar(),即將數(shù)值與字符分別輸入,而不是用一個scanf()函數(shù)實(shí)現(xiàn)。3.4.5字符輸入/輸出函數(shù):getchar()和putchar()putchar()函數(shù):調(diào)用格式:

putchar(c);

其中,c是要輸出的字符,它可以是字符型或整型的常量和變量。當(dāng)c為整型時,其值應(yīng)是要輸出的字符的ASCII碼,范圍是0~255.

函數(shù)功能:

輸出一個字符到顯示屏的當(dāng)前光標(biāo)處。例4輸出三個字符:A*B。#include<stdio.h>intmain(){charc1;intc2;c1='A';c2=66;/*給變量c1,c2賦值*/putchar('\n');/*輸出字符'\n'*/putchar(c1);/*輸出變量c1中的字符:'A'*/putchar('*');/*輸出字符'*'*/putchar(c2);/*輸出變量c2中的字符:'B'*/return0;}字符輸入:2.getchar()函數(shù):

調(diào)用格式:

getchar()

函數(shù)功能:從標(biāo)準(zhǔn)輸入設(shè)備(一般指鍵盤)讀取一個字符,返回該字符的ASCII碼。

常用以下方式得到輸入的字符:charch;ch=getchar();例5輸入兩個字符,輸出每個字符及其ASCII碼。#include<stdio.h>intmain(){charc,d;printf("\nentertwocharacters:");//提示用戶c=getchar();//讀取輸入字符d=getchar();printf("%c:%d\n",c,c);//輸出c中的字符及ASCII碼printf("%c:%d",d,d);return0;}運(yùn)行結(jié)果:entertwocharacters:AB↙A:65B:66混合數(shù)據(jù)輸入用scanf()和getchar()實(shí)現(xiàn)例3:輸入某商品的編號(整型)、類別(A~Z字符型)、價格(實(shí)型),并輸出該信息。intmain(){ intnum;charclass1;floatprice; printf("enterNO:"); scanf("%d",&num);getchar(); printf("enterclass(A~Z)::"); class1=getchar();getchar(); printf("enterprice:"); scanf("%f",&price);getchar(); printf("no=%d,class=%c,price=%6.2f\n",num,class1,price); return0;}enterNO:10enterclass(A~Z)::Benterprice:80.8no=10,class=B,price=80.80數(shù)值型和字符型數(shù)據(jù)的混合輸入本程序中分別用scanf()和getchar()輸入編號、價格和類別。并且每次用輸入數(shù)據(jù)后,用getchar()讀取多余的回車符,以免影響后面的正確輸入?;旌蠑?shù)據(jù)輸入,有兩種處理方法:一是在一個scanf()函數(shù)中實(shí)現(xiàn)所有數(shù)據(jù)的輸入;二是將數(shù)值與字符分別輸入,而不是用一個scanf()函數(shù)完成。通常采用第二種方法,用第一種方法輸入時容易出錯。getchar()的使用技巧:放在程序的適當(dāng)位置,用于暫停程序的執(zhí)行,查看運(yùn)行結(jié)果。用法1:在程序結(jié)束前添加語句getchar();

可以實(shí)現(xiàn)在直接運(yùn)行可執(zhí)行文件時,顯示結(jié)果、等待用戶按回車鍵才結(jié)束。用法2:在大量數(shù)據(jù)輸出時,在輸出一段數(shù)據(jù)后使用getchar()語句,可以讓用戶能夠看到每段輸出結(jié)果,否則只能看到最后的一屏。Enter鍵的作用:特別提示:

從鍵盤輸入數(shù)據(jù)時,并不是鍵入一個字符后立即將其送入主機(jī),而是等到按下回車鍵(Enter)后,才能把這一行字符送入計算機(jī)的數(shù)據(jù)緩沖區(qū),然后輸入函數(shù)從緩沖區(qū)的第一個字符開始逐個讀取數(shù)據(jù)。

只有當(dāng)緩沖區(qū)中無數(shù)據(jù)可讀時,才等待用戶輸入。

注:以下例題供大家閱讀、總結(jié)知識點(diǎn)及其用法。3.4.5順序結(jié)構(gòu)程序設(shè)計舉例例6交換兩個整型變量的值。分析:首先定義程序中要用到的變量,設(shè)兩個整型變量為a、b。然后設(shè)計算法:①輸入兩個整數(shù)a、b②交換a、b的值③輸出交換后的a、b的值。其中,實(shí)現(xiàn)②的方法有兩種:一是用第三個變量c暫存其中一個數(shù),如程序1。二是不使用第三個變量,利用其中一個變量保存兩數(shù)之和,通過減法來實(shí)現(xiàn),如程序2。程序1:利用中間變量交換兩個變量的值。intmain(){inta,b,c;//定義變量,a、b表示輸入的兩個整數(shù),c為中間變量printf("\nenter2integerstoa,b:");scanf("%d%d",&a,&b);

c=a;a=b;b=c;/*交換*/printf("\na=%d,b=%d",a,b);return0;}思考:若將三個交換語句的順序調(diào)整,結(jié)果如何?運(yùn)行結(jié)果:enter2integerstoa,b:46↙a=6,b=4程序2:不使用中間變量交換兩個變量的值。intmain(){inta,b;printf("\nenter2integerstoa,b:");scanf("%d%d",&a,&b);

a=a+b;b=a-b;a=a–b;/*交換*/printf("\na=%d,b=%d",a,b);return0;}

順序結(jié)構(gòu)程序設(shè)計例7輸入一個數(shù)字符號,并轉(zhuǎn)換成相應(yīng)的整數(shù)輸出。如讀入字符'8',轉(zhuǎn)換成整數(shù)8輸出。分析:首先數(shù)據(jù)說明:定義程序中要使用的變量,設(shè)字符變量ch存放讀入的字符,整型變量d存放轉(zhuǎn)換后的整數(shù)。然后設(shè)計算法:①輸入一個字符給ch②將字符ch轉(zhuǎn)換成對應(yīng)的數(shù)值d③輸出d。其中第二步如何轉(zhuǎn)換呢?即:將字符轉(zhuǎn)換成對應(yīng)的數(shù)字。利用ASCII碼的編碼規(guī)律:'0','1','2'……'9'的ASCII碼值是連續(xù)的,即48、49、50……57。因此,只要將數(shù)字字符與字符'0'相減,結(jié)果就是該字符對應(yīng)的數(shù)值。如'8'-'0'值為8。程序:#include<stdio.h>intmain(){charch;intd;printf("\nenteracharacter(0~9):");ch=getchar();/*讀入一個字符并賦給ch*/

d=ch-'0';printf("d=%d",d);

溫馨提示

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

評論

0/150

提交評論