【問題】計算do while 執行次數


Recommended Posts

int main(int argc, char *argv[])

{

int r , a;

srand(time(NULL));

r = rand() % 101;

do

{

printf("請輸入介於 0 到 100 (含)的整數\n");

scanf ("%d",&a);

if (a > r)

printf ("太大了,共輸入了%d次\n");

else if (a < r)

printf ("太小了,共輸入了%d次\n");

else if (a == r)

{

printf ("答對了,共輸入了%d次\n");

break;

}

}while(a != r);

system("PAUSE");

return 0;

}

請各位幫個忙吧!!!!!!

鏈接文章
分享到其他網站

#include<stdio.h>

int main(int argc, char *argv[])

{

int r , a,k=0;

srand(time(NULL));

r = rand() % 101;

do

{

printf("請輸入介於 0 到 100 (含)的整數\n");

scanf ("%d",&a);

if (a > r)

printf ("太大了,共輸入了%d次\n",++k);

else if (a < r)

printf ("太小了,共輸入了%d次\n",++k);

else if (a == r)

printf ("答對了,共輸入了%d次\n",++k);

}while(a != r);

system("PAUSE");

return 0;

}

鏈接文章
分享到其他網站

這個要判斷就比較麻煩一點了

迴圈會亂是因為如果輸入非數字會造成錯誤

不過我只會用cin跟cout來改

不會用scanf><

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include<iostream>
using namespace std;


int main(int argc, char *argv[])
{

int r , a,k=0;
srand(time(NULL));
r = rand() % 101;
char str[100];
char ch;
do
{
printf("請輸入介於 0 到 100 (含)的整數\n");
//判斷部分開始
cin>>ch;
while(!isdigit(ch)) //isdigit是判斷是否為數字
{
cin>>str; //清空資料流中的輸入
cout<<"輸入錯誤!請輸入介於 0 到 100 (含)的整數\n";
cin>>ch;
}
cin.putback(ch);
cin>>a;
//判斷部分結束
if (a > r)
printf ("太大了,共輸入了%d次\n",++k);
else if (a < r)
printf ("太小了,共輸入了%d次\n",++k);
else if (a == r)
printf ("答對了,共輸入了%d次\n",++k);
}while(a != r);
system("PAUSE");
return 0;
}

不知道對C的方法比較熟的人可不可以幫忙改寫@@

不過這個方法並不能判斷輸入像"50abc"這樣的東西

abc的部分會留到下一次迴圈才做判斷

但是也只要再修改一下就行了(我懶了)

另外我覺得++k可以提到if前面

不用每次都打一個++k拉(純粹個人意見XD)

鏈接文章
分享到其他網站
試試用ASCII碼判斷吧

不過如果用scanf像這樣寫

scanf("%d",&a);

a是變數,d就是輸入整數的意思

這樣的話會自動忽略所有非數字的部份並以其為分隔

EX:

IN 50abc a=50

IN 50abc2 a=50(第一次) a=2(第二次)

原來scanf是這樣

那我前面說錯了XD

鏈接文章
分享到其他網站

請登入後來留意見

在登入之後,您才能留意見



立即登入