猜數字游戲c語言代碼
#include
#include
//隨機數生成函數srand()與rand()
所需的頭文件
#include
//time()所需的頭文件
int
main()
{
int
sysdata;//系統生成的數據
int
n;
//所猜的數據
int
sum
=
0;//記錄猜的次數
srand((unsigned)time(null));
//隨機數發生器初始化函數,以時間為種子
sysdata
=
rand()%100+1;
//隨機生成1到100的隨機數
printf("退出程序請按:ctrl
+
c!\n");
while(1)
{
printf("請輸入你猜的數據(1-100):
");
if(scanf("%d",&n)
!=
1)
//用於判斷用戶是否結束游戲
{
break;
//跳出while循環,結束游戲
}
sum++;
//每輸入一次數據,猜的次數加1
if(sum
==
10)
//
當猜的次數大於10次的時候重新生成新的隨機數
{
if(n
==
sysdata)
//最後一次猜數正確,輸出結果,結束游戲
{
printf("猜數正確,總共猜了%d次!\n",sum);
break;
//跳出while循環,結束游戲
}
else
//最後一次猜數不正確則重新開始游戲
{
printf("猜數次數超過%d次,重新開始游戲!\n",sum);
sysdata
=
rand()%100+1;
//隨機生成1到100的隨機數
sum
=
0;
}
}
else
{
if(n
==
sysdata)
{
printf("猜數正確,總共猜了%d次!\n",sum);//猜數正確,結束游戲
break;
//跳出while循環,結束游戲
}
else
if(n
>
sysdata)
{
printf("你猜的數據太大!\n");
}
else
{
printf("你猜的數據太小!\n");
}
}
}
printf("猜數游戲結束!\n");
return
0;
}
測試結果:
退出程序請按:ctrl
+
c!
請輸入你猜的數據(1-100):
50
你猜的數據太小!
請輸入你猜的數據(1-100):
75
你猜的數據太小!
請輸入你猜的數據(1-100):
85
你猜的數據太大!
請輸入你猜的數據(1-100):
80
你猜的數據太小!
請輸入你猜的數據(1-100):
82
你猜的數據太小!
請輸入你猜的數據(1-100):
84
猜數正確,總共猜了6次!
猜數游戲結束!
press
any
key
to
continue
② 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;
}
==============================================
運行結果見附圖,希望我的回答能夠對你有所幫助。
③ 猜數字游戲: 要c語言的代碼
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define menu printf("1:開始游戲!2:查看積分榜!3:輸出幫助信息!4:系統設置!0:退出程序!\n")
void sort(int *start, int *end)
{
int *key, *i , *j, temp;
key = start; i = start; j = end;
if(start>=end) return;
while(i != j)
{
while(*j >= *key && j >i) j--; {temp = *j; *j = *key; *key = temp; key = j; }
while(i <j && *i <= *key) i++; {temp = *i; *i = *key; *key = temp; key = i; }
}
sort(start, key-1);
sort(key+1, end);
}
void game(int count, int times)
{
int i, j, f, f1, a[10], b[10], f2, score=100;
FILE *fp;
printf("輸入%d個1至9之間不重復的數 中間用空格隔開\n", count);
srand((unsigned)time(NULL));
for(i=0; i<count; i++)
{ a[i]=rand()%10;
while(1)
{
for(j=0, f=1; j<i; j++)
if(a[i]==a[j]) {a[i]=rand()%10; f=0; break;}
if(f) break;
}
}
printf("產生隨機數為:");
for(i=0; i<count; i++) printf("%d ", a[i]); printf("\n");
while(times)
{
printf("你還有%d次機會\n", times);
f=0, f1=0, f2=1;
for(i=0; i<count; i++)
if(scanf("%d", &b[i])!=1) { printf("輸入格式不正確..你浪費了一次機會\n\n"); f2=0; break;}
if(f2)
for(i=0; i<count; i++)
{ if(f2==0) break;
for(j=i+1; j<count; j++)
if(b[i]==b[j]) { printf("輸入有重復..你浪費了一次機會\n\n"); f2=0; break;}
}
if(f2)
{
for(i=0; i<count; i++)
for(j=0; j<count; j++)
if(a[i]==b[j])
if(i==j) f++;
else f1++;
if(f==count) {printf("你蒙對了!!!\n\n"); ; break;}
printf("有%d個數數值和位置都相同! 有%d個數數值相同,但位置不同\n\n", f, f1);
}
times--; score-=10;
fflush(stdin);
}
if(score>0)
{
fp=fopen("dat.txt", "r");
fread(a,sizeof(int),7,fp);
a[7] = score;
sort(a+2, a+7);
for(i=7; i>2; i--) b[9-i]=a[i]; b[0]=a[0]; b[1]=a[1];
fclose(fp);
fp=fopen("dat.txt", "w");
fwrite(b,sizeof(int),7,fp);
fclose(fp);
}
}
void viewrecord()
{
FILE *fp;
int a[7], i;
if((fp=fopen("dat.txt", "r"))==NULL) printf("無記錄");
else fread(a,sizeof(int),7,fp);
for(i=2; i<7; i++)
printf("第%d名 %d分\n", i-1, a[i]);
printf("按任意鍵鍵退出積分榜\n\n");
fclose(fp);
getchar();
}
void set()
{
int a[7], i;
FILE *fp;
fp=fopen("dat.txt", "r");
fread(a,sizeof(int),7,fp);
printf("修改數字個數\n");
scanf("%d", &a[0]);
printf("修改嘗試次數\n");
scanf("%d", &a[1]);
fp=fopen("dat.txt", "w");
i=fwrite(a,sizeof(int),7,fp);
if(i==7) printf("修改成功!\n");
else printf("修改失敗\n");
printf("按任意鍵鍵回主菜單\n\n");
fclose(fp);
getchar();
}
void main()
{
int a[7], i;
FILE *fp;
char ch;
if((fp=fopen("dat.txt", "r"))==NULL)
{
fp=fopen("dat.txt", "w");
for(i=2; i<7; i++)
a[i]=0; a[0]=4; a[1]=4;
fwrite(a,sizeof(int),7,fp);
fclose(fp);
}
else
fread(a,sizeof(int),7,fp);
printf("1:開始游戲!2:查看積分榜!3:輸出幫助信息! 4:系統設置!0:退出程序!\n");
while((ch=getchar())!='0')
switch(ch)
{
case '1' : fp=fopen("dat.txt", "r"); fread(a,sizeof(int),7,fp); fclose(fp); game(a[0], a[1]); menu; break;
case '2' : viewrecord();menu;break;
case '3' : printf("幫助\n"); getchar(); break;
case '4' : set(); menu; break;
default : ;
}
}
④ 猜數字游戲 C語言簡單程序代碼
#include
#include
#include
#include
int
i,j=1;
int
scores[6];
void
main()
{
char
control='\0';
int
rand1,guess,score;
printf("開始游戲嗎
?(y?n)");
control=getchar();
while(control!='y'&&control!='y'&&control!='n'&&control!='n')//屏蔽其他按鍵
{
printf("無效字元!開始游戲嗎
?(y?n)");
fflush(stdin);
control=getchar();
printf("%c",control);
}
while((control=='y')||(control=='y'))
{
system("cls");
srand((unsigned)time(null));
rand1=rand()%10+1;
//printf("%d",rand1);
for(i=0;i<20;i++)
{
printf("請輸入你猜的數:");
scanf("%d",&guess);
if(guess>rand1)printf("大啦!\n");
else
if(guess
:猜對了\a\n");//響鈴\a
break;
}
i++;
}
i+=1;
if(i==1)
{
score=100;
scores[0]++;
}
else
if(i>=2&&i<=3)
{
score=90;
scores[1]++;
}
else
if(i>=4&&i<=6)
{
score=80;
scores[2]++;
}
else
if(i>=7&&i<=10)
{
score=70;
scores[3]++;
}
else
if(i>=11&&i<=15)
{
score=60;
scores[4]++;
}
else
{
score=0;
scores[5]++;
}
printf("第%d次得分是:%d\n",j,score);
scores[7]+=score;
j++;
printf("是否繼續(y?n)\n");
fflush(stdin);//請輸入緩沖區
control=getchar();
while(control!='y'&&control!='y'&&control!='n'&&control!='n')
{
printf("無效字元!只能按y或y,n或n是否繼續(y?n)\n");
fflush(stdin);
control=getchar();
printf("%c",control);
}
}
system("cls");//清屏
printf("+++++++++++++++-----------------以下是得分情況:---------------*************\n");
for(i=0;i<5;i++)
{
printf("+++++++++++++++------------------得%d分%d次:------------------*************\n",10*(10-i),scores[i]);
}
printf("+++++++++++++++------------------得%d分%d次:------------------*************\n",
0,scores[5]);
}
⑤ C語言編寫猜數字游戲
#include<stdio.h>
#include<time.h>
#include<math.h>
int main()
{
int i,a,n;
srand((int)time(NULL));
n=rand()%100+1;
for(i=0; i<5; i++)
{
printf("請輸入一個介於1到100的整數:");
scanf("%d",&a);
if(a<n)
printf("猜小了!\n");
if(a>n)
printf("猜大了!\n");
if(a==n)
{
printf("猜對了!\n");
break;
}
}
return 0;
}
⑥ c語言:猜數字游戲代碼
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
intmain()
{
intnum,n,i,cnt=0,finish=0;
srand((unsignedint)time(NULL));
num=rand()%100;
printf("請猜數字,0~100之間 ");
do{
scanf("%d",&i);
cnt++;
if(i<0&&i>=100)
{
printf("GameOver ");
finish=1;
}
elseif(i>num)printf("Toobig ");
elseif(i<num)printf("Toosmall ");
else
{
printf("你用了%d次機會猜中!",cnt);
finish=1;
}
}while(!finish);
return0;
}
⑦ C語言 猜數字游戲
#include<stdio.h>
#include<stdlib.h>
voidmain(){
srand(time(0)); //指定隨機數種子
intresult=rand()%1000+1; //產生1~1000的隨機數
intguess; //儲存猜測的數字
//循環提示輸入數字,直到猜測結果正確
do{
printf("請輸入猜測的數字 ");
scanf("%d",&guess);
if(guess<result)
{
printf("太低了 ");
}
elseif(guess>result)
{
printf("太高了 ");
}
}
while(guess!=result);
printf("太棒了 ");
}
⑧ 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);
}
⑨ C語言中猜數字的代碼
再定義兩個變數,在游戲說明後面套個while循環,條件你想要退出輸入的鍵例如:(x=='y')繼續游戲,否者退出!至於統計次數在選者外套用一個for循環語句,在答對的情況下i 自增最後輸出i的值就可以了!
⑩ c語言編程,編譯猜數字游戲
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
void main()/*主函數*/
{
int a,b,times=0,i,j,guess=0,answer[5],g[5];
for(i=0;i<5;i++)/*隨即產生5個數*/
{
srand((unsigned int)time(NULL));/*以當前時間為種子*/
answer[i]=rand()%9+1;/*保證為1-9的數,rand產生隨即0-65535的數,對9取余為0-8,都加1就是1-9了*/
for(j=0;j<i;j++)
while(answer[i]==answer[j])/*檢查有沒有重復的數據,有就重新生成*/
{
answer[i]=rand()%9+1;
j=-1;/*新生成的數要重新檢查,此步後馬上執行j++*/
}
}
printf("隨即的5個數是:");
for(i=0;i<5;i++)
printf("%d",answer[i]);/*輸出結果到屏幕,便於測試*/
printf("\n");
printf("請輸入猜測數字:\n%");
a=0;
while(a!=5)/*a記錄位置對並且數也對的,如果5個都對就是猜對了*/
{
a=0;
b=0;/*b記錄數是有的,但位置不對的個數*/
times++;
printf("第 %d 次猜測:\t",times);
scanf("%d",&guess);
while(guess<12345||guess>99999)/*如果猜的數超過這個范圍就是瞎猜的,肯定不對,再來一次*/
{
printf("你輸入了一個非常規數據,請重新輸入:\t");
scanf("%d",&guess);
}
for(i=4;i>-1;i--)/*把玩家猜的5個數放到數組中,便於檢查對錯*/
{
g[i]=guess%10;
guess=(guess-g[i])/10;
}
for(i=0;i<5;i++)/*檢查數據對錯*/
{
for(j=0;j<5;j++)
{
if(g[i]==answer[j])/*如果猜得的數與結果的某個數一樣就把b加1*/
{
b++;
if(i==j)/*如果位置也對,那就是a加1了,對應的b已經加過,應該減1*/
{
a++;
b--;
}
}
}
}
printf("猜測結果:%dA%dB\n",a,b);
if(a==5)
printf("\t答案正確\n"); /*如果a=5就是猜對了*/
}
}