第二章數(shù)據(jù)輸出與輸入_第1頁
第二章數(shù)據(jù)輸出與輸入_第2頁
第二章數(shù)據(jù)輸出與輸入_第3頁
第二章數(shù)據(jù)輸出與輸入_第4頁
第二章數(shù)據(jù)輸出與輸入_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第二章數(shù)據(jù)輸出與輸入第一頁,共三十八頁,編輯于2023年,星期四2.1C語言的基本語句一個實際的C程序是一系列語句的集合,每一條語句都用來完成一定的操作任務(wù),C程序的每一條語句都要有分號結(jié)束,但變量聲明部分不算嚴(yán)格意義上的C語句。main(){inta,b;a=2;b=++a;printf(“%d,%d\n”,a,b);}嚴(yán)格說來,應(yīng)不稱為語句。C語句分為以下幾類:(1)控制語句(2)函數(shù)調(diào)用語句(3)表達(dá)式語句(4)空語句(5)復(fù)合語句第二頁,共三十八頁,編輯于2023年,星期四2.1格式化輸出數(shù)據(jù)的“輸入”和“輸出”是相對于計算機主機而言的。C語言本身不提供輸入輸出語句,輸入輸出操作是通過調(diào)用庫函數(shù)來實現(xiàn)的,例如:printf和scanf就是c語言中用于實現(xiàn)數(shù)據(jù)輸入、輸出的庫函數(shù)之一。因為c語言的輸入輸出庫函數(shù)都位于一個名為stdio.h的頭文件中,所以,每一個c語言程序的開始都要用下面的編譯預(yù)處理命令將該頭文件包括到用戶編輯的文件中去。

#include“stdio.h”或#include<stdio.h>

第三頁,共三十八頁,編輯于2023年,星期四格式化輸出函數(shù)printf功能:向顯示屏輸出數(shù)據(jù)。語法:printf(格式控制,輸出列表);例如:printf(“%d,%d”,x,y);2.1格式化輸出第四頁,共三十八頁,編輯于2023年,星期四Printf函數(shù)說明:一、格式控制部分是用雙引號括起來的字符串,用于描述輸出時的格式要求,其中包含兩種信息:(1)普通字符和轉(zhuǎn)義字符常量,普通字符原樣輸出,轉(zhuǎn)義字符按所表示的字符含義輸出;(2)格式說明:如%d,%c等形式的字符串,指定輸出表列中相應(yīng)的變量或表達(dá)式的值的輸出形式。見P34表2-1例如:若已知整型變量a的值為2,整型變量b的值為3,程序中有輸出語句:printf(“a=%d,b=%d”,a,b);輸出結(jié)果為()。格式說明,規(guī)范數(shù)據(jù)說明信息,原樣輸出a=2,b=3第五頁,共三十八頁,編輯于2023年,星期四格式說明對應(yīng)的輸出數(shù)據(jù)格式格式說明輸出數(shù)據(jù)格式%d或%i輸出有符號的十進制整型數(shù)%f輸出精度或雙精度且小數(shù)點后有6位數(shù)%c輸出一個字符%o輸出八進制無符號整型數(shù)%x或%X輸出十六進制無符號整型數(shù)%u輸出無符號十進制整數(shù)%c或%E不常用第六頁,共三十八頁,編輯于2023年,星期四Printf函數(shù)舉例例3若有以下程序段intm=32767,n=032767;Printf(“%d,%o\n”,m,n);執(zhí)行后輸出的結(jié)果是:32767,32767例4若有以下程序段intm=0xabc,,n=0xabc;m-=n;Printf(“%X\n”,m);執(zhí)行后輸出的結(jié)果是:0第七頁,共三十八頁,編輯于2023年,星期四Printf函數(shù)說明:二、輸出數(shù)據(jù)列表包括需要輸出的一些數(shù)據(jù)。各個數(shù)據(jù)間用逗號分隔開。輸出數(shù)據(jù)的個數(shù)與輸出控制中的格式說明個數(shù)相等,并且在順序上要一一對應(yīng)且類型匹配。例如:printf(“%d,%f”,3.89,6);三、在輸出控制中,格式說明個數(shù)應(yīng)與輸出項的個數(shù)相同。如果說明個數(shù)少于輸出項的個數(shù),多余的輸出項則不輸出;如果格式說明的個數(shù)多于輸出項個數(shù),則對多余的格式說明輸出不定值。第八頁,共三十八頁,編輯于2023年,星期四例1有以下程序:Main(){inti=2000;floatj=2.71828;printf(“i=%d,j=%f,j*10=%f”,i,j,j*10);}結(jié)果是:i=2000,j=2.718280,j*10=27.182800Printf函數(shù)舉例:例2有以下程序Main(){inta=666,b=888;printf(“%d\n”,a,b);}結(jié)果是:666第九頁,共三十八頁,編輯于2023年,星期四Printf函數(shù)舉例:例3:若有程序段intm=32767,n=032767;printf(“%d,%o\n”,m,n);執(zhí)行后輸出結(jié)果是:32767,32767例4:若有程序段intm=0xabc,n=0xabc;m-=n,printf(“%X\n”,m);執(zhí)行后輸出結(jié)果是:0例5:若變量a,b已定義為int類型并賦值21和55,要求用printf函數(shù)以a=21,b=55的形式輸出,完整的輸出語句是

printf(“a=%d,b=%d”,a,b);函數(shù)說明二第十頁,共三十八頁,編輯于2023年,星期四Printf函數(shù)說明:(1)可以在%和格式字符間加入一個整數(shù)來控制輸出數(shù)據(jù)寬度,如果整數(shù)指定寬度大于實際輸出數(shù)據(jù)寬度,數(shù)據(jù)輸出采用右對齊方式,左邊自動補空格;反之,則以實際寬度輸出。2.1格式化輸出輸出語句輸出結(jié)果Printf(“%d”,254);254Printf(“%2d”,254);254Printf(“%4d”,254);254Printf(“%f”,1.25);1.250000Printf(“%10f”,1.25);1.250000第十一頁,共三十八頁,編輯于2023年,星期四(2)當(dāng)在%和格式字符f之間加入“整數(shù)1.整數(shù)2”來控制輸出數(shù)據(jù)的格式時,“整數(shù)1”用于指定輸出數(shù)據(jù)占的總寬度,“整數(shù)2”用于指定輸出實數(shù)的小數(shù)部分的位數(shù)。2.1格式化輸出輸出語句輸出結(jié)果Printf(“%4.4f”,1.25);1.2500Printf(“%7.4f”,1.25);1.2500Printf(“%2.0f”,1.25);1第十二頁,共三十八頁,編輯于2023年,星期四(3)如果需要在輸出的八進制數(shù)前添加0,或在輸出的十六進制前添加0x,可在%號和格式字符o和x之間插入一個#號。2.1格式化輸出輸出語句輸出結(jié)果Printf(“%o”,254);376Printf(“%#o”,254);0376Printf(“%#x”,254);0xfe第十三頁,共三十八頁,編輯于2023年,星期四Printf函數(shù)舉例:例如:main(){inta,b;clrscr();/*清屏*/a=123,b=12345;printf(“%d,%2d,%d,%10d\n”,a,a,b,b);}結(jié)果:123,123,12345,12345第十四頁,共三十八頁,編輯于2023年,星期四字符輸出函數(shù)putchar語法:putchar(字符常量或字符變量);功能:將括號內(nèi)的字符常量或字符變量的值顯示在屏幕上。如:#include<stdio.h>main(){charc;c=‘A’;putchar(‘c’);putchar(‘\n’);putchar(c);}

cA2.2字符數(shù)據(jù)的輸出第十五頁,共三十八頁,編輯于2023年,星期四格式化輸入函數(shù)scanf用于在程序運行時,由用戶自行輸入數(shù)值送入相應(yīng)變量保存。語法:scanf(格式控制,地址表列);說明:格式控制含義與printf中的相同,地址表列一般是由若干個變量的地址組成的。2.3格式化輸入例:#definePI3.14159Main(){floatr,area;scanf(“%f”,&r);area=PI*r*r;Printf(“area=%f”,area);}“&”是求地址運算符,&r表示取變量r的地址。第十六頁,共三十八頁,編輯于2023年,星期四2.3格式化輸入格式說明輸入數(shù)據(jù)格式格式說明輸入數(shù)據(jù)格式%d輸入十進制整型數(shù)%x輸入十六進制整型數(shù)%c輸入一個字符%u輸入無符號的十進制整數(shù)%o輸入八進制整型數(shù)%f輸入單精度或雙精度數(shù)Scanf函數(shù)中格式說明說明:(1)當(dāng)從鍵盤輸入多個數(shù)值數(shù)據(jù)時,輸入數(shù)值數(shù)據(jù)之間用分隔符(包括空格符、制表符和回車符;但不包括逗號)隔開。且格式說明類型與輸入項類型一一對應(yīng)匹配,個數(shù)相同。如:intx,y,z;scanf(“%d%d%d”,&x,&y,&z);則鍵盤輸入格式:10<分隔符>20<分隔符>30<回車>例如下輸入語句intx,y,z;scanf(“%d%d”,&x,&y,&z);如輸入形式為10<分隔符>20<分隔符>30<回車>則只能對x和y變量分別輸入10和20.第十七頁,共三十八頁,編輯于2023年,星期四說明:(2)與printf相似,在scanf函數(shù)中的格式字符前可以用一個整數(shù)指定輸入數(shù)據(jù)所占的寬度,但對實數(shù)不能指定小數(shù)的位數(shù)。例如:如下語句inta,b;scanf(“%3d%2d”,&a,&b);printf(“%d,%d”,a,b);輸入數(shù)據(jù)123456789<回車>,輸出結(jié)果為123,45(3)路過輸入數(shù)據(jù)的方法??梢栽诟袷阶址c%之間加入一個“*”使輸入過程路過輸入的數(shù)據(jù)。如:intx,y,z;scanf(“%d,%d,%d”,&x,&y,&z);如下輸入:10<分隔符>20<分隔符>30<分隔符>40<回車>則將會10賦給變量x,跳過20,30賦給變量y,40賦給變量z。2.3格式化輸入第十八頁,共三十八頁,編輯于2023年,星期四(4)、若在scanf函數(shù)的輸入控制串中含有其他的字符,則在輸入時要求一一對應(yīng)的位置原樣輸入這些字符。如:intx,y,z;scanf(“%d,%d,%d”,&x,&y,&z);如下輸入:10<分隔符>20<分隔符>30<分隔符>40<回車>則將會10賦給變量x,跳過20,30賦給變量y,40賦給變量z。2.3格式化輸入例:執(zhí)行以下程序時輸入1234567<CR>,則輸出結(jié)果是#include<stdio.h>Main(){inta=1,b;scanf(“%2d%2d”,&a,&b);printf(“%d%d\n”,a,b);}1234第十九頁,共三十八頁,編輯于2023年,星期四小結(jié):1、scanf的輸入分隔符不包含逗號,因此在使用鍵盤輸入數(shù)據(jù)時,不能以逗號作為分隔符。如果需要以逗號作分隔符,則格式為:scanf(“%d,%d”,&a,&b);則輸入為10,20<回車>2、一般情況下,scanf的格式控制字符串中不要包含其他非格式控制符,否則往往容易混淆。

3、使用scanf時,如果數(shù)據(jù)輸入未能完成,則程序一直等待鍵盤輸入,此時用戶應(yīng)該完成數(shù)據(jù)輸入。4、使用scanf給變量賦值和直接使用賦值語句給變量賦值,都能使變量的值發(fā)生改變,但二者有本質(zhì)區(qū)別。2.3格式化輸入第二十頁,共三十八頁,編輯于2023年,星期四字符輸入函數(shù)getchar語法:getchar();注意:()內(nèi)為空功能:要求用戶在程序執(zhí)行時從鍵盤上輸入一個字符,輸入的字符先放在緩沖區(qū)中,等待用戶按回車鍵確認(rèn),用戶敲入回車鍵后,該函數(shù)才真正獲得輸入的字符,同時將輸入的字符顯示在屏幕上。使用時,一般用一個字符變量接收getchar()獲得的字符。例:#include<stdio.h>main(){charc;c=getchar();putchar(c);}例:#include<stdio.h>main(){putchar(getchar());}2.4格式化字符輸入第二十一頁,共三十八頁,編輯于2023年,星期四說明:c語言程序執(zhí)行時,首先會找到main函數(shù),然后按順序執(zhí)行main函數(shù)內(nèi)部的每條語句,當(dāng)遇到scanf語句時,程序會暫停,等待用戶輸入數(shù)據(jù)后按回車,才繼續(xù)向下運行,運行到main函數(shù)的最后一條語句后,運行結(jié)束,可以看結(jié)果了。用戶輸入時應(yīng)按格式控制部分要求的格式輸入,否則會出錯。(1)格式控制部分若有普通字符,按原樣輸入。(注:scanf函數(shù)的格式控制部分中,不應(yīng)該出現(xiàn)轉(zhuǎn)義字符。)(2)格式控制部分若有格式說明符,如%d,%f等,要求輸入相應(yīng)格式的數(shù)據(jù)。第二十二頁,共三十八頁,編輯于2023年,星期四思考:像上例的scanf(“%d%d”,&a,&b);語句,格式說明部分只要求輸入兩個十進制整數(shù),并且兩個%d相連,之間沒有任何間隔符,那么在輸入的時候是不是直接輸入兩個相連的整數(shù)呢?第二十三頁,共三十八頁,編輯于2023年,星期四2.5順序結(jié)構(gòu)程序設(shè)計舉例例1:輸入一個華氏溫度,要求輸出對應(yīng)的攝氏溫度(保留兩位小數(shù)),轉(zhuǎn)換公式為c=5/9(f-32)。分析問題,找出求解問題的方法和步驟(簡稱問題求解的算法)。該問題的求解步驟很簡單,首先要從鍵盤輸入一個華氏溫度,存儲在一個變量里,供以后做華氏溫度向攝氏溫度的轉(zhuǎn)換用;接著,使用轉(zhuǎn)換公式,將轉(zhuǎn)換后的攝氏溫度值保存在另一變量中,等待輸出;然后輸出該攝氏溫度值。第二十四頁,共三十八頁,編輯于2023年,星期四用c語言語句描述上面的算法,寫成完整的程序。main(){floatf,c;scanf(“%f”,&f);c=5.0/9*(f-32);printf(“%.2f\n”,c);}書寫程序時,注意:(1)首先,應(yīng)考慮程序中要使用幾個變量,每個變量的含義及類型(2)變量應(yīng)在有了確定值后,才可以使用(3)數(shù)學(xué)表達(dá)式到c語言表達(dá)式的轉(zhuǎn)換

2.5順序結(jié)構(gòu)程序設(shè)計舉例第二十五頁,共三十八頁,編輯于2023年,星期四例2:輸入兩個整數(shù),分別存放在變量a和b中,要求將這兩個變量的值互換,輸出它們的值。分析:完成該問題的算法可分為以下幾步:(1)輸入兩個數(shù),分別存入a和b中(2)將a,b變量的值相互交換(3)輸出交換后的a和b的值問題是:第(2)步如何具體實現(xiàn)?2.5順序結(jié)構(gòu)程序設(shè)計舉例第二十六頁,共三十八頁,編輯于2023年,星期四main(){inta,b,c;scanf(“%d,%d”,&a,&b);printf(“first:a=%d,b=%d\n”,a,b);c=a;a=b;b=c;printf(“l(fā)ater:a=%d,b=%d\n”,a,b);}2.5順序結(jié)構(gòu)程序設(shè)計舉例第二十七頁,共三十八頁,編輯于2023年,星期四例3:編寫c程序,按下列公式計算并輸出s的值,其中,a和b的值由鍵盤輸入。s=2ab/(a+b)2分析:求解該問題的算法分為以下幾步(1)輸入a和b的值(2)由公式計算出s的值(3)輸出s2.5順序結(jié)構(gòu)程序設(shè)計舉例第二十八頁,共三十八頁,編輯于2023年,星期四main(){floata,b,s;scanf(“%f,%f”,&a,&b);s=2*a*b/((a+b)*(a+b));printf(“s=%f\n”,s);}2.5順序結(jié)構(gòu)程序設(shè)計舉例第二十九頁,共三十八頁,編輯于2023年,星期四若程序如下,則不能實現(xiàn)題意要求的功能。為什么?main(){inta,b;floats;scanf(“%d,%d”,&a,&b);s=2*a*b/((a+b)*(a+b));printf(“s=%f\n”,s);}2.5順序結(jié)構(gòu)程序設(shè)計舉例第三十頁,共三十八頁,編輯于2023年,星期四思考:如果要求對上面的程序作修改,但不允許改變變量的類型,使程序仍能實現(xiàn)題意要求的功能,應(yīng)該怎么辦?第三十一頁,共三十八頁,編輯于2023年,星期四習(xí)題1、以下程序運行時若從鍵盤輸入:102030<回車>。輸出結(jié)果是#include“stdio.h”Main(){inti=0,j=0,k=0;Scanf(“%d%*d%d”,&i,&j,&

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論