本文目錄一覽:
C語言題目 編程實現數字猜謎遊戲!
一個函數用於生成一個隨機數
再用一個函數進行三次循環
如果循環中輸入的數字猜對了就返回1如果三次循環結束則返回0
主數字判斷返回的結果如果是1則表示猜對否則表示猜錯
然後詢問是否繼續進行猜數字遊戲
下面是一個簡單的代碼
#include stdio.h
#include time.h
void clean_input_buf(void)
{
while(getchar() != ‘\n’);
}
int make_num(int num)
{
srand(num);
return 1+rand()%20;
}
int guess_num(void)
{
int i=3;
int n;
int num;
num=make_num(clock());
while(i)
{
printf(“請輸入一個你猜的數字:”);
scanf(“%d”,n);
if(n == num)
return 1;
clean_input_buf();
–i;
}
return 0;
}
int main(int argc,char **argv)
{
char c;
printf(“猜數字遊戲!\n遊戲要猜測的數字為1-20,每個數字可以猜測3次!\n”);
while(1)
{
if(guess_num() == 1)
printf(“恭喜你,你猜中了!\n”);
else
printf(“很遺憾,你猜錯了!\n”);
redo:
printf(“還要繼續遊戲嗎?繼續輸入Y否則輸入N!\nY/N:”);
c=getchar();
clean_input_buf();
if(c == ‘Y’ || c == ‘y’)
continue;
else if(c == ‘N’ || c == ‘n’)
break;
else
{
printf(“輸入錯誤,請重新輸入!\n”);
goto redo;
}
}
return 0;
}
c語言猜數字遊戲源代碼
小遊戲2048:
#includestdio.h
#includestdlib.h
#includeconio.h
#includetime.h
#includewindows.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(“\n\n\t\t 2048小遊戲”); Color(7); //恢復白字黑底
printf(“\n\t┌──────┬──────┬──────┬──────┐”);
printf(“\n\t│ │ │ │ │”);
printf(“\n\t├──────┼──────┼──────┼──────┤”);
printf(“\n\t│ │ │ │ │”);
printf(“\n\t├──────┼──────┼──────┼──────┤”);
printf(“\n\t│ │ │ │ │”);
printf(“\n\t├──────┼──────┼──────┼──────┤”);
printf(“\n\t│ │ │ │ │”);
printf(“\n\t└──────┴──────┴──────┴──────┘”);
show( );
}
void show( ) //輸出界面
{ for(i=0;i4;i++)
for(j=0;j4;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(“\n\n 遊戲結束!是否繼續? [ 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語言猜謎小遊戲
把int count = 3;定義在do裡面,要不然你循環過去後count=0;這句count0就永不成立。
還有就是在scanf(“%c”, another_game);前要清空緩衝區。
第一種用fflush(stdin)清除緩存,也就是清楚緩存中上一次輸入殘留下來的回車鍵
第二種scanf(” %c”, another_game);;在%c前加上一個空格
第三種在scanf(“%c”, another_game);前加getchar();用於吃掉回車鍵,避免被%c接收
c語言編程 ——數字迷
#includestdio.h
intmain()
{
intT,R,e,n,i,g,v,q,Q,C,E,G,I,N,V;
inta,b,c;
#includestdio.h
intmain()
{
intT,R,e,n,i,g,v,q,Q,C,E,G,I,N,V;
inta,b,c;
for(i=4;i=9;i=i+5){
for(v=8;v=9;v++){
for(e=1;e=9;e=e+2){
for(n=0;n=9;n++){
for(g=0;g=9;g++){
for(c=1;c=9;c++){
for(q=0;q=9;q++){
a=v*10000+i*1000+n*100+g*10+1;
b=(c*1000+i*100+n*10+q)*2;
c=100000+e*1000+n*100+10+e;
if((a+b)==c){
printf(“%d:%d”,C,c);
printf(“%d:%d”,E,e);
printf(“%d:%d”,G,g);
printf(“%d:%d”,I,i);
printf(“%d:%d”,N,n);
printf(“%d:%d”,Q,q);
printf(“R:0 “);
printf(“T:1 “);
printf(“%d:%d”,V,v);}}}}}}}}
return 0;
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/287141.html