第3章格式化的輸入輸出_第1頁
第3章格式化的輸入輸出_第2頁
第3章格式化的輸入輸出_第3頁
第3章格式化的輸入輸出_第4頁
第3章格式化的輸入輸出_第5頁
已閱讀5頁,還剩29頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第三章格式化輸入/輸出

本章要點printf函數scanf函數輸入/輸出系統組成系統結構計算機系統結構硬件系統CPU控制器運算器輸入設備(鼠標、鍵盤、手寫筆、MIC等)輸出設備(顯示器、繪圖儀、打印機等)存儲器內存儲器(RAM)外存儲器(軟盤、硬盤、光盤)觸摸屏“現代計算機之父”-馮·諾依曼從20世紀初,物理學和電子學科學家們就在爭論計算機該采用什么樣的結構人們習慣十進制計數,所以研制模擬計算機的呼聲很高20世紀30年代美籍匈牙利科學家馮·諾依曼大膽地提出,拋棄十進制,采用二進制作為數字計算機的數制基礎同時提出程序存儲的思想(預先編制計算程序,然后讓計算機來按照程序事前制定的計算順序來執行數值計算工作)該思想后來用于現代計算機(馮·諾依曼式計算機)的設計中,世界首臺馮·諾依曼式計算機EDVAC(1949年)計算機基本結構——馮氏結構3.1printf()函數intprintf(“formatstring”,expr1,expr2,…);formatstring:格式串,“”,包含:普通字符:(哪些?)原樣輸出占位符:以%開頭的轉換說明(conversionspecification),說明輸出數據在格式串中的位置和格式,輸出時替換為對應expr值轉換說明符:%后字母,如d、f。expr可以是常量、變量或者表達式。printf("theareais%f\ntheperimeteris%f",PI*radius*radius,2*PI*radius);3.1printf()函數占位符應與要輸出的值配對:數量匹配、格式匹配編譯器不檢查匹配問題錯誤:inti;floatf;Toomanyconversionspecifications: printf("%d%d\n",i);Toofewconversionspecifications: printf("%d\n",i,j);incorrectconversionspecificationsprintf(“%f%d\n”,i,f);3.1.1轉換說明格式:%m.pX或%-m.pX%:格式說明起始符號,不可缺少X為轉換說明符把內存中二進制轉換成相應格式-、m和p皆可選,m,p為整數,-:左對齊輸出,省略則右對齊輸出m:最小域寬(輸出項所占的最少字符數),不足補空,超出擴展p:精度與X有關,eg輸出實數的小數位數,缺省為6轉換說明符d:把待輸出數據從二進制轉換成十進制int型,%o(八進制數),%x(十六進制數)f:把待輸出數據從二進制轉換成十進制(小數形式)float型實數%f:不指定寬度,整數部分全部輸出并輸出6位小數。%-m.pf:輸出共占m列,其中有p位小數,如數值寬度小于m右端補空格。%m.pf:輸出共占m列,其中有p位小數,如數值寬度小于m左端補空格。

轉換說明符e:以指數形式輸出實數:%e:數字部分(又稱尾數)輸出6位小數。%m.pe和%-m.pe:m、p和”-”字符含義與前相同。p:小數位數,m:整個輸出數據所占的寬度。g:自動選f格式或e格式中較短的一種輸出,且不輸出無意義的零。轉換說明符c:char,輸出字符s:string,輸出字符串%ms:輸出占m列,如字符串長于m,將字符串全部輸出;若串長小于m,則左補空格%-ms:字符串向左靠,右補空格%m.ps:輸出占m列,但只取字符串中左端(前)p個字符。右對齊,左補空。如果p>m,則自動取p值,即保證p個字符正常輸出。%-m.ps:左對齊,右補空。#include<stdio.h>intmain(void){ inti; floatx; i=40; x=839.21f; printf("|%d|%5d|%-5d|%5.3d|\n",i,i,i,i); printf("|%10.3f|%10.3e|%-10g|\n",x,x,x); return0;}轉義序列一些特殊符號(非打印字符,不可見)沒有專用符號表示,用轉移序列表示‘\’:轉義字符\n\t\b\aprintf("Item\tUnit\tPurchase\n\tPrice\tDate\n");3.2scanf()函數格式:scanf(“format

string”,地址列表);formatstring:[普通字符]與轉換說明%X(d,i,o,x,f,c,s),地址列表:變量地址列表,用“&”取址輸入多個數據,一般以空格、TAB、回車鍵作為分隔符(不需要在格式控制串中指明)格式符之間用其它字符分隔,則輸入時也用該分隔符%c:輸入字符,如輸入血型,A、B,性別,M(男),F(女),空格或其它字符作為有效字符輸入%s:輸入字符串,比如AB型,名字tom,mike,遇空格、TAB、回車表示結束scanf(“%s”,university);universityof……#include<stdio.h>voidmain() {intnum; scanf("%d",&num);printf("%d\n",num); }地址列表為變量的地址,用“&”取址#include<stdio.h> voidmain(){intnum1,num2;scanf(“%d%d”,&num1,&num2);//兩個%d之間無分隔符printf("%d\t%d\n",num1,num2);}輸入多個數據,一般以空格、TAB、回車鍵作為分隔符#include<stdio.h>voidmain() {intnum1,num2;scanf("%d,%d",&num1,&num2);printf("%d\t%d\n",num1,num2);}程序輸出結果:注意輸入時避免如下錯誤:格式符之間用其它字符分隔,則輸入時也以同樣字符分隔#include<stdio.h>voidmain(){charch;printf("請輸入一個字符:");scanf("%c",&ch); printf("你輸入的字符是:%c\n",ch);}輸入字符什么場合用呢?輸入性別、血型、繼續有否,Y或N【思考】以下程序應如何輸入?#include<stdio.h>voidmain(){ charch1,ch2; scanf("%c%c",&ch1,&ch2); printf("ch1=%c,ch2=%c\n",ch1,ch2);}正確輸入后的程序結果顯示如上圖:【思考】產生右圖結果的原因是什么?%c:空格或其它字符作為有效字符輸入#include<stdio.h>voidmain(){charstr[10];printf("請輸入一個字符串");scanf("%s",str);printf("你輸入的字符串是%s\n",str);}輸入字符串#include<stdio.h>voidmain() {floatnum1,num2;scanf("%f%f”,&num1,&num2);printf("num1=%f\n",num1);printf("num1=%f\tnum2=%f\n",num1,num2);}輸入浮點數scanf(“%.2f”,&num1);scanf(“%.pf”,&a);

不合法輸入時不能規定精度,程序是不能控制操作它的人來輸入數據精度。scanf(“%pd”,&a);合法溫故而知新——printf()函數intprintf(“formatstring”,expr1,expr2,…);expr可以是常量、變量或者表達式。formatstring:普通字符:原樣輸出占位符(轉換說明):以%開頭,輸出時替換為對應expr值溫故而知新——轉換說明格式:%m.pX或-%m.pXX為轉換說明符-、m和p皆可選,m,p為整數,-:左對齊輸出,省略則右對齊輸出m:最小域寬(輸出項所占的最少字符數),不足補空,超出擴展p:精度與X有關,eg輸出實數的小數位數,缺省為6溫故而知新——轉換說明符d:輸出十進制int型,%o(八進制數),%x(十六進制數)f:輸出十進制(小數形式)float型實數e:以指數形式輸出實數g:自動選f格式或e格式中較短的一種輸出。c:char,輸出字符s:string,輸出字符串溫故而知新——scanf()函數格式:scanf(“formatstring”,addrlist);formatstring:一般不含普通字符addrlist:&取地址%與&配對:數量配對,類型配對輸入多個數據分隔:formatstring沒指定分隔符(默認):以空格、TAB、回車鍵作為分隔符scanf(“%d%d%d”,&y,&m,&d);——20120925formatstring明確指定分隔符,則輸入時也用該分隔符,scanf(”%d-%d-%d”,&y,&m,&d);——2012-09-25%c:空格或其它字符作為有效字符輸入,%s:遇空格、TAB、回車表示結束%s:遇空格、TAB、回車表示結束#include<stdio.h>voidmain(void){ charname[20]; printf(“What’syourname?\n”); scanf(“%s”,name); printf(“Mynameis%s\n”,name); return0;}scanf的工作方式模式匹配:輸入串格式串%與&配對:數量配對,類型配對%d%f%c1)整數,2)實數,3)字符匹配成功,讀入數據項,并繼續處理格式串不成功,不再處理格式串的后續部分%d%f%c23fUestc……把當前讀入字符f退回到輸入緩沖輸入緩沖23dUestc……scanf(“%d%f%c”,…);產生鍵盤中斷(等待鍵盤輸入)鍵入緩存匹配23dUestc……同一程序所有讀入共享讀入不成功退回字符#include<stdio.h>intmain(){ inta=0; charb; printf("Enteranumber!\n"); scanf("%d",&a); scanf("%c",&b); printf("i=%d\tc=%c\n\n",i,c); return0;}//輸入23f//不用輸入scanf的工作方式30scanf("%d%d%f%f",&i,&j,&x,&y);輸入:[空格]1-20.3-4.0e3¤(¤:換行符)scanf處理輸入如下:%d.讀入1,再讀入-,-不屬于整數,退回,存1到i%d.存–20到j,退回

.%f.存0.3到x,退回-%f.存–4.0×103到y退回換行溫故而知新——printf()函數intprintf(“formatstring”,expr1,expr2,…);expr可以是常量、變量或者表達式。formatstring:普通字符:原樣輸出占位符(轉換說明):以%開頭,輸出時替換為對應expr值占位符與表達式匹配數量匹配類型匹配溫故而知新——轉換說明格式:%m.pX或%-m.pXX為轉換說明符-、m和p皆可選,m,p為整數,-:左對齊輸出,省略則右對齊輸出m:最小域寬(輸出項所占的最少字符數),不足補空,超出擴展p:精度與X有關,eg輸出實數的小數位數,缺省為6溫故而知新——轉換說明符d:輸出十進制int型,%o(八進制數),%x(十六進制數)f:輸出十進制(小數形式)float型實數e:以指數形式輸出實數g:自動選f格式或e格式中較短的一種輸出。c:char,輸出字符s:string,輸出字符串溫故而知新——scanf()函數格式:scanf(“formatstring”,addrlist);formatstring:一般不含普通字符addrlist:&取地址%與&配對:數量配對,類型配對輸入多個數據分隔:formatstring沒指定分隔符(默認):以空格、TAB、回車鍵作為分隔符scanf(“%d%d%d”,&y,&m,&d);——20120925formatstring明確指定分隔符,則輸入時也用該分隔符,scanf(”%d-%d-%d”,&y,&m,&d);——2012-09-25%c:空格或其它字符作為有效字符輸入%s:遇空格、TAB、回車表示結束溫故而知新——scanf的工作方式模式匹配:數量,類型匹配%與&Scanf(“%d%f%c”,&a,&b,&c)輸入串與格式串(占位符)“%d%f%c”輸入串:1)整數,2)實數,3)字符匹配成功讀入數據項不成功停止處理格式串后續部分當前讀入字符退回輸入緩沖海倫-秦九韶公式 a,b,c:三角形三邊長 s:半周長#include<math.h>

sqrt():開根運算程序練習1——“三斜求積術”海倫-秦九韶公式#include<stdio.h>#include<math.h>intmain(){ floata,b,c,s,area;

printf("Enterthelengthsofedgesoftriangle.\n");

scanf("%f%f%f",&a,&b,&c); s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("area=%f\n",area); return0;}程序練習1——“三斜求積術”常用庫函數C語言編譯器提供了許多基本的、常用的功能,以函數形式分別保存在不同的文件中供程序員使用。stdio.h:提供文件I/O處理功能,如:printf,scanf等。string.h:提供字符串處理功能,如:islower,strcat,strcmp,strlen等。math.h:提供常用數學公式,如:sin,log,sqrt等time.h:提供時間、日期功能,如:timegraphics.h:提供圖形功能,包括各種繪制點、線、圓、方和填色等的函數alloc.h:提供動態存儲分配控制臺程序沒有獨立窗口,一般在命令行運行。輸入輸出通過標準IO進行,不象界面程序可以通過鼠標點擊進行操作。一般后臺運行的程序可作為控制臺應用程序。return后程序結束,自動關閉讓計算機等待輸入:scanf();getchar();system(“pause”);#include<stdlib.h>system(“pause”)#include<

溫馨提示

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

評論

0/150

提交評論