? 發問時間: 電腦與網際網路程式設計 · 1 0 年前

C語言 while 的問題

我要做猜大小的遊戲,

可是跑起來都會怪怪的,

我寫的是這樣:

#include <stdio.h>

#include <stdlib.h>

main()

{

int x,y,money;

char z;

money=2000;

while(z !='q')

{

printf("==========================\n");

if(money <= 0)

{

printf("你輸光了!\n");

system("PAUSE");

return 0;

}

else

{

printf("你有 %d .籌碼.\n",money);

printf("骰子猜大(b), 小(s)或按(q)結束:");

scanf("%c",&z);

x=time(NULL);

srand( x );

y=rand()%6+1;

if(z == 'b' && y>3 || z == 's' && y<3)

{

printf("你猜的是%c\n開出點數是%d\n你贏了!\n",z,y);

money=money+200;

continue;

}

else if(z == 's' && y>3 || z == 'b' && y<3)

{

printf("你猜的是%c\n開出點數是%d\n你輸了!\n",z,y);

money=money-500;

continue;

}

;

}

}

return 0;

}

這是跑出來是這樣:

==========================

你有 2000 .籌碼.

骰子猜大(b), 小(s)或按(q)結束:s

你猜的是s

開出點數是5

你輸了!

==========================

你有 1500 .籌碼.

骰子猜大(b), 小(s)或按(q)結束:==========================

你有 1500 .籌碼.

骰子猜大(b), 小(s)或按(q)結束:b

你猜的是b

開出點數是6

你贏了!

==========================

你有 1700 .籌碼.

骰子猜大(b), 小(s)或按(q)結束:==========================

你有 1700 .籌碼.

骰子猜大(b), 小(s)或按(q)結束:

中間都會多跑了一次間格線和籌碼數,

試了好久都改不好...

請問要怎麼做成這樣呢?

==========================

你有 2000 .籌碼.

骰子猜大(b), 小(s)或按(q)結束:s

你猜的是s

開出點數是5

你輸了!

==========================

你有 1500 .籌碼.

骰子猜大(b), 小(s)或按(q)結束:b

你猜的是b

開出點數是6

你贏了!

==========================

你有 1700 .籌碼.

骰子猜大(b), 小(s)或按(q)結束:

1 個解答

評分
  • 1 0 年前
    最佳解答

    在這一行%的前面加一個空格即可解決問題。

    scanf(" %c",&z);

    2009-06-17 13:54:24 補充:

    更嚴謹一點,多加一行:

    fflush(stdin);

    scanf(" %c",&z);

還有問題?馬上發問,尋求解答。