第03章-標準設備的輸入/輸出_第1頁
第03章-標準設備的輸入/輸出_第2頁
第03章-標準設備的輸入/輸出_第3頁
第03章-標準設備的輸入/輸出_第4頁
第03章-標準設備的輸入/輸出_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第3章標準設備的輸入/輸出計算機基礎教學部2007.8.本章內容3.1輸入/輸出的基本概念3.2格式化輸入輸出函數(shù)的使用3.3常用的字符輸入輸出函數(shù)3.4順序結構程序設計舉例3.1輸入/輸出的基本概念輸入/輸出是對計算機而言的。本章給出標準輸入輸出設備(鍵盤和顯示器)輸入輸出操作的實現(xiàn)。C語言自身沒有提供輸入輸出語句,輸入輸出是通過函數(shù)實現(xiàn)的。計算機輸入設備:鍵盤(標準輸入設備)磁盤文件光盤掃描儀輸出設備:顯示器(標準輸出設備)磁盤文件打印機繪圖儀數(shù)據(jù)輸入數(shù)據(jù)輸出3.2格式化輸入輸出函數(shù)的使用3.2.1格式化輸出函數(shù)printf()一般格式:intprintf(<格式控制字符串>[,輸出量1][,輸出量2]…)

功能:按照格式控制字符串規(guī)定的要求將后面的輸出量的內容輸出到標準輸出設備上。用于輸出各種類型的數(shù)據(jù)。在輸出時,不同的數(shù)據(jù)類型,對應的輸出格式字符不同,在表3-1中給出了C語言中用于輸出的格式字符。例:inti=3,j=4;printf("i=%d,j=%d\n",i,j);格式控制字符串格式說明在格式控制字符串中格式說明:用“%”和格式字符組成。其他字符:原樣輸出。如上例輸出:i=3,j=43.2.1格式化輸出函數(shù)printf()例3.1輸出格式字符的常規(guī)使用#include<stdio.h>main(){ inti=3,j=6; floatx=4.5; doubley=4.9; charc1='A',c2='*'; printf(“%d,%d\n”,i,j);/*輸出整型量*/ printf(“%f,%f\n”,x,y);/*輸出實型量*/ printf(“%c,%c\n”,c1,c2);/*輸出字符型量*/}3.2.1格式化輸出函數(shù)printf()用

f

和lf格式都可輸出double型量。但經(jīng)常用lf格式輸出double型量。輸出結果如下:3,64.500000,4.900000A,*默認小數(shù)點后輸出6位數(shù)例3.2整型量的輸出(d、i、u、o、x、X格式的使用)#include<stdio.h>main(){ charc=-2; inti=-5; longy=65536; printf("c=%d,i=%d,y=%d\n",c,i,y);/*A*/ printf("c=%u,i=%u,y=%u\n",c,i,y);/*B*/ printf("c=%x,i=%x,y=%x\n",c,i,y);/*C*/}A行,將變量c、i、y的值轉換成int型數(shù)據(jù),再按d格式輸出。輸出結果如下:c=-2,i=-5,y=0c=65534,i=65531,y=0c=fffe,i=fffb,y=0解釋A3.2.1格式化輸出函數(shù)printf()例3.2整型量的輸出(d、i、u、o、x、X格式的使用)#include<stdio.h>main(){ charc=-2; inti=-5; longy=65536; printf("c=%d,i=%d,y=%d\n",c,i,y);/*A*/ printf("c=%u,i=%u,y=%u\n",c,i,y);/*B*/ printf("c=%x,i=%x,y=%x\n",c,i,y);/*C*/}B行,將變量c、i、y的值轉換成unsignedint型數(shù)據(jù)后,再按照u格式輸出。輸出結果如下:c=-2,i=-5,y=0c=65534,i=65531,y=0c=fffe,i=fffb,y=0解釋B3.2.1格式化輸出函數(shù)printf()例3.2整型量的輸出(d、i、u、o、x、X格式的使用)#include<stdio.h>main(){ charc=-2; inti=-5; longy=65536; printf("c=%d,i=%d,y=%d\n",c,i,y);/*A*/ printf("c=%u,i=%u,y=%u\n",c,i,y);/*B*/ printf("c=%x,i=%x,y=%x\n",c,i,y);/*C*/}C行,將變量c、i、y的值轉換成unsignedint型數(shù)據(jù)后,再按照x格式輸出(輸出內存內容)。輸出結果如下:c=-2,i=-5,y=0c=65534,i=65531,y=0c=fffe,i=fffb,y=0解釋C3.2.1格式化輸出函數(shù)printf()-2的補碼:1111111111111110c的值:11111110-5的補碼:1111111111111100i的值:111111111111110065536的補碼(即y的值):00000000000000010000000000000000將y的值轉換成整型量后,保留低16位,輸出0。返回A返回B返回C3.2.1格式化輸出函數(shù)printf()例3.3整型量的輸出(c格式的使用)#include<stdio.h>main(){ charc1=65,c2='B'; intm=35,n='$'; printf(“%c%c%c%c\n”,c1,c2,m,n);

/*轉換成char型量輸出*/ printf("%d,%d,%d,%d\n",c1,c2,m,n);

/*轉換成int型量*/}若以c格式輸出,就是將輸出量的值看成ASCII碼值,輸出對應的字符。若以d格式輸出,并且輸出量是char型量,則輸出該字符的ASCII碼值。輸出結果如下:AB#$65,66,35,363.2.1格式化輸出函數(shù)printf()輸出格式說明的完整描述為:參見表3-2,解釋!3.2.1格式化輸出函數(shù)printf()例3.4附加格式字符的使用#include<stdio.h>main(){ inti=152; longj=135790; printf("%2d,%6d,%-6d,",i,i,i); printf("%ld\n",j);

/*%和d之間是附加格式小寫字母l*/}輸出結果如下:152,└┘└┘└┘152,152└┘└┘└┘,135790

解釋3.2.1格式化輸出函數(shù)printf()例3.5附加格式字符的使用(e、f格式的使用)#include<stdio.h>main(){ floatx=1234567.1234; doubley=1234567.1234; printf("%f,%e\n",x,x); printf("%12.2f,%.3f\n",y,y);}輸出結果如下:1234567.125000,1.23457e+06└┘└┘1234567.12,1234567.123解釋3.2.1格式化輸出函數(shù)printf()例3.8轉義字符在輸出格式中的應用#include<stdio.h>main(){ doublem1=100,rate1=0.25,m2=200,rate2=0.18; printf("%.2f\t%.0f%%\t%f\n",m1,rate1*100,m1*rate1);

/*輸出量可以是表達式*/ printf("%.2f\t%.0f%%\t%f\n",m2,rate2*100,m2*rate2);}輸出結果如下:100.00└┘└┘25%└┘└┘└┘└┘└┘25.000000200.00└┘└┘18%└┘└┘└┘└┘└┘36.000000

解釋\t

和%%

等3.2.1格式化輸出函數(shù)printf()3.2.2格式化輸入函數(shù)scanf()3.2.2格式化輸入函數(shù)scanf()一般格式:intscanf(格式控制字符串[,地址1][,地址2]…);功能:從標準輸入設備上輸入數(shù)據(jù)并轉換成內存存儲格式存放到與變量對應的內存空間中。用于輸入各種類型的數(shù)據(jù)。格式控制字符串的組成與printf函數(shù)的類似。地址一般表示變量的地址。例:

inti,j;floatx,y;scanf("%d%d%f%f",&i,&j,&x,&y);將4個輸入數(shù)據(jù)轉換成2個int型量和2個float型量的內存表示形式,分別存入4個變量對應的內存儲空間中。輸入數(shù)據(jù)之間用空格分隔。

輸入:

3└┘5└┘8.2└┘9.3<Enter>

3.2.2格式化輸入函數(shù)scanf()輸入格式說明的完整描述為:3.2.2格式化輸入函數(shù)scanf()參見表3-2。例3.9輸入格式字符的常規(guī)使用#include<stdio.h>main(){ inti; longj; floatx; doubley; scanf("%d%ld",&i,&j); scanf("%f%lf",&x,&y); printf("i=%d,j=%ld\n",i,j); printf("x=%f,y=%f,y=%lf\n",x,y,y);}運行狀況如下:3└┘6└┘8.2└┘9.97<Enter>i=3,j=6x=8.200000,y=9.970000,y=9.970000解釋3.2.2格式化輸入函數(shù)scanf()3.2.2格式化輸入函數(shù)scanf()在輸入數(shù)據(jù)時,數(shù)值之間的分隔符可以是一個或多個空白字符。C語言中的空白字符可以是:空格,<Tab>鍵和<Enter>鍵上例亦可按下述方式輸入:3<Tab>5<Enter>8.2<Enter>9.97<Enter>例3.10輸入格式控制字符串中非格式控制字符的處理

#include<stdio.h>main(){ inti,j; scanf("i=%d,j=%d",&i,&j);

printf("ii=%d,jj=%d\n",i,j);}該程序的運行情況如下:i=6,j=8<Enter>ii=6,jj=8其他字符原樣輸入3.2.2格式化輸入函數(shù)scanf()若改為:

scanf("%d,%d",&i,&j);則正確的輸入為:6,8<Enter>例3.11指定輸入寬度,使用輸入抑制符#include<stdio.h>main(){ inti; floatx; scanf("%3d%*4d%2f",&i,&x); printf("i=%d,x=%f\n",i,x);}該程序的運行情況如下:1234567893<Enter>i=123,x=89.000000解釋3.2.2格式化輸入函數(shù)scanf()例3.12輸入字符型數(shù)據(jù)。#include<stdio.h>main(){ charc1,c2,c3; scanf("%c%c%c",&c1,&c2,&c3);

printf("%c%c%c\n",c1,c2,c3);}在輸入字符型數(shù)據(jù)時,字符之間不需要分隔符。3.2.2格式化輸入函數(shù)scanf()若輸入abc<Enter>

則c1='a',c2='b',c3='c'若輸入a└┘b└┘c<Enter>

則c1='a',c2='└┘',c3='b'若輸入a<Enter>b<Enter>則c1='a',c2='\n',c3='b'分別輸出???例3.14scanf()函數(shù)的返回值#include<stdio.h>main(){ inti,j,k,num;

num=scanf("%d%d%d",&i,&j,&k);

printf("i=%d,j=%d,k=%d\n",i,j,k); printf("num=%d\n",num);}運行狀況1:1└┘2└┘3<Enter>i=1,j=2,k=3num=3scanf()函數(shù)的返回值是正確輸入數(shù)據(jù)的個數(shù)。

3.2.2格式化輸入函數(shù)scanf()運行狀況2:1└┘2└┘x<Enter>i=1,j=2,k=-858993460num=2k是一個不確定的值

3.3常用的字符輸入輸出函數(shù)getchar()和putchar()用于字符數(shù)據(jù)的輸入和輸出。它們實際上是系統(tǒng)提供的“宏”。在本章,讀者可將它們看成函數(shù),按規(guī)定的形式使用即可。getchar()和putchar()除了可以輸入輸出一般的可打印字符外,也可以用于輸入輸出控制字符。3.3常用的字符輸入輸出函數(shù)例3.15putchar()的使用。#include<stdio.h>main(){ inti=66; charc='Y'; putchar(i);/*輸出字母B*/ putchar('O');/*輸出字母O*/ putchar(c);/*輸出字母Y*/ putchar('\n');/*輸出控制字符:換行*/ putchar(i-1);/*輸出字母A*/ putchar(i);/*輸出字母B*/ putchar('\n');/*輸出控制字符:換行*/}輸出結果為:BOYAB解釋3.3常用的字符輸入輸出函數(shù)例3.16getchar()的使用。#include<stdio.h>main(){ charc1,c2; inti; c1=getchar(); c2=getchar(); i=getchar(); putchar(c1); putchar(c2); putchar(i); putchar('\n');}若輸入abc<Enter>

則c1='a',c2='b',i='c'若輸入a└┘b└┘c<Enter>

則c1='a',c2='└┘',i='b'若輸入a<Enter>b<Enter>則c1='a',c2='\n',i='b'本例與例3.12類似3.4順序結構程序設計舉例所有的語句都是按順序執(zhí)行的,每條語句都必須被執(zhí)行,稱為順序控制結構。例3.17輸入三角形的三邊長,求出并輸出三角形面積。設a、b、c為三個邊長,則三角形的面積為:Area=其中s=(a+b+c)/2。3.4順序結構程序設計舉例#include<stdio.h>#include<math.h>main(){ floata,b,c,s,area; scanf("%f,%f,%f",&a,&b,&c); s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("area=%7.2f\n",area);}注意數(shù)

溫馨提示

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

評論

0/150

提交評論