当前位置:首页 » 编程语言 » 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 13:23:18 浏览:814
华为手机如何开启说出密码 发布:2025-01-17 13:23:12 浏览:101
服务器在美国说明什么 发布:2025-01-17 13:14:10 浏览:11
启辰t90有哪些配置 发布:2025-01-17 13:05:40 浏览:38
手机微博密码怎么改密码忘了怎么办 发布:2025-01-17 13:04:44 浏览:959
微笑云服务器 发布:2025-01-17 13:03:25 浏览:83
android顶部标题栏 发布:2025-01-17 13:02:28 浏览:692
androidjs传递参数 发布:2025-01-17 12:51:54 浏览:477
建筑大师辅助脚本 发布:2025-01-17 12:47:33 浏览:331
sql向上 发布:2025-01-17 12:43:57 浏览:275