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

c語言猜數字

發布時間: 2022-08-26 12:03:37

c語言編程猜數字

數據的規律是按照二進制的方式
比如1 是00001,所以1就只在第一行出現了
比如3 是00011 所以3就只在第一行第二行出現
比如63是11111 所以每一行都有63
再比如15 是01111 所以前四行都有15
所以最終的值就是2的n-1相加(即2進制所表示的十進制數)
比如第1行 第2行 第3行,那麼最終的值就是 2的0次方+2的1次方+2的2次方即7

❷ c語言猜數字游戲

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>

char*getHint(char*secret,char*guess)
{
inti,countA=0,countB=0;
intcount[10]={0};
char*result=(char*)malloc(strlen(secret));
if(strlen(secret)!=strlen(guess))
{
printf("UnequalLength!");
returnNULL;
}
for(i=0;i<4;i++)
{
if(secret[i]==guess[i])
countA++;
else
{
count[secret[i]-'0']++;
if(count[secret[i]-'0']<=0)
{
countB++;
}
count[guess[i]-'0']--;
if(count[guess[i]-'0']>=0)
{
countB++;
}
}
}
sprintf(result,"%d%c%d%c",countA,'A',countB,'B');
returnresult;
}

intmain()
{
inti=0,j=0;
charnum[4]={0},input[5]={0};

srand((unsigned)time(NULL));//初始化隨機數
for(i=0;i<4;i++)//生成4個隨機數
{
num[i]=(rand()%10)+48;
}
for(j=0;j<10;j++)
{
printf("pleaseinput4-digtalsnumber[%d]times:",j+1);
fgets(input,sizeof(input),stdin);
fflush(stdin);
if(strlen(input)!=4)
{
continue;
}
printf("input[%s] ",input);

strcpy(input,getHint(num,input));
printf("ret=[%s] ",input);
if(strcmp(input,"4A0B")==0)
{
printf("YouareWin! ");
break;
}
}

return0;
}

❸ 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語言編程:猜數字游戲

#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#define UI unsigned short int
void game()
{
UI answer;
UI input;
UI lower=1;
UI upper=100;
UI count=0;
srand(time(NULL));
do{answer=rand()%101;}
while(answer==0);
puts("Welcome to the number guessing game!");
do
{
puts("Please enter an integer from 1 to 100 (again):");
scanf("%lu",&input);
getchar();
count=count+1;
if(input==answer){puts("You succeeded!");printf("The number of time(s) you entered is %lu.\n",count);}
else
{
puts("You failed!");
if(input<answer){if(input>lower){lower=input;}puts("The answer is greater than your input.");}
else {if(input<upper){upper=input;}puts("The answer is less than your input.");}
printf("The answer is from %lu to %lu.\n",lower,upper);
}
}
while(input!=answer);
}
#undef UI
int main()
{
game();
system("Pause");
return 0;
}

❺ c語言猜數字(注意!不是用戶猜數字,是電腦猜數字!)

#include<stdio.h>
#include<string.h>
void main(){
char str[100];
int num=2;
do{
if(num<2||num>3){
printf("判斷是數在2到3之間!\n\n");
break;
}
printf("我猜這個數字是%d!\n",num);
scanf("%s",&str);
if(strcmp(str, "大了") == 0){
num--;
continue;
}else if(strcmp(str, "小了") == 0){
num++;
continue;
}else if(strcmp(str, "正確") == 0){
break;
}else{
printf("輸入錯誤!\n\n");
continue;
}
}while(1==1);
}

❻ c語言猜數字

#include<stdio.h>
#include <time.h>
#include <stdlib.h>

int zishu;
int min=1,max=100;
void jieshou()
{
printf("請在%d到%d中輸入您猜的數:",min,max);
scanf("%d",&zishu);
if(zishu<min||zishu>max)
{
printf("\n對不起,您輸入的數不合法,請重新輸入!");
scanf("%d",&zishu);
}
}

void main()
{
srand( (unsigned)time( NULL ) );
int suiji=rand()%100+1; //產生隨機數
int cishu=0;

jieshou(); //接受用戶猜的數

while(cishu!=10)
{
if(zishu>suiji) //判斷
{
max=zishu;
jieshou();
}
else if(zishu<suiji)
{
min=zishu;
jieshou();
}
else
{
printf("您真牛逼!!這樣也能猜對!!");
break;
}
cishu++;
}
if(cishu==10)
exit(0);
}

❼ C語言 猜數字程序

原因分析:
「scanf("%d",&a);」這一行,輸入完一個數字後,你還必須按下回車鍵,所以這行執行完畢後緩沖區就還留著一個'\n'字元即回車字元。執行到「}while(ch=getchar()!='n');」時,這字元就直接賦給了ch(驗證方法:把「while(ch=getchar()!='n');」改為「while(ch=getchar()!='\n');」,你會發現輸入一個數字後程序就直接結束了)。

對症下葯:
方案一:「scanf("%d",&a);」這一行後加上「fflush(stdin);」(作用:清空輸入流)。但這樣改有個麻煩,就是你每次輸入一個數字後你都還得因要執行getchar()而再輸入一個字元。

方案二:「}while(ch=getchar()!='n');」改為「}while(ch=getch()!
='n');」(getch()會自動跳過前導的回車字元),這樣改也有個類似方案一的麻煩,就是輸入一個數字後你還得按一個鍵後方能再輸入數字。

方案三:進行代碼優化:(順便說下,你的代碼可讀性有些問題,和下面的對照下吧)
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int main()
{
char ch;
int i,a;
printf("猜數字游戲\n\n");
srand(time(NULL));
i=rand()%10;
printf("請輸入數字\n\n");
while(1)
{
scanf("%d",&a);
if(i>a) printf("小了\n");
if(i<a) printf("大了\n");
if(i==a)
{
printf("你猜對了!\n");
printf("按n退出,按y繼續\n");
fflush(stdin);//清空輸入流
if(getchar()=='n') break;
i=rand()%10;//重新隨機答案
}
}
}
給分吧,花了我老半天時間呢!

❽ 猜數字C語言

其實這個程序很簡單,思路很清晰
首先產生一個隨機的四位數,且每位都不相同
int a[10]={0,1,2,3,4,5,6,7,8,9};
int b,c,i,t;
for(i=0;i<100;i++) //思路就是產生兩個10以內的隨機數,交換a中這兩個下標的數值,
{ //經過多次交換後,著a中的這10個數就打亂了次序,就像是隨機數了
b=rand()%10; //這個交換多少次,隨便了,只要打亂就可以
c=rand()%10;
if(b!=c)
{t=a[b];a[b]=a[c];a[c]=t;}
}
接著取出連續的a中的4個數,這樣就是那個隨機數
int suiji[4];
for(i=0;i<4;i++)
suiji[i]=a[i]; //這樣隨即中就是四個要猜的數,
要是想要第一位不是0,可以這么計算
int j;
for(i=0,j=0;j<4;i++)
{
if(a[0]==0)
continue;
suiji[j++]=a[i];
}
接下來就是輸入數據,
int shuru,shr[4],s;
while(1)
{
scanf("%d",&shuru);
s=shuru;
i=3;
while(s)
{
shr[i--]=s%10;
s/=10;
}
if(shuru>1000&&shuru<9999&&shr[0]!=shr[1]&&shr[0]!=shr[1]&&shr[0]!=shr[2]&&shr[0]!=shr[3]&&shr[1]!=shr[2]&&shr[1]!=shr[3]&&shr[2]!=shr[3])
//shuru在1000~9999之間並且各各位不相等,就跳出,否則繼續輸入
break;
else
printf("Error");
}
接著這個輸入的數據和這個隨機數的比較了,其實很簡單
m是位置和數字都對的。n是數字對,但位置不對的
int m=0,n=0;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
if(shr[i]==suiji[j])
n++;
for(i=0;i<4;i++)
if(shr[i]==suiji[i])
m++;
n-=m;

接著是列印輸入的數和mn(這個就是判斷的結果)這個我就不用再寫了吧
清屏用system("cls");

最後是總裝,先產生四位的隨機數,接著用一個大循環把輸入和比較還有列印判斷結果包含進去。
退出這個循環的條件有兩個,一個是m=4,一個是到了規定的次數

❾ 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;
}

熱點內容
安卓搜狗輸入法哪個版本 發布:2025-01-17 08:55:34 瀏覽:338
素材包加密 發布:2025-01-17 08:55:22 瀏覽:134
微信相冊怎麼加密 發布:2025-01-17 08:53:26 瀏覽:370
安全加密配置成功是什麼 發布:2025-01-17 08:49:40 瀏覽:856
直流電存儲 發布:2025-01-17 08:47:33 瀏覽:552
容聲冰箱壓縮機多少錢 發布:2025-01-17 08:18:38 瀏覽:886
微信怎麼取消密碼怎麼設置 發布:2025-01-17 08:06:18 瀏覽:793
如何帳戶密碼 發布:2025-01-17 07:56:11 瀏覽:612
伺服器內網ip地址安全 發布:2025-01-17 07:33:18 瀏覽:186
華為新演算法 發布:2025-01-17 07:31:43 瀏覽:56