當前位置:首頁 » 編程語言 » 猜數字游戲c語言代碼

猜數字游戲c語言代碼

發布時間: 2022-08-10 02:21:02

① 猜數游戲的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就是猜對了*/
}
}

熱點內容
win7最近打開文件夾 發布:2024-04-26 15:23:00 瀏覽:554
演算法筆談 發布:2024-04-26 15:14:34 瀏覽:283
技算計編程 發布:2024-04-26 14:43:42 瀏覽:140
開普票密碼區和備注是什麼意思 發布:2024-04-26 14:43:31 瀏覽:852
吃雞安卓和蘋果如何加好友 發布:2024-04-26 14:39:10 瀏覽:836
centos編譯命令 發布:2024-04-26 14:18:04 瀏覽:654
網路編程畢設 發布:2024-04-26 14:13:10 瀏覽:208
秦九韶演算法教案 發布:2024-04-26 13:30:22 瀏覽:412
解壓到當前文件夾右鍵 發布:2024-04-26 03:57:08 瀏覽:979
html5android教程視頻下載 發布:2024-04-26 03:09:59 瀏覽:867