老師這個(gè)案例好啊,對(duì)計(jì)算機(jī)運(yùn)行機(jī)制有了更深刻的體會(huì)![開心]
當(dāng)輸入第一個(gè)字符的時(shí)候,觸發(fā)while循環(huán)語句,轉(zhuǎn)化字符,放入存儲(chǔ)區(qū),回車,打!
這個(gè)案例和我們的思維習(xí)慣不太一樣。通常,我們認(rèn)為回車是命令確認(rèn),回車后才開始工作。其實(shí),該案例是輸入第一個(gè)字符的時(shí)候就開始工作了。很有意思!
![]() ![]() 學(xué)習(xí)達(dá)人
|
T189677gx
展開
|
![]() ![]() 學(xué)習(xí)達(dá)人
|
l314520
展開
|
![]() ![]() 學(xué)習(xí)之星
|
marklearner
展開
#include <stdio.h>
main(){
int c;
printf("請(qǐng)輸入加密字符串:");
scanf("%c",&c);
while(c!='\n'){
if((c>='a'&&c<='z')||(c>='A'&&c<='Z')){
c=c+4;
if((c>'z'&&c<='z'+4)||(c>'Z'&&c<='Z'+4)){
c=c-26;
}
}
printf("%c",c);
scanf("%c",&c);
}
printf("\n"); |
![]() ![]() 學(xué)習(xí)達(dá)人
|
茶茶丸喵
展開
老師scanf輸入的不是一長串字符嗎,怎么while就一個(gè)一個(gè)循環(huán)了呢[尖叫] |
![]() ![]() 打卡Lv2
|
善良的33
展開
老師你好,代碼最后printf后加入的scanf函數(shù)是什么意思沒看懂 ![]() hdylnpu
講師
展開
@ 善良的33 你好,用戶輸入的數(shù)據(jù)不是直達(dá)需求方,而是先到輸入緩存區(qū)的。當(dāng)程序需要數(shù)據(jù)時(shí),是先到緩存區(qū)找數(shù)據(jù),如果緩存區(qū)有數(shù)據(jù),直接從緩存區(qū)讀取,緩存沒有則中斷程序執(zhí)行等待用戶輸入。
本例第一次請(qǐng)求數(shù)據(jù)時(shí)用戶輸入字符串(多個(gè)字符),循環(huán)中再次需要字符時(shí),就從緩存讀取了。
因?yàn)樵趯?shí)質(zhì)上,字符是一個(gè)一個(gè)讀入的。所以循環(huán)內(nèi)部,當(dāng)處理完一個(gè)字符后,輸出處理結(jié)果,再次讀入一個(gè)字符。 |
![]() ![]() 學(xué)習(xí)之星
|
瀟湘怡紅
展開
|
承擔(dān)因您的行為而導(dǎo)致的法律責(zé)任,
本站有權(quán)保留或刪除有爭(zhēng)議評(píng)論。
參與本評(píng)論即表明您已經(jīng)閱讀并接受
上述條款。