C語言從鍵盤輸入數(shù)據(jù)_第1頁
C語言從鍵盤輸入數(shù)據(jù)_第2頁
C語言從鍵盤輸入數(shù)據(jù)_第3頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

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

文檔簡介

它們都有格式控制字符串,都有變量列表。不同的是,scanf的變量前要帶?個#include它們都有格式控制字符串,都有變量列表。不同的是,scanf的變量前要帶?個#include<stdio.h>#include<stdlib.h>intmain()04. {程序是?機(jī)交互的媒介,有輸出必然也有輸?。在程序是?機(jī)交互的媒介,有輸出必然也有輸?。在C語?中,有多個函數(shù)可以從鍵盤獲得?戶輸?:scanf()scanf():和printf()類似,scanf()可以輸?多種類型的數(shù)據(jù)。getchar()、getche()、getch():這三個函數(shù)都?于輸?單個字符。gets():獲取??數(shù)據(jù),并作為字符串處理。scanf()是最靈活、最復(fù)雜、最常?的輸?函數(shù),但它不能完全取代其他函數(shù),?家都要有所了解。scanf()是最靈活、最復(fù)雜、最常?的輸?函數(shù),但它不能完全取代其他函數(shù),?家都要有所了解。scanf()函數(shù)scanf是scanformat的縮寫,意思是格式化掃描,也就是從鍵盤獲得?戶輸?。我們先來看?個例?:05.inta,b,c,d;06.scanf("%d",&a);//輸?整數(shù)并賦值給變量a07.scanf("%d",&b);//輸?整數(shù)并賦值給變量b08.printf("a+b=%d\n",a+b);//計(jì)算a+b的值09.scanf("%d%d",&c,&d);//輸?兩個整數(shù)并分別賦值給c、d10.printf("c*d=%d\n",c*d);//計(jì)算c*d的值11.12.system("pause");13.return0;14.}運(yùn)?結(jié)果:運(yùn)?結(jié)果:12↙6060↙a+b=7210231023↙c*d=230↙表?按下回車鍵。從鍵盤輸?12,按下回車鍵,scanf()就會讀取輸?數(shù)據(jù)并賦值給變量a,本次輸?結(jié)束,執(zhí)?下?條語句。接著給變量b賦值,也是同樣的道理。第9第9?代碼中,我們同時(shí)輸?兩個整數(shù)并分別賦值給c、d。注意"%d%d"之間是有空格的,所以輸?數(shù)據(jù)時(shí)也要有空格。也就是說,輸?數(shù)據(jù)的格式要和控制字符串的格式?致。制字符串的格式?致。scanf和scanf和printf?常相似:scanf("%d%d"&a&b);//a和b%d"b);//將變量a和b的是在顯?器上輸出。&稱為取地址符,也就是獲取變量在內(nèi)存中的地址。在《》?節(jié)中講到,數(shù)據(jù)是以?進(jìn)制的形式保存在內(nèi)存中的,字節(jié)(Byte)是最?的可操作單位。為了便于管理,我們給每個字節(jié)分配了?個編號,使?該字節(jié)時(shí),只要知道編號就可以,就像每個學(xué)?都有學(xué)號,?師會隨機(jī)抽取學(xué)號來讓學(xué)?回答問題。字節(jié)的編號是有順序的,從節(jié)時(shí),只要知道編號就可以,就像每個學(xué)?都有學(xué)號,?師會隨機(jī)抽取學(xué)號來讓學(xué)?回答問題。字節(jié)的編號是有順序的,從0開始,接下來是1、2、3……下圖是下圖是4G內(nèi)存中每個字節(jié)的編號(以?六進(jìn)制表?):這個編號,就叫做地址(Address)。這個編號,就叫做地址(Address)。會在內(nèi)存中分配四個字節(jié)的空間,我們將第?個字節(jié)的地址稱為變量a的地址,也就是inta;&獲取它們的地址,scanf會根據(jù)地址把讀取到的數(shù)據(jù)寫?內(nèi)存。&a的值。對于前?我們不妨將它們的地址輸出看?下:我們不妨將它們的地址輸出看?下:#include<stdio.h>#include<stdlib.h>intmain()04. {05.inta='F';06.07.intb=12;intc=452;08.printf("&a=%#x,&b=%#x,&a,&b,&c);09.10.11.system("pause");return0;12. }輸出結(jié)果:輸出結(jié)果:&a=0x18ff48,&b=0x18ff44,&c=0x18ff40&a=0x18ff48,&b=0x18ff44,&c=0x18ff40圖:圖:a、b、c的內(nèi)存地址注意:你看到的地址是虛擬地址,并不等于它在物理內(nèi)存中的地址。虛擬內(nèi)存是現(xiàn)代操作系統(tǒng)因內(nèi)存管理的需要才提出的概念,dos下沒有這個概念,?戶看到的都是真實(shí)的地址。CPU操作的是物理內(nèi)存地址,所以虛擬地址必須經(jīng)過轉(zhuǎn)換才能交給CPU,這是OS的?作,對?戶是透明的。scanf的例?:#include#include<stdio.h>#include<stdlib.h>intmain()04. {運(yùn)?結(jié)果:scanf()的格式控制字符串為05.int06.07.scanf("%d%d",&a,&b);08.printf("a+b=%d\n",a+b);09.10.scanf("%d&a,&b);11.printf("a+b=%d\n",a+b);12.13.scanf("%d,%d,%d",&a,&b,&c);14.printf("a+b+c=%d\n",a+b+c);15.16.scanf("%disbiggerthan%d",&a,&b);17.printf("a-b=%d\n",a-b);18.19.system("pause");20.return0;21.}10 20↙a+b=30100200↙a+b=30056,45,78↙10 20↙a+b=30100200↙a+b=30056,45,78↙a+b+c=17925isbiggerthan11↙a-b=14第?個scanf()的格式控制字符串為"%d%d",中間有?個空格,?我們卻輸?了10 20"%d%d",中間有多個空格,?我們卻輸?了100200 ,中間只有?個空格。這說明scanf()對輸?數(shù)據(jù)之間的空格的處理?較寬松,并不要求空格數(shù)嚴(yán)格對應(yīng)。scanf()的控制字符串為"%d,%d,%d",中間以逗號分隔,所以輸?的整數(shù)也要以逗號分隔。scanf()要求整數(shù)之間以isbiggerthan分隔。開始讀取?戶輸?的內(nèi)容,并根據(jù)格式控制字符串從中提取數(shù)據(jù),只要?戶輸?的內(nèi)容和格式控制字符串匹配,就能夠正確提取。字符串匹配,就能夠正確提取。完成的是從字符串中提取有效數(shù)據(jù)的過程。完成的是從字符串中提取有效數(shù)據(jù)的過程。輸?單個字符scanf?于接收?戶輸?的各種數(shù)據(jù),如果僅僅是輸?單個字符,也可以使?getchar()、getche()或getch()。getchar()使??例:#include#include<stdio.h>#include<conio.h>#include<stdlib.h>intmain()05. {#include<stdio.h>#include<stdlib.h>intmain()04. {05.charc;06.c=getchar();07.printf("c='%c'\n",c);08.09.system("pause");10.return0;11.}運(yùn)?結(jié)果:運(yùn)?結(jié)果:##↙c='#'c='#'你也可以將第5你也可以將第5、6?的語句合并為?個:charc=getchar();getche()使??例:06.charc=getche();07.printf("c='%c'\n",c);08.09.system("pause");10.return0;11.}運(yùn)?結(jié)果:運(yùn)?結(jié)果:#c='#'#c='#'?家親?運(yùn)?程序會發(fā)現(xiàn),剛輸?字符?家親?運(yùn)?程序會發(fā)現(xiàn),剛輸?字符#,getche()就?即獲取,不會等到?戶按下回車鍵,所以運(yùn)?結(jié)果中沒有換?。?getchr()不是,它要等到?戶按下回車鍵才能確認(rèn)輸?結(jié)束,所以運(yùn)?結(jié)果中有換??;剀囨I才能確認(rèn)輸?結(jié)束,所以運(yùn)?結(jié)果中有換?。getch()getch()使??例:#include#include<stdio.h>#include<conio.h>#include<stdlib.h>intmain()05. {#include<stdio.h>#include<conio.h>#include<stdlib.h>intmain()05. {06.charc=getch();07.printf("c='%c'\n",c);08.09.system("pause");10.return0;11.}運(yùn)?程序,輸?運(yùn)?程序,輸?#,結(jié)果為:c='#'c='#'?家親?運(yùn)?程序會發(fā)現(xiàn),?家親?運(yùn)?程序會發(fā)現(xiàn),getch()和getche()類似,輸??個字符就?即獲取,不會等待?戶按下回車鍵。與getche()不同的是,getch()輸?的#并沒有顯?出來。?出來。在C在C語?中,將?戶輸?的內(nèi)容顯?在屏幕上叫做回顯(Echo)。getchar()、getche()是有回顯的,?getch()沒有回顯。回顯在?部分情況下是有必要的,它能夠與?戶及時(shí)交互,讓?戶清楚地看到??輸?的內(nèi)容。但在某些特殊情況下,我們卻不希望有回顯,例如輸?密碼,有回顯是?常危險(xiǎn)的,容易被偷窺。回顯是?常危險(xiǎn)的,容易被偷窺。另外需要注意的是:getchar()位于另外需要注意的是:getchar()位于stdio.h頭?件中,是C語?規(guī)定的標(biāo)準(zhǔn)函數(shù);?getche()、getch()位于conio.h中,它們都不是標(biāo)準(zhǔn)函數(shù),不保證在任何編譯器下都有效。輸?字符串這?由于?家的基礎(chǔ)知識還不夠,沒有學(xué)到數(shù)組和指針,暫時(shí)?法深?講解。下?僅作?個演?:06.charstr1[30],str2[30];//定義兩個字符數(shù)組07.gets(str1);08.scanf("%s",str2);09.puts(str1);10.puts(str2);11.12.system("pa

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論