猜大小源碼
Ⅰ c語言猜數字游戲源代碼
小游戲2048:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<time.h>
#include<windows.h>
int jsk( ); //計算空格數
void rsgm( ); //重置游戲
void inkey( ); //按鍵輸入
void left( ); //向左移動
void right( ); //向右移動
void up( ); //向上移動
void down( ); //向下移動
void show( ); //輸出界面
void adnum( ); //添加隨機數
void yes( ); //游戲是否結束(1是0否)
void gtxy(int x, int y); //控制游標位置的函數
int a[4][4]; //存儲16個格子中的數字
int score = 0; //每局得分
int best = 0; //最高得分
int ifnum; //是否需要添加數字(1是0否)
int over; //游戲結束標志(1是0否)
int i,j,k;
int main( )
{ rsgm( ); //重置游戲
inkey( ); //按鍵輸入
return 0;
}
void Color(int a) //設定字元顏色的函數(a應為1-15)
{ SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a); }
void rsgm( ) //重置游戲
{ score = 0; ifnum = 1; over = 0; srand((unsigned)time(0)); //啟動隨機數發生器
int n = rand( ) % 16; //隨機函數產生0-15的數字
for (i = 0; i < 4; i++)
{for (j = 0; j < 4; j++)
{ if (n == 0) { int k = rand( ) % 3; if (k == 0 || k == 1) { a[i][j] = 2; }
else { a[i][j] = 4; } n--; }
else { a[i][j] = 0; n--; }
}
}
adnum( );
system("cls");
CONSOLE_CURSOR_INFO gb={1,0}; //以下兩行是隱藏游標的設置,gb代指游標
SetConsoleCursorInfo( GetStdHandle(STD_OUTPUT_HANDLE), &gb );
Color(14); //設置字體淡黃色
printf(" 2048小游戲"); Color(7); //恢復白字黑底
printf(" ┌──────┬──────┬──────┬──────┐");
printf(" │ │ │ │ │");
printf(" ├──────┼──────┼──────┼──────┤");
printf(" │ │ │ │ │");
printf(" ├──────┼──────┼──────┼──────┤");
printf(" │ │ │ │ │");
printf(" ├──────┼──────┼──────┼──────┤");
printf(" │ │ │ │ │");
printf(" └──────┴──────┴──────┴──────┘");
show( );
}
void show( ) //輸出界面
{ for(i=0;i<4;i++)
for(j=0;j<4;j++)
{ gtxy(7*j+9,2*i+4); //gtxy(7*j+9, 2*i+4)是游標到指定位置輸出數字
if(a[i][j]==0){printf(" "); Color(7); printf("│");}
else if(a[i][j]<10){ if (a[i][j] == 2) { Color(14); }
else if (a[i][j] == 4) { Color(13); }
else if (a[i][j] == 8) { Color(12); }
printf(" %d ", a[i][j]); Color(7 ); printf("│");
}
else if (a[i][j] < 100){if (a[i][j] == 16) { Color(12); }
else if (a[i][j] == 32) { Color(10); }
else if (a[i][j] == 64) { Color(2 ); }
printf(" %d ", a[i][j]); Color(7); printf("│");
}
else if (a[i][j] < 1000) {if (a[i][j] == 128) { Color(9); }
else if (a[i][j] == 256) { Color(1); }
else if (a[i][j] == 512) { Color(13); }
printf(" %d ", a[i][j]); Color(7); printf("│");
}
else if (a[i][j] < 10000) {if (a[i][j] == 1024) { Color(5); }
else { Color(15); }
printf(" %d ", a[i][j]); Color(7); printf("│");
}
}
if (jsk( ) == 0)
{ yes( ); if (over) { gtxy(9,12); Color(10);
printf(" 游戲結束!是否繼續? [ Y/N ]:"); }
}
}
void inkey( ) //按鍵輸入
{ int key;
while (1)
{ key = getch( );
if (over) { if (key == 89|| key == 121) { rsgm( ); continue; }
else if (key == 78|| key == 110) { return; }
else continue; }
ifnum = 0;
if(key==224)key=getch( );
switch (key)
{ case 75: left( ); break;
case 77: right( ); break;
case 72: up( ); break;
case 80: down( );break;
}
if (score > best) { best = score; }
if (ifnum) { adnum( ); show( ); }
}
}
int jsk( ) //計算空格數
{ int n = 0;
for (i = 0; i < 4; i++)
{ for (j = 0; j < 4; j++) { if ( a[i][j] == 0) {n++;} } }
return n;
}
void left( ) //向左移動
{ for (i = 0; i < 4; i++)
{for (j = 1, k = 0; j < 4; j++)
{ if (a[i][j] > 0)
{ if ( a[i][k] == a[i][j])
{ a[i][k] *= 2; k++;
score = score + 2 * a[i][j];
a[i][j] = 0; ifnum = 1; }
else if ( a[i][k] == 0) { a[i][k] = a[i][j]; a[i][j] = 0; ifnum = 1; }
else { a[i][k + 1] = a[i][j]; if ((k + 1) != j) { a[i][j] = 0; ifnum = 1; }
k++; }
}
}
}
}
void right( ) //向右移動
{for (i = 0; i < 4; i++)
{for (j = 2, k = 3; j >= 0; j--)
{if (a[i][j] > 0)
{ if (a[i][k] == a[i][j])
{a[i][k] *= 2; k--; score = score + 2 * a[i][j]; a[i][j] = 0; ifnum = 1; }
else if ( a[i][k] == 0) {a[i][k] = a[i][j]; a[i][j] = 0; ifnum = 1; }
else { a[i][k - 1] = a[i][j]; if ((k - 1) != j) { a[i][j] = 0; ifnum = 1; } k--; }
}
}
}
}
void up( ) //向上移動
{for (i = 0; i < 4; i++)
{for (j = 1, k = 0; j < 4; j++)
{if (a[j][i] > 0)
{if ( a[k][i] == a[j][i]) { a[k][i] *= 2; k++;score = score + 2 * a[j][i];
a[j][i] = 0; ifnum = 1; }
else if ( a[k][i] == 0) { a[k][i] = a[j][i]; a[j][i] = 0; ifnum = 1; }
else { a[k + 1][i] = a[j][i]; if ((k + 1) != j) { a[j][i] = 0; ifnum = 1; }
k++; }
}
}
}
}
void down( ) //向下移動
{ for (i = 0; i < 4; i++)
{for (j = 2, k = 3; j >= 0; j--)
{if (a[j][i] > 0)
{if (a[k][i] == a[j][i])
{a[k][i] *= 2; k--;score = score + 2 * a[j][i]; a[j][i] = 0; ifnum = 1; }
else if (a[k][i] == 0) {a[k][i] = a[j][i]; a[j][i] = 0; ifnum = 1; }
else {a[k - 1][i] = a[j][i];
if ((k - 1) != j) {a[j][i] = 0; ifnum = 1; } k--; }
}
}
}
}
void adnum( ) //添加隨機數
{ srand(time(0)); int n = rand( ) % jsk( );
for (int i = 0; i < 4; i++)
{for (int j = 0; j < 4; j++)
{ if (a[i][j] == 0) {if (n != 0) { n--; }
else {int k = rand( ) % 3;
if (k == 0 || k == 1) {a[i][j] = 2; return; }
else {a[i][j] = 4; return; } }
}
}
}
}
void yes( ) //游戲是否結束
{ for (int i = 0; i < 4; i++)
{for (int j = 0; j < 3; j++)
{if (a[i][j] == a[i][j + 1] || a[j][i] == a[j + 1][i]) {over = 0; return; }}
}
over = 1;
}
void gtxy(int x, int y) //控制游標位置的函數
{ COORD zb; //zb代指坐標
zb.X = x;
zb.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), zb);
}
Ⅱ 編程先由計算機「想」一個1~100之間的數請人猜,如果人猜對了,則計算機給出提示「Right!」,否則提示「Wr
僅提供思路,自己實現比拿源碼照抄好;
1,設置隨機數種子,一般使用當前時間, srand;
2,產生隨機數,rand,將產生的隨機數調整到1~100之間;
3,此處開始while循環;
4,讓人開始猜數,接收輸入,判斷大小,顯示對應提示,如果大小相同,退出循環;
end
Ⅲ 用java如何編寫一個猜拳游戲
我之前寫了個猜拳游戲的源代碼,不過沒你想的這么精彩。你才給5分就給你你自己修改了,應該很簡單的。要多給點分我可以幫你修改。
import java.util.Scanner;
import java.util.Random;
public class caiquan
{
final int jian=0;
final int shitou=1;
final int bu=2;
public static void main(String[] args)
{
String yn="y";
while (yn.equals("y"))
{
Scanner scanner = new Scanner(System.in);
System.out.println("歡迎玩猜拳游戲。請輸入0,1,2:0表示剪刀,1表示石頭,2表示布");
int a = scanner.nextInt();
Random rd = new Random();
int b = rd.nextInt(3);
switch (b)
{
case 0:
{
System.out.println("系統出的是剪刀");
switch(a)
{
case 0:System.out.println("平");break;
case 1:System.out.println("贏");break;
case 2:System.out.println("輸");break;
}
}
break;
case 1:
{
System.out.println("系統出的是石頭");
switch(a)
{
case 0:System.out.println("輸");break;
case 1:System.out.println("平");break;
case 2:System.out.println("贏");break;
}
}
break;
case 2:
{
System.out.println("系統出的是布");
switch(a)
{
case 0:System.out.println("贏");break;
case 1:System.out.println("輸");break;
case 2:System.out.println("平");break;
}
}
}
Scanner ynn = new Scanner(System.in);
System.out.println("是否繼續?是請輸入y,否則輸入n。");
yn=ynn.next();
}
}
}
Ⅳ C語言 猜大小 循環10次退出 在線等
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void main ()
{
int i=0;
int s;
int t=0;
srand((int)time(NULL)); /*以時間作為種子,以便每次運行產生不同的隨機數)*/
s=rand()%100+1; /*產生1-100的隨機數*/
printf("%d\n",s); /*列印生成的隨機數(用於檢驗)
while(i<10)
{
printf("請輸入一個1-100的數字= ");
scanf("%d",&t);
if(t==s) /*正確則跳出循環
{
printf("Right\n");
break;
}
else /*否則判斷大還是小
{
if(t<s)
{
printf("Wrong!\n");
printf("Too low\n");
i++; /*並且將競猜次數+1
}
else
{
printf("Wrong!\n");
printf("Too high\n");
i++; /*並且將競猜次數+1
}
}
}
}
你的問題:
1.產生的隨機數每次是固定的,應該引入#include<time.h>和srand(time(NULL))
2.輸入之後,並不能判斷是否正確,而是要等到下一次輸入才判斷。
Ⅳ C語言編程題(設計一個猜數字的小游戲)滿意再加200分!!!!
我看了樓上幾個的答案,功能均不是很完善,所以我決定來試一試
,應該是今天最遲是明天可以貼出來了.希望不要那麼快就結貼....
哈哈.....經過了幾個小時的奮戰.. 終於搞出來了!!!!!!!!!!!!!!!!!!! 你題目要求的功能幾乎全部實現.希望你認真調試一下!!!!!!
調試環境.vc++ 6.0. 支持中文編譯的編譯器都可以調試運行的.
注意事項:如果編譯器是不支持中文顯示的就會出現亂碼的,所以最好是在支持中文顯示的編譯器上面編譯運行.例如:vc++ 6.0以上的版本!!!!
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include<windows.h>
#include<string.h>
#define MAX 5
struct record
{
char name[10];
int sorce;
}rec[MAX],Rec;
int n; //記錄行數
int num; //輸入的數字
void display(); //開始界面
void xuanze(); //選擇函數
void sys(int a); //操作函數
void newgame(); //新游戲
void vdisplay(); //瀏覽記錄界面
void vxuanze(); //瀏覽選擇函數
void help(); //幫助說明
void vsys(int a); //瀏覽操作函數
void viewsorce(); //按記錄的順序瀏覽
void viewname(); //按記錄的姓名瀏覽
void viewsname(); //按記錄和姓名瀏覽
void delrec(); //刪除記錄
int qushu(); //取數函數
int tishi(int aa); //提示函數
void addrec(int a); //判斷並且增加記錄
void recread(); //讀取記錄文件
void recwrite(); //寫入記錄文件
///////////////////////////////////////////////////////////////////////////////////////////////
////////////////////函數定義//////////////
void display() //開始界面
{
system("cls"); //清屏
printf(" ============================================\n");
printf(" ================數字競猜游戲================\n");
printf(" ============================================\n");
printf("\n");
printf(" 1: 新游戲\n");
printf("\n");
printf(" 2: 瀏覽記錄\n");
printf("\n");
printf(" 3: 幫助說明\n");
printf("\n");
printf(" 4: 清除記錄\n");
printf("\n");
printf(" 5: 退出\n");
printf("\n");
printf(" ============================================\n");
xuanze();
}
void xuanze() //選擇函數
{
int a;
printf("請輸入你所選擇的操作數:\n");
scanf("%d",&a);
if(a==1||a==2||a==3||a==4||a==5)
{
sys(a);
}//選擇相應的操作數執行函數
else
{
printf("錯誤的操作數!\n");;
printf("\n");
printf("請按任意鍵繼續...\n");
getchar();
getchar();
display();
}
}
void sys(int a) //操作函數
{
switch(a)
{
case 1:newgame();break;
case 2:vdisplay();break;
case 3:help();break;
case 4:delrec();break;
case 5:exit(0);break; //退出
}
}
void newgame() //新游戲
{
recread();
system("cls"); //清屏
printf("\n");
printf("記錄列表顯示如下:\n");
printf("\n");
for(int i=0;i<MAX;i++)
{
if(rec[i].sorce==0)printf(" <---空記錄--->\n");
else
printf(" 第 %d 名: 姓名: %s 分數 %d\n",i+1,rec[i].name,rec[i].sorce);
}
printf("\n");
printf("請按任意鍵繼續...\n");
getchar();
getchar();//////////////上面列出記錄文件中的記錄
/////////////////////////////////////////////////////////////////////////////
int snum; //輸入的數字
int sn=10; //機會次數
num=qushu(); //取數
L: system("cls"); //清屏
printf(" ============================================\n");
printf(" ================數字競猜游戲================\n");
printf(" ============================================\n");
printf("\n");
printf(" 1: 顯示答案\n");
printf(" ============================================\n");
printf("\n");
printf("請輸入你猜想的四個數字(格式為9999樣式)你還有 %d 次機會:\n",sn);
scanf("%d",&snum);
if(snum<10000 && snum>1000 || snum==1)
{
if(snum==1)
{
printf("你放棄了本局游戲!該四個數字是: %d\n",num);
printf("\n");
printf("請按任意鍵繼續...\n");
getchar();
getchar();
display();
}
else
{
int flag=tishi(snum);
if(flag!=0 && sn!=0)
{
sn--;
if(sn==0)
{
printf("真是遺憾!十次機會沒有了!沒有關系!下次繼續!\n");
printf("\n");
printf("請按任意鍵繼續...\n");
getchar();
getchar();
display();
}
printf("請按任意鍵繼續猜...\n");
getchar();
getchar();
goto L;
}
else
{
if(sn!=0)addrec(sn);
else
{
printf("請按任意鍵繼續...\n");
getchar();
getchar();
display();
}
}
}
}
else
{
printf("錯誤的操作數!\n");;
printf("\n");
printf("請按任意鍵繼續...\n");
getchar();
getchar();
goto L;
}
}
void help() //幫助說明
{
system("cls"); //清屏
printf(" ============================================\n");
printf(" ==============數字競猜游戲幫助==============\n");
printf(" ============================================\n");
printf("\n");
printf("1.新游戲中,你可以輸入四位數,來競猜系統自動生成的四個數字!,只有十次的機會,\n");
printf(" 每次機會都有相對應的提示,十次的機會利用完了還沒有猜對的話就算失敗!四個數字的\n");
printf(" 相應格式在游戲中會有提示!當成功猜出系統給定的數字時候,就會統計你的成績.當你的\n");
printf(" 成績比記錄文件中的記錄好的時候就會提示你是否把記錄記錄到記錄文件中,當你選擇是\n");
printf(" 的時候就會接著提示你輸入你的名字.再按回車.沒有意外就會提示保存成功!\n");
printf(" 還有要說明的是記錄中的分數是越低就代表成績越好!\n");
printf("2.瀏覽記錄有三種方式!第一種只是列出記錄中的姓名;第二種是列出記錄中的成績次序\n");
printf(" 第三種是姓名跟成績一起列出來!\n");
printf("3.清除記錄就是把記錄文件初始化.即是讓記錄文件為空!\n");
printf("\n");
printf("請按任意鍵繼續...\n");
getchar();
getchar();
display();
}
void vdisplay() //瀏覽記錄界面
{
system("cls"); //清屏
printf(" ============================================\n");
printf(" ================數字競猜游戲================\n");
printf(" ============================================\n");
printf("\n");
printf(" 1: 按記錄的順序瀏覽\n");
printf("\n");
printf(" 2: 按記錄的姓名瀏覽\n");
printf("\n");
printf(" 3: 姓名記錄全部瀏覽\n");
printf("\n");
printf(" 4: 返回上級\n");
printf("\n");
printf(" ============================================\n");
vxuanze();
}
void vxuanze() //瀏覽選擇函數
{
int a;
printf("請輸入你所選擇的操作數:\n");
scanf("%d",&a);
if(a==1||a==2||a==3||a==4)
{
vsys(a);
}//選擇相應的操作數執行函數
else
{
printf("錯誤的操作數!\n");;
printf("\n");
printf("請按任意鍵繼續...\n");
getchar();
getchar();
vdisplay();
}
}
void vsys(int a) //瀏覽操作函數
{
switch(a)
{
case 1:viewsorce();break;
case 2:viewname();break;
case 3:viewsname();break;
case 4:display();break; //返回上級
}
}
void viewname() //按記錄的順序瀏覽
{
recread();
system("cls"); //清屏
printf("\n");
printf("記錄列表顯示如下:\n");
printf("\n");
for(int i=0;i<MAX;i++)
{
if(rec[i].sorce==0)printf(" <---空記錄--->\n");
else
printf(" 第 %d 名: 姓名: %s\n",i+1,rec[i].name);
}
printf("\n");
printf("請按任意鍵繼續...\n");
getchar();
getchar();
vdisplay();
}
void viewsorce() //按記錄的姓名瀏覽
{
recread();
system("cls"); //清屏
printf("\n");
printf("記錄列表顯示如下:\n");
printf("\n");
for(int i=0;i<MAX;i++)
{
if(rec[i].sorce==0)printf(" <---空記錄--->\n");
else
printf(" 第 %d 名: 分數 %d\n",i+1,rec[i].sorce);
}
printf("\n");
printf("請按任意鍵繼續...\n");
getchar();
getchar();
vdisplay();
}
void viewsname() //按姓名和記錄瀏覽
{
recread();
system("cls"); //清屏
printf("\n");
printf("記錄列表顯示如下:\n");
printf("\n");
for(int i=0;i<MAX;i++)
{
if(rec[i].sorce==0)printf(" <---空記錄--->\n");
else
printf(" 第 %d 名: 姓名: %s 分數 %d\n",i+1,rec[i].name,rec[i].sorce);
}
printf("\n");
printf("請按任意鍵繼續...\n");
getchar();
getchar();
vdisplay();
}
void delrec() //刪除記錄
{
recread();
for(int i=0;i<MAX;i++)
{
rec[i].sorce=0;
}
recwrite();
printf("刪除成功!\n");
printf("\n");
printf("請按任意鍵繼續...\n");
getchar();
getchar();
display();
}
int qushu() //取數函數
{
int a=0;
int i=0;
srand( (unsigned)time( NULL ) ); //隨機數種子設置
while(i==0)
{
i=rand(); //這樣做就是為了增加隨機性
i=i%100;
}
L: for(int j=0;j<i;j++)
{
a=a+rand(); //判斷隨機數是否是四位數 如果不是繼續取數
}
a=(a/i+rand())%10000;
if(a<1000)goto L;
return(a);
}
int tishi(int aa) //提示函數
{
int a,b,c,d;
int af,bf,cf,df;
if(aa==num)
{
printf("恭喜!你猜對了!四個數就是:%d\n",num);
return(0);
}
else
{
a=(num-num%1000)/1000;
b=(num%1000-(num%1000)%100)/100;
c=((num%1000)%100-((num%1000)%100)%10)/10; //獲取默認四個數字
d=((num%1000)%100)%10;
af=(aa-aa%1000)/1000;
bf=(aa%1000-(aa%1000)%100)/100;
cf=((aa%1000)%100-((aa%1000)%100)%10)/10; //獲取輸入的四個數字
df=((aa%1000)%100)%10;
if(af>a)printf("\n第一個數應該比 %d 小一點!\n",af);
if(af==a)printf("恭喜!第一個數字對了!應該是: %d\n",af); //數字比較
if(af<a)printf("第一個數應該比 %d 大一點!\n",af);
if(bf>b)printf("第二個數應該比 %d 小一點!\n",bf);
if(bf==b)printf("恭喜!第二個數字對了!就是: %d\n",bf); //數字比較
if(bf<b)printf("第二個數應該比 %d 大一點!\n",bf);
if(cf>c)printf("第三個數應該比 %d 小一點!\n",cf);
if(cf==c)printf("恭喜!第三個數字對了!就是: %d\n",cf); //數字比較
if(cf<c)printf("第三個數應該比 %d 大一點!\n",cf);
if(df>d)printf("第四個數應該比 %d 小一點!\n",df);
if(df==d)printf("恭喜!第四個數字對了!就是: %d\n",df); //數字比較
if(df<d)printf("第四個數應該比 %d 大一點!\n\n",df);
return(1);
}
}
void addrec(int a) //判斷並且增加記錄
{
char c;
int flag=0; //標志位
a=11-a;
recread();
for(int i=0;i<MAX;i++)
{
if(a<rec[i].sorce || rec[i].sorce==0)
{
if(i==4 || rec[i].sorce==0)
{
printf("\n");
printf("恭喜!你的成績 %d 分已經達到了前五名!\n",a);
printf("確認要保存記錄請按'y',任意鍵返回...!\n");
scanf("%s",&c);
if(c!='y')display();
rec[i+1].sorce=rec[i].sorce; //記錄後移
strcpy(rec[i+1].name,rec[i].name);
printf("請輸入你的名字\n");
scanf("%s",&rec[i].name);
rec[i].sorce=a;
recwrite(); //寫入
printf("恭喜!添加成功!\n",a);
flag++;
printf("\n");
printf("請按任意鍵繼續...\n");
getchar();
getchar();
display();
}
else
{
printf("\n");
printf("恭喜!你的成績 %d 分已經達到了前五名!\n",a);
printf("確認要保存記錄請按'y',任意鍵返回...!\n");
scanf("%s",&c);
if(c!='y')display();
for(int j=i;j<MAX-1;j++)
{
rec[j+1].sorce=rec[j].sorce; //記錄後移
strcpy(rec[j+1].name,rec[j].name);
if(rec[j+2].sorce==0)break;
}
printf("\n");
printf("請輸入你的名字\n");
scanf("%s",&rec[i].name);
rec[i].sorce=a;
recwrite(); //寫入
printf("恭喜!添加成功!\n",a);
flag++;
printf("\n");
printf("請按任意鍵繼續...\n");
getchar();
getchar();
display();
}
}
}
if(flag==0)
{
printf("\n");
printf("請按任意鍵繼續...\n");
getchar();
getchar();
display();
}
}
void recread() //讀取記錄文件
{
FILE *fp;
L: fp=fopen("E:\\rec.rec","rb");
if(fp==NULL)
{
recwrite();
goto L; //初始化
}
if(fread(&rec,sizeof(record),MAX,fp)==MAX)
{
}
else
{
printf("文件讀取失敗!");
}
fclose(fp);
}
void recwrite() //寫入記錄文件
{
FILE *fp;
fp=fopen("E:\\rec.rec","wb");
if(fp==NULL)
printf("寫入失敗!\n");
fwrite(rec,sizeof(record),MAX,fp);
fclose(fp);
}
void main()
{
display();
}
////////////////////////////////
Ⅵ c語言,編寫一個猜數字游戲
源碼如下:
/*File:guess.c*/
#include<stdio.h>/*standardinput&outputsupport*/
#include<stdlib.h>/*srand()rand()*/
#include<time.h>/*time()*/
/*宏定義*/
#defineNUMBER_LENGTH5/*隨機數長度*/
#defineNUMBER_LIMIT10/*隨機數限制,每一位0-9*/
#defineINPUT_LENTH128/*輸入緩沖區大小*/
chargoal[NUMBER_LENGTH]={0};/*保存隨機數*/
charflag[NUMBER_LIMIT]={0};/*保存隨機數標志,保證不重復*/
charinput[INPUT_LENTH]={0};/*保存輸入*/
/*初始化用於保存數據的數組*/
voidinitData()
{
inti=0;
while(i<NUMBER_LENGTH)
goal[i++]=0;
i=0;
while(i<NUMBER_LIMIT)
{
flag[i++]=0;
}
}
/*初始化用於保存緩沖區的數組*/
voidinitBuffer()
{
inti=0;
while(i<INPUT_LENTH)
input[i++]=0;
}
/*顯示猜測結果*/
voiddisplay()
{
intcount=0;
inti=0;
while(i<NUMBER_LENGTH)
{
if(input[i]==goal[i])
{
printf("%c",'o');
count++;
}
else
{
printf("%c",'x');
}
i++;
}
printf(" RIGHT:%dbit(s) ",count);
if(count==NUMBER_LENGTH)
{
printf("Youwin!Thenumberis%s. ",goal);
exit(0);
}
}
/*生成隨機數*/
voidgeneral()
{
/*以時間作為時間種子保證生成的隨機數真正具有隨機性質*/
srand((unsignedint)time(NULL));
inti=0;
while(i<NUMBER_LENGTH)
{
chartmp;
do
{
tmp='0'+((i!=0)?(rand()%10):(1+rand()%9));
}while(flag[tmp]!=0);
flag[tmp]=1;
goal[i++]=tmp;
}
}
/*輸入方法,用於猜測*/
voidguess()
{
printf(": ");
scanf("%s",input);
display();
initBuffer();
}
/*主函數,程序主框架*/
intmain(intargc,constchar*argv[])
{
initData();
initBuffer();
general();
while(1)guess();
return0;
}
==============================================
運行結果見附圖,希望我的回答能夠對你有所幫助。