English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

#include
#include
int main(void)
{
char a='Y';
int x,max=0;

while (a == 'Y' || a == 'y')
{

printf ("請輸入一個整數:");
scanf ("%d",&x);

if (x>max) max=x;

printf("繼續請按Y停止請按任意鍵:");
scanf("%d",&a);

}

printf("最大值為:%d\n",max);
printf("請按任意鍵關閉視窗 . . .");

a=getche();
}

當跑到
printf("繼續請按Y停止請按任意鍵:");
這步驟時
我按任何英文字都會一直跑

"請輸入一個整數:繼續請按Y停止請按任意鍵:"
以上這行字 一直跑n次
請問哪裡出錯了呢

2007-05-05 10:44:29 · 1 個解答 · 發問者 DK寶哥 1 in 電腦與網際網路 程式設計

我會了
printf("繼續請按Y停止請按任意鍵:");
scanf("%d",&a);
這裡應該改成%c
因為a 是字元
a=getche();
putchar('\n');
應該放在
scanf("%c",&a);
下面
最後面應該改成getch();

2007-05-05 13:02:04 · update #1

現在有一個問題就是><

繼續請按Y停止請按任意鍵:

如果按方向鍵的話 就會直接關閉程式><
不知道怎辦

2007-05-05 14:31:34 · update #2

我的執行結果大致上算這樣的
終止不能以n 而是以除了y 其他鍵都能中止的
可是方向鍵 好像不屬於%c 裡面所以...
請輸入一個整數:100
按Y輸入下個整數停止請按任意鍵:Y
請輸入一個整數:200
按Y輸入下個整數停止請按任意鍵:a
最大值:200
按下任意鍵結束程式 . . .

2007-05-06 05:10:34 · update #3

1 個解答

//Power by Visual Studio 2005
#include
#include
int main(int argc, char* argv[]){
//==========START==========//
int x,max=0;
char chYN[2];
do{
//主要的程式開頭
printf("Input a integer: ");
scanf("%d",&x);
if(x>max)
max=x;
printf("max= %d\n",max);
//程式敘述
//主要的程式結束
do{
printf("Continue?(Y/N):");
scanf("%s",chYN);
//互斥或閘 XOR 轉換大寫字母
chYN[0]^=32;
}while(chYN[0]!='Y'&&chYN[0]!='N');
}while(chYN[0]=='Y');
//==========END==========//
system("PAUSE");
return 0;
}

2007-05-06 18:27:05 補充:
// 不按下 Enter 繼續執行
char chYN[2];
do{
printf("Input Y to continue: ");
chYN[0]=getche();
chYN[1]='\0'; // 這行才是關鍵
printf("\n");
}while(chYN[0]=='y');

2007-05-06 18:37:24 補充:
原因為何?

因為電腦執行的程式是一串連續的程式碼,當電腦結束迴圈等待並接收使用者輸入的字元時,會繼續「錯誤讀取」記錄在字元後面的變數或資料。

解決的方法:

在使用者輸入的字元變數後面,加上「字串結束字元」,當電腦讀到「字串結束字元」時,就會立即終止讀取「字串結束字元」後面的變數或資料。

2007-05-05 19:07:15 · answer #1 · answered by Big_John-tw 7 · 0 0

fedest.com, questions and answers