第4章-鍵盤輸入和屏幕輸出_第1頁
第4章-鍵盤輸入和屏幕輸出_第2頁
第4章-鍵盤輸入和屏幕輸出_第3頁
第4章-鍵盤輸入和屏幕輸出_第4頁
第4章-鍵盤輸入和屏幕輸出_第5頁
已閱讀5頁,還剩31頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

第4章鍵盤輸入和屏幕輸出

數據輸入輸出的概念

及在C語言中的實現(一).所謂輸入輸出是以計算機主機為主體而言的輸出:從計算機向外部輸出設備(顯示器,打印機)

輸出數據輸入:從輸入設備(鍵盤,鼠標,掃描儀)向計算機輸入數據.(二).C語言本身不提供輸入輸出語句,輸入和輸出操作是由C函數庫中的函數來實現的例如:字符輸入函數:getchar字符輸出函數:putchar格式輸入函數:scanf格式輸出函數:printf字符串輸入函數:gets字數穿輸出函數:puts(三).在使用系統庫函數時,要用預編譯命令“#include”將有關的“頭文件”包括到用戶源文件中。例如:在調用標準輸入輸出庫函數時,文件開頭應該有:#include“stdio.h”

或:#include<stdio.h>Devc++環境下還要包含:conio.h頭文件4.1字符數據的輸入輸出4.2簡單的格式輸入輸出4.3較復雜格式的輸入輸出4.1字符數據的輸入輸出

4.1.1用putchar函數輸出一個字符

putchar函數(字符輸出函數)的作用是向終端輸出一個字符。一般形式為putchar(c)c可以是字符型變量或整型變量例4.1輸出單個字符。

#include<stdio.h>

voidmain()

{

chara,b,c;

a=‘B’;b=‘O’;c=‘Y’;

putchar(a);putchar(b);putchar(c);putchar(‘\n’);

}

運行結果:BOYputchar(a);putchar(‘\n’);putchar(b);putchar(‘\n’);putchar(c);putchar(‘\n’);運行結果:BOY4.1.2用getchar函數輸入一個字符

getchar函數(字符輸入函數)的作用是從計算機終端輸入一個字符。

getchar函數沒有參數,一般形式為

getchar()函數的值就是從輸入設備得到的字符例4.2輸入單個字符。

#include<stdio.h>

intmain()

{

charc;

c=getchar();

putchar(c);

putchar(‘\n’);return0;

}

4.2簡單的格式輸入與輸出

4.2.1用簡單的printf函數輸出數據printf函數(格式輸出函數)的作用是向終端(或系統隱含指定的輸出設備)輸出若干個任意類型的數據

。printf函數的一般格式為:

printf(格式控制,輸出表列)例:

printf(”%d,%c\n”,i,c)printf函數的參數包括兩部分:

(1)“格式控制”是用雙撇號括起來的字符串,也稱“轉換控制字符串”,它包括兩種信息。

①格式說明。格式說明由“%”和格式字符組成,如%d、%f等。它的作用是將輸出的數據轉換為指定的格式輸出。格式說明總是由“%”字符開始的。②普通字符。普通字符即需要原樣輸出的字符。例如上面printf函數中雙撇號內的逗號、空格和換行符。

(2)“輸出表列”是需要輸出的一些數據,可以是常量、變量或表達式。

printf函數的例子:

printf(“a=%db=%d”,a,b)若a=3,b=4輸出為a=3b=4基本的格式字符有以下幾種:

⑴d格式符。按十進制整型數據的實際長度輸出。

⑵i格式符。作用與d格式符相同,按十進制整型數據的實際長度輸出。一般習慣用%d而少用%i。⑶c格式符。用來輸出一個字符。

一個值在0~255范圍內的整數,也可以用“%c”使之按字符形式輸出例4.3字符數據的輸出。

#include<stdio.h>

voidmain()

{charc='a';

inti=97;

printf("%c,%d\n",c,c);

printf("%c,%d\n",i,i);

}運行結果:a,97a,97

⑷s格式符,用來輸出一個字符串。

例:

printf(″%s″,″CHINA″);

輸出字符串“CHINA”(不包括雙引號)⑸f格式符。用來輸出實數(包括單、雙精度),以小數形式輸出,不指定整個字段的長度,由系統自動指定。一般的處理方法是:整數部分全部輸出,并輸出6位小數。

注意:在輸出的數字中并非全部數字都是有效數字。單精度實數的有效位數一般為6-7位,雙精度實數的有效位數一般為15-16位。例4.4輸出實數時的有效位數。

#include<stdio.h>

voidmain()

{floatx,y;

x=111111.111;y=222222.222;

printf("%f\n",x+y);

}運行結果:333333.328125結果中只有前七位是有效數字。由于x和y是單精度變量,所以x+y也只能保證7位的精度,后面幾位是沒有意義的。

例4.5輸出雙精度數時的有效位數。

#include<stdio.h>

voidmain()

{doublex,y;

x=11111111.11111111;

y=22222222.22222222;

printf("%f\n",x+y);

}運行結果:33333333.333333x和y是雙精度變量,能提供16位精度,但是由于用%f格式輸出,只能輸出6位小數,有兩位被省掉了。(6)e格式符,用格式說明%e指定以指數形式輸出實數。

例:printf(″%e″,123.456);輸出如下

1.23460

e+002

6列5列C編譯系統自動指定給出數字部分的小數位數為6位,指數部分占5位4.2.2用簡單的scanf函數輸入數據scanf函數作用:按照變量在內存的地址將變量值存進去。一般格式:scanf(格式控制,地址表列)同printf函數是由若干個地址組成的表列,可以是變量的地址,或字符串的首地址例4.6用scanf函數輸入數據。

#include<stdio.h>

voidmain()

{

inta,b,c;

scanf(“%d%d%d”,&a,&b,&c);

printf(“%d,%d,%d\n”,a,b,c);

}

運行情況:

345(輸入a,b,c的值,)

3,4,5(輸出a,b,c的值)a在內存中的地址&是地址運算符scanf函數的格式說明與printf函數的相似,以%開始,以一個格式字符結束,中間可插入附加的字符。

例:scanf(”%d%d%d”,&a,&b,&c);/*格式控制字符串中包含3個格式說明符%d*/scanf(”a=%db=%dc=%d”,&a,&b,&c);/*格式控制字符串中包含格式說明符以外的字符*/說明:scanf函數中的“格式控制”后面應當是變量地址,而不應是變量名。(2)如果在“格式控制”字符串中除了格式說明以外還有其他字符,則在輸入數據時在對應位置應輸入與這些字符相同的字符。(3)在用“%c”格式輸入字符時,空格字符和“轉義字符”都作為有效字符輸入。(4)在輸入數據時,空格,“回車”、“跳格”(Tab)鍵或遇非法輸入,認為該數據結束。(5)對unsigned型變量所需的數據,可以用%u或%d格式輸入。4.3較復雜的格式輸入與輸出

4.3.1輸出數據格式控制除了上節所介紹的基本的格式控制外,還可以用下面一些格式符和附加字符。⑴%md。m為指定的輸出字段的寬度。如果數據的位數小于m,則左端補以空格,若大于m,則按實際位數輸出。例:printf(“%4d,%4d,a,b”);

若:a=123,d=12345,則輸出結果為:123,12345⑵%ld。對于int型數據占2字節的系統,在輸出長整型數據時要在格式字符d前面加一個英文字毋l。例:

longa=135790;/*定義a為長整型變量*/printf(“%ld”,a);%d只適用于范圍為-32768~32767的整型數據,超過此范圍的整數,應該用%ld輸出說明:如果用的是VC++6.0,由于int型和long型數據都分配4個字節,因此用%d可以輸出int和long型數據,不必要用%ld。

⑶%o。以8進制整數形式輸出。由于是將內存單元中的各位的值(0或1)按八進制形式輸出,因此輸出的數值不帶符號,即將符號位也一起作為八進制數的一部分輸出。例:inta=-1;printf("%d,%o",a,a);

-1在內存單元中的存放形式(以補碼形式存放)如下:輸出為:

-1,1777771111111111111111用%d輸出的結果1,111,111,111,111,111||||||177777二進數111就是8進數7。因此上面的數用8進制數表示為17777⑷%x。以16進制數形式輸出整數。同樣不會出現負的十六進制數。例:

inta=-1;printf(“%x,%o,%d”,a,a,a);

輸出結果為

ffff,177777,-1

同樣可以用“%1x”輸出長整型數,也可以指定輸出字段的寬度,如“%12x”。⑸%u。用來輸出無符號(unsigned)型數據,以十進制整數形式輸出。一個有符號整數(int型)也可以用%u格式輸出;反之,一個unsigned型數據也可以用%d格式輸出。按相互賦值的規則處理。unsigned型數據也可用%o或%x格式輸出。

⑹%mc。用來指定輸出字符數據的寬度m

如果有printf(“%3c”,c);

則輸出“a”,即c變量輸出占3列,前2列補空格。例4.7無符號數據的輸出。

#include<stdio.h>

voidmain()

{

unsignedinta=65535;intb=-2;

printf(“a=%d,%o,%x,%u\n”,a,a,a,a);

printf(“b=%d,%o,%x,%u\n”,b,b,b,b);

}

TurboC2.0環境下的運行結果:

a=-1,177777,ffff,65535

b=-2,177776,fffe,65534VC++6.0環境下的運行結果:

a=65535,177777,ffff,65535

b=-2,37777777776,fffffffe,4294967294⑺%ms,指定輸出的字符串占m列。如果字符串本身長度大于m,則突破m的限制,將字符串全部輸出。若串長小于m,則左補空格。

%-ms,如果串長小于m,則在m列范圍內,字符串向左靠,右補空格。

%m.ns,輸出占m列,但只取字符串中左端n個字符。這n個字符輸出在m列的右側,左補空格。

%-m.ns,其中m、n含義同上,n個字符輸出在m列范圍的左側,右補空格。如果n>m,則m自動取n值,即保證n個字符正常輸出。⑻%m.nf,指定輸出的實數共占m列,其中有n位小數。如果數值長度小于m,則左端補空格。

%-m.nf與%m.nf基本相同,只是使輸出的數值向左端靠,右端補空格。例4.8字符串的輸出。

#include<stdio.h>

voidmain()

{

printf(“%3s,%7.2s,%.4s,%-5.3s\n”,“CHINA”,“CHINA”,“CHINA”,“CHINA”);

}

運行結果:

CHINA,CH,CHIN,CHI例4.9輸出實數時指定小數位數。

#include<stdio.h>

voidmain(){

floatf=123.456;

printf(“%f,%10f,%10.2f,%.2f,%-10.2f\n”

,f,f,f,f,f);

運行結果:

123.456001123.456001123.46123.46123.46

(9)%m.ne和%-m.ne。m、n和“-”字符的含義與前相同。此處n指擬輸出的數據的小數部分(又稱尾數)的小數位數。(10)%g,用來輸出實數.

它根據數值的大小,自動選f格式或e格式(選擇輸出時占寬度較小的一種),且不輸出無意義的零。

說明:除了X,E,G外,其他各式字符必須用小寫。可以在printf函數中的“格

溫馨提示

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

評論

0/150

提交評論