PHP 語法:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int com[4],self[4], //com陣列是要儲存電腦隨機產生的數字;self陣列是要儲存使用者自己輸入到num後所分割出來的單個數字
i,j,num; //i變數與j變數都是下面for迴圈要用到的變數;num是要讓使用者輸入一串數字
srand(time(NULL)); //加入此行可以使隨機的數字可以隨著時間變化而不會出現重複的
for (i=0;i<4;i++) { //此for迴圈是要產生隨機數字
com[i]=(rand()%9)+1;
for (j=0;j<i;j++) {
if (com[j]==com[i]) { //這個if判斷如果產生重複的數字則要求電腦再重新產生一數字放回原位置內
i--;
break;
}
}
}
while(1)
{ //這裡的while是為了要在使用者輸入錯誤時重複執行
int a=0,b=0,war=0; //這裡的a,b也就是指遊戲中的a,b;war則是要判斷使用者輸入的數串是否有重複
printf("輸入4個數字(輸入0結束):");
scanf("%d",&num);
if (num==0) { //此if控制當輸入0時
printf("笨蛋~你輸囉!\n") ;
system ("pause");
return 0;
}
else if (num>=10000 || num<1000) //此if是要判斷使用者輸入的數是否為4位數
printf("輸入的數字有誤" );
else { //當輸入的數確定為4位數且不是0時開始判斷a,b
for (i=3;i>=0;i--) { //此for迴圈將使用者輸入數串切割為單個數字放入self陣列
self[i]=num%10;
num/=10;
}
for (i=0;i<4;i++) { //此for迴圈判斷使用者輸入的數串是否有重複
for (j=0;j<i;j++) {
if (self[j]==self[i]) {
war++; //當使用者輸入數字重覆時war++,如果war++過則表示war不等於0可以拿來做下面判斷
break;
}
}
}
if (war==0) { //當war不為0時表示使用者輸入數串沒有重複
for (i=0;i<4;i++) {
if (com[i]==self[i]) //當數字相同且位置也相同時a++...兩個陣列內都放入i表示他們位置相同
a++;
else {
for (j=0;j<4;j++) {
if (com[i]==self[j]) //當數字相同位置不同時b++..位置變數一個為i一個為j
b++;
}
}
}
if (a==4) { //輸出遊戲結果
printf("你輸入的為:%dA%bB\n,a,b");
printf("你答對囉");
system ("pause");
return ;
} else {
printf( "你輸入的為: %d A %d B\n",a,b);
printf("請再輸入" );
}
} else //當war不為0表示數串有重複所以重新執行while迴圈
printf("輸入數字有誤\n" );
}
}
}
這是現在我寫的。我還是不會寫入檔案的說,不知道大大可不可以幫我改一下。
還有我想在玩完一次後,詢問是否再玩一次。該如何改呢?