亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 2288 | 回復(fù): 16
打印 上一主題 下一主題

[C] 一個(gè)小問題,想不明白~ [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2009-08-27 16:29 |只看該作者 |倒序?yàn)g覽
編寫這么一個(gè)小程序:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
    char    judge;
    double  money;
    printf("請(qǐng)輸入顧客消費(fèi)金額> ");
    scanf("%lf",&money);
    printf("教師鍵入'y',非教師鍵入'n'> ");
for(;;)
{
    scanf("%c",&judge);
    if(judge=='y'||judge=='n')
    break;
    printf("顧客類型不正確,教師輸入'y',非教師輸入'n'> ");
}
if(judge=='y')
{
    printf("總消費(fèi)金額為: %lf\n",money);
    printf("折扣金額為(12%%): %lf\n",money*0.12);
    printf("打折后金額為: %lf\n",money-money*0.12);
    printf("征收的稅款額為(5%%): %lf\n",(money-money*0.12)*0.05);
    printf("應(yīng)付金額為: %lf\n",money-money*0.12+(money-money*0.12)*0.05);
}
else
{
    printf("總消費(fèi)金額為: %lf\n",money);
    printf("征收的稅款額為(5%%): %lf\n",money*0.05);
    printf("應(yīng)付金額為: %lf\n",money+money*0.05);
}
    system("PAUSE");        
    return 0;
}
結(jié)果運(yùn)行時(shí)出現(xiàn)第二個(gè)printf和第三個(gè)printf語句同時(shí)執(zhí)行了,直接跳過了判斷是否為教師的輸入。效果如下:
請(qǐng)輸入顧客消費(fèi)金額>122
教師鍵入'y',非教師鍵入'n'>顧客類型不正確,教師輸入'y',非教師輸入'n'>
怎么回事呢?
當(dāng)我把第九行printf("教師鍵入'y',非教師鍵入'n'> "); 調(diào)到第六行下面,第十二行scanf("%c",&judge);緊接其后。
把for循環(huán)換成while循環(huán)時(shí)這個(gè)問題就沒有了,但是那樣輸入錯(cuò)誤時(shí)還會(huì)要求輸入價(jià)錢,不太好。
我用DEV c++編譯的。
麻煩各位幫忙看看,先謝謝了!

[ 本帖最后由 Quasimodo_lory 于 2009-8-27 16:31 編輯 ]

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2009-08-27 16:39 |只看該作者

回復(fù) #1 Quasimodo_lory 的帖子

呵呵, 很簡(jiǎn)單的問題
在輸入數(shù)字之后, 標(biāo)準(zhǔn)輸入中還有一個(gè)'\n'未被讀取, 所以需要一個(gè),, 清空標(biāo)準(zhǔn)輸入的函數(shù)..:
while(getchar() != '\n'){
        continue;
}

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2009-08-27 16:47 |只看該作者
緩沖的問題...
在scanf前面加
setbuf(stdin,NULL);
or 后加個(gè)getchar()去掉'\n'

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2009-08-27 16:58 |只看該作者

回復(fù) #3 ubuntuer 的帖子

setbuf(stdin,NULL); 什么意思? 不要緩沖區(qū)?
就是無緩沖的輸入? 等下說, 我試驗(yàn)下`

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2009-08-27 17:05 |只看該作者

回復(fù) #3 ubuntuer 的帖子

在這個(gè)程序中, 或者說在Windows 里面的Devc無用...
Linux 里也是一樣的, 但是有個(gè)問題, 在標(biāo)準(zhǔn)輸入無緩沖是什么意思?

[ 本帖最后由 yylogo 于 2009-8-27 17:08 編輯 ]

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2009-08-27 17:12 |只看該作者

回復(fù) #2 yylogo 的帖子

意思是問題出在
scanf("%lf",&money);
這句嗎?所以在它后面加入
while(getchar() != '\n'){
        continue;
}
可以說明白點(diǎn)嗎?我是個(gè)自學(xué)的初學(xué)者,不是很懂耶。

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2009-08-27 17:17 |只看該作者
原帖由 Quasimodo_lory 于 2009-8-27 17:12 發(fā)表
意思是問題出在
scanf("%lf",&money);
這句嗎?所以在它后面加入
while(getchar() != '\n'){
        continue;
}
可以說明白點(diǎn)嗎?我是個(gè)自學(xué)的初學(xué)者,不是很懂耶。

你先說下你是怎么輸入的

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2009-08-27 17:18 |只看該作者

回復(fù) #6 Quasimodo_lory 的帖子

我可不知道哦,  你自己不會(huì)試啊`

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2009-08-27 17:18 |只看該作者

回復(fù) #7 aaaaa5aa 的帖子

一樓說了

論壇徽章:
0
10 [報(bào)告]
發(fā)表于 2009-08-27 17:22 |只看該作者
原帖由 Quasimodo_lory 于 2009-8-27 16:29 發(fā)表
編寫這么一個(gè)小程序:
#include
#include
int main(int argc, char *argv[])
{
    char    judge;
    double  money;
    printf("請(qǐng)輸入顧客消費(fèi)金額> ");
    scanf("%lf",&money);
    printf( ...

回車也是一個(gè)字符!
用getchar()把回車符吃掉
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP