這裡蒐索程式師資訊,查找有用的技術資料
当前位置:首页 » 编程语言 » c语言数字猜题
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言数字猜题

发布时间: 2022-04-05 05:24:33

c语言题 猜数字游戏

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

void c_input(char *str)
{
int i,j;

input:for(i=0;i<4;i++)
{
str[i]=getch();
putchar(str[i]);
}
putchar('\n');
for(i=0;i<4;i++)
{
if(str[i]<'0'||str[i]>'9')
{
printf("无效输入,请重新输入:");
goto input;
}
for(j=0;j<i;j++)
{
if(str[i]==str[j])
{
printf("无效输入,请重新输入:");
goto input;
}
}
}
}

void c_game(const char *temp)
{
int i,j,ci;
char in[4];
char out[5]="0A0B";
for(ci=0;ci<8;ci++)
{
printf("第 %d 次输入:",ci+1);
c_input(in);
for(i=0;i<4;i++)
{
if(in[i]==temp[i])
{
out[0]++;
}
else
{
for(j=0;j<4;j++)
{
if(in[i]==temp[j])
{
out[2]++;
}
}
}
}
printf("%s\n",out);
if(strcmp(out,"4A0B")==0)
{
printf("游戏成功,按下任意键返回主菜单。。");
getch();
return;
}
out[0]='0';
out[2]='0';
}
printf("游戏失败,按下任意键返回主菜单。。");
getch();
}

void c_rand()
{
int i,j;
char data[]="0123456789";
char temp[4];

system("cls");
printf("**随机模式**\n\n");
for(i=0;i<4;i++)
{
j=rand()%(10-i);
temp[i]=data[j];
data[j]=data[10-i-1];
}
c_game(temp);
}

void c_printf()
{
char temp[4];

system("cls");
printf("**用户输入模式**\n\n");
printf("请输入测试数据:");
c_input(temp);
system("cls");
printf("**用户输入模式**\n\n");
c_game(temp);
}

void main()
{
srand(time(NULL));
while(1)
{
system("cls");
printf("(1) 随机产生数据\n");
printf("(2) 用户输入数据\n");
printf("(3) 退出游戏\n");
printf("choice : ");
switch(getch())
{
case '1':c_rand();break;
case '2':c_printf();break;
case '3':exit(1);
}
}
}
在VC6下编译通过,但因为没有用C++特征,也可在其它C的编译器上试试

㈡ C语言程序设计题《猜数字游戏》

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

#define N 4/*随机抽N个数*/
#define NUM 8/*NUM次猜数的机会*/

void detect(char s[])
{
int i,j,num;
int a,b;
char ch[N];
for(num=0;num<NUM;num++)
{
a=b=0;
printf("第%d次机会:",num+1);
for(i=0;i<N;i++)
{
ch[i]=getch();
if(ch[i]>='0'&&ch[i]<='9')
{
for(j=0;j<i;j++)
if(ch[i]==ch[j]) break;
if(j<i) i--;
else
{
putchar(ch[i]);
for(j=0;j<N;j++)
{
if(ch[i]==s[j])
if(i==j) a++;
else b++;
}
}
}
else
i--;
}
printf(" %dA%dB\n",a,b);
if(a==N)
{
printf("恭喜你答对了!\n");
break;
}
}
if(num==NUM)
printf("很遗憾,正确答案为:%s\n",s);
}

main()
{
int i,j;
char s[N+1];
srand(time(0));
for(i=0;i<N;i++)
{
s[i]=rand()%10;
for(j=0;j<i;j++)
if(s[i]==s[j]) break;
if(j<i) i--;
else
{
s[i]+='0';
putchar('*');
}
}
s[i]='\0';
printf("\n总共%d次机会\n",NUM);
detect(s);
}

_______________________
运行结果:
-----------------------
****
总共8次机会
第1次机会:1234 0A2B
第2次机会:2345 0A2B
第3次机会:3456 1A0B
第4次机会:4567 0A1B
第5次机会:5678 0A1B
第6次机会:6789 1A1B
第7次机会:3792 0A2B
第8次机会:9482 1A3B
很遗憾,正确答案为:8429
请按任意键继续. . .

㈢ 用c语言编写猜数字游戏

没时间来写符合你题目的,这个是我以前写过的一个猜数字游戏,系统会给出一个的1~99之间的随机数,你来猜,看多少次可以猜中. 你看用得上不.

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

int main (int argc, char **argv)
{
int d, c;
struct timeval tv;

gettimeofday (&tv, NULL);
srand (tv.tv_usec);
d = rand () % 100;

printf ("Please input a number:\n");
scanf ("%d", &c);
printf ("c=%d\n", c);
int min_num = 1;
int max_num = 99;
int num=1;
while (c != d)
{

if (c > d)
{
if( c < max_num )
max_num = c;

printf ("%d - %d\n", min_num ,max_num);
}

else if (c < d)
{
if( c > min_num )
min_num = c;
printf ("%d - %d\n", min_num ,max_num);
}
else
break;

scanf ("%d", &c);
num++;
printf("c = %d \n",c);
}
printf ("it's true:%d,num=%d\n", c,num);

return 0;
}

㈣ 猜数字题目。C语言

#include<stdio.h>
main()
{
int i=50;//假设预置数字是50
int n;
int num=0;//num纪录输入次数
printf("input a num you guess(1-100):");
scanf("%d",&n);
while(n!=i)
{
if(n>i)
printf("big\n");
if(n<i)
printf("small\n");
num++;
printf("input a num you guess(1-100):");
scanf("%d",&n);
}
printf("great!!\n");
if(num<11)
printf("%dturns",num);
return 0;
}
大概是这样 因为在网吧,没调试 不过应该不太完善 没时间拉 稍作修改吧88

㈤ C语言编程题(设计一个猜数字的小游戏)满意再加200分!!!!

我看了楼上几个的答案,功能均不是很完善,所以我决定来试一试
,应该是今天最迟是明天可以贴出来了.希望不要那么快就结贴....

哈哈.....经过了几个小时的奋战.. 终于搞出来了!!!!!!!!!!!!!!!!!!! 你题目要求的功能几乎全部实现.希望你认真调试一下!!!!!!

调试环境.vc++ 6.0. 支持中文编译的编译器都可以调试运行的.

注意事项:如果编译器是不支持中文显示的就会出现乱码的,所以最好是在支持中文显示的编译器上面编译运行.例如:vc++ 6.0以上的版本!!!!

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

#define MAX 5

struct record
{
char name[10];
int sorce;
}rec[MAX],Rec;

int n; //记录行数
int num; //输入的数字

void display(); //开始界面
void xuanze(); //选择函数
void sys(int a); //操作函数
void newgame(); //新游戏
void vdisplay(); //浏览记录界面
void vxuanze(); //浏览选择函数
void help(); //帮助说明
void vsys(int a); //浏览操作函数
void viewsorce(); //按记录的顺序浏览
void viewname(); //按记录的姓名浏览
void viewsname(); //按记录和姓名浏览
void delrec(); //删除记录
int qushu(); //取数函数
int tishi(int aa); //提示函数
void addrec(int a); //判断并且增加记录
void recread(); //读取记录文件
void recwrite(); //写入记录文件

///////////////////////////////////////////////////////////////////////////////////////////////
////////////////////函数定义//////////////

void display() //开始界面
{
system("cls"); //清屏

printf(" ============================================\n");
printf(" ================数字竞猜游戏================\n");
printf(" ============================================\n");
printf("\n");
printf(" 1: 新游戏\n");
printf("\n");
printf(" 2: 浏览记录\n");
printf("\n");
printf(" 3: 帮助说明\n");
printf("\n");
printf(" 4: 清除记录\n");
printf("\n");
printf(" 5: 退出\n");
printf("\n");
printf(" ============================================\n");
xuanze();
}
void xuanze() //选择函数
{
int a;
printf("请输入你所选择的操作数:\n");
scanf("%d",&a);
if(a==1||a==2||a==3||a==4||a==5)
{
sys(a);
}//选择相应的操作数执行函数
else
{
printf("错误的操作数!\n");;
printf("\n");
printf("请按任意键继续...\n");
getchar();
getchar();
display();
}
}
void sys(int a) //操作函数
{
switch(a)
{
case 1:newgame();break;
case 2:vdisplay();break;
case 3:help();break;
case 4:delrec();break;
case 5:exit(0);break; //退出
}
}
void newgame() //新游戏
{
recread();
system("cls"); //清屏
printf("\n");
printf("记录列表显示如下:\n");
printf("\n");
for(int i=0;i<MAX;i++)
{
if(rec[i].sorce==0)printf(" <---空记录--->\n");
else
printf(" 第 %d 名: 姓名: %s 分数 %d\n",i+1,rec[i].name,rec[i].sorce);
}

printf("\n");
printf("请按任意键继续...\n");
getchar();
getchar();//////////////上面列出记录文件中的记录

/////////////////////////////////////////////////////////////////////////////
int snum; //输入的数字
int sn=10; //机会次数
num=qushu(); //取数
L: system("cls"); //清屏

printf(" ============================================\n");
printf(" ================数字竞猜游戏================\n");
printf(" ============================================\n");
printf("\n");
printf(" 1: 显示答案\n");
printf(" ============================================\n");
printf("\n");
printf("请输入你猜想的四个数字(格式为9999样式)你还有 %d 次机会:\n",sn);
scanf("%d",&snum);
if(snum<10000 && snum>1000 || snum==1)
{
if(snum==1)
{
printf("你放弃了本局游戏!该四个数字是: %d\n",num);
printf("\n");
printf("请按任意键继续...\n");
getchar();
getchar();
display();
}
else
{
int flag=tishi(snum);
if(flag!=0 && sn!=0)
{
sn--;
if(sn==0)
{
printf("真是遗憾!十次机会没有了!没有关系!下次继续!\n");
printf("\n");
printf("请按任意键继续...\n");
getchar();
getchar();
display();
}
printf("请按任意键继续猜...\n");
getchar();
getchar();
goto L;
}
else
{
if(sn!=0)addrec(sn);
else
{
printf("请按任意键继续...\n");
getchar();
getchar();
display();
}
}
}
}
else
{
printf("错误的操作数!\n");;
printf("\n");
printf("请按任意键继续...\n");
getchar();
getchar();
goto L;
}
}

void help() //帮助说明
{
system("cls"); //清屏
printf(" ============================================\n");
printf(" ==============数字竞猜游戏帮助==============\n");
printf(" ============================================\n");
printf("\n");
printf("1.新游戏中,你可以输入四位数,来竞猜系统自动生成的四个数字!,只有十次的机会,\n");
printf(" 每次机会都有相对应的提示,十次的机会利用完了还没有猜对的话就算失败!四个数字的\n");
printf(" 相应格式在游戏中会有提示!当成功猜出系统给定的数字时候,就会统计你的成绩.当你的\n");
printf(" 成绩比记录文件中的记录好的时候就会提示你是否把记录记录到记录文件中,当你选择是\n");
printf(" 的时候就会接着提示你输入你的名字.再按回车.没有意外就会提示保存成功!\n");
printf(" 还有要说明的是记录中的分数是越低就代表成绩越好!\n");
printf("2.浏览记录有三种方式!第一种只是列出记录中的姓名;第二种是列出记录中的成绩次序\n");
printf(" 第三种是姓名跟成绩一起列出来!\n");
printf("3.清除记录就是把记录文件初始化.即是让记录文件为空!\n");
printf("\n");
printf("请按任意键继续...\n");
getchar();
getchar();
display();
}

void vdisplay() //浏览记录界面
{
system("cls"); //清屏

printf(" ============================================\n");
printf(" ================数字竞猜游戏================\n");
printf(" ============================================\n");
printf("\n");
printf(" 1: 按记录的顺序浏览\n");
printf("\n");
printf(" 2: 按记录的姓名浏览\n");
printf("\n");
printf(" 3: 姓名记录全部浏览\n");
printf("\n");
printf(" 4: 返回上级\n");
printf("\n");
printf(" ============================================\n");
vxuanze();
}
void vxuanze() //浏览选择函数
{
int a;
printf("请输入你所选择的操作数:\n");
scanf("%d",&a);
if(a==1||a==2||a==3||a==4)
{
vsys(a);
}//选择相应的操作数执行函数
else
{
printf("错误的操作数!\n");;
printf("\n");
printf("请按任意键继续...\n");
getchar();
getchar();
vdisplay();
}
}
void vsys(int a) //浏览操作函数
{
switch(a)
{
case 1:viewsorce();break;
case 2:viewname();break;
case 3:viewsname();break;
case 4:display();break; //返回上级
}
}

void viewname() //按记录的顺序浏览
{
recread();
system("cls"); //清屏
printf("\n");
printf("记录列表显示如下:\n");
printf("\n");
for(int i=0;i<MAX;i++)
{
if(rec[i].sorce==0)printf(" <---空记录--->\n");
else
printf(" 第 %d 名: 姓名: %s\n",i+1,rec[i].name);
}

printf("\n");
printf("请按任意键继续...\n");
getchar();
getchar();
vdisplay();
}
void viewsorce() //按记录的姓名浏览
{
recread();
system("cls"); //清屏
printf("\n");
printf("记录列表显示如下:\n");
printf("\n");
for(int i=0;i<MAX;i++)
{
if(rec[i].sorce==0)printf(" <---空记录--->\n");
else
printf(" 第 %d 名: 分数 %d\n",i+1,rec[i].sorce);
}

printf("\n");
printf("请按任意键继续...\n");
getchar();
getchar();
vdisplay();
}
void viewsname() //按姓名和记录浏览
{
recread();
system("cls"); //清屏
printf("\n");
printf("记录列表显示如下:\n");
printf("\n");
for(int i=0;i<MAX;i++)
{
if(rec[i].sorce==0)printf(" <---空记录--->\n");
else
printf(" 第 %d 名: 姓名: %s 分数 %d\n",i+1,rec[i].name,rec[i].sorce);
}

printf("\n");
printf("请按任意键继续...\n");
getchar();
getchar();
vdisplay();
}
void delrec() //删除记录
{
recread();
for(int i=0;i<MAX;i++)
{
rec[i].sorce=0;
}
recwrite();
printf("删除成功!\n");
printf("\n");
printf("请按任意键继续...\n");
getchar();
getchar();
display();
}

int qushu() //取数函数
{
int a=0;
int i=0;

srand( (unsigned)time( NULL ) ); //随机数种子设置

while(i==0)
{
i=rand(); //这样做就是为了增加随机性
i=i%100;
}

L: for(int j=0;j<i;j++)
{
a=a+rand(); //判断随机数是否是四位数 如果不是继续取数
}
a=(a/i+rand())%10000;
if(a<1000)goto L;

return(a);
}

int tishi(int aa) //提示函数
{
int a,b,c,d;
int af,bf,cf,df;
if(aa==num)
{
printf("恭喜!你猜对了!四个数就是:%d\n",num);
return(0);
}
else
{
a=(num-num%1000)/1000;
b=(num%1000-(num%1000)%100)/100;
c=((num%1000)%100-((num%1000)%100)%10)/10; //获取默认四个数字
d=((num%1000)%100)%10;

af=(aa-aa%1000)/1000;
bf=(aa%1000-(aa%1000)%100)/100;
cf=((aa%1000)%100-((aa%1000)%100)%10)/10; //获取输入的四个数字
df=((aa%1000)%100)%10;

if(af>a)printf("\n第一个数应该比 %d 小一点!\n",af);
if(af==a)printf("恭喜!第一个数字对了!应该是: %d\n",af); //数字比较
if(af<a)printf("第一个数应该比 %d 大一点!\n",af);

if(bf>b)printf("第二个数应该比 %d 小一点!\n",bf);
if(bf==b)printf("恭喜!第二个数字对了!就是: %d\n",bf); //数字比较
if(bf<b)printf("第二个数应该比 %d 大一点!\n",bf);

if(cf>c)printf("第三个数应该比 %d 小一点!\n",cf);
if(cf==c)printf("恭喜!第三个数字对了!就是: %d\n",cf); //数字比较
if(cf<c)printf("第三个数应该比 %d 大一点!\n",cf);

if(df>d)printf("第四个数应该比 %d 小一点!\n",df);
if(df==d)printf("恭喜!第四个数字对了!就是: %d\n",df); //数字比较
if(df<d)printf("第四个数应该比 %d 大一点!\n\n",df);

return(1);
}
}

void addrec(int a) //判断并且增加记录
{
char c;
int flag=0; //标志位
a=11-a;
recread();
for(int i=0;i<MAX;i++)
{
if(a<rec[i].sorce || rec[i].sorce==0)
{
if(i==4 || rec[i].sorce==0)
{
printf("\n");
printf("恭喜!你的成绩 %d 分已经达到了前五名!\n",a);
printf("确认要保存记录请按'y',任意键返回...!\n");
scanf("%s",&c);
if(c!='y')display();
rec[i+1].sorce=rec[i].sorce; //记录后移
strcpy(rec[i+1].name,rec[i].name);
printf("请输入你的名字\n");
scanf("%s",&rec[i].name);
rec[i].sorce=a;
recwrite(); //写入
printf("恭喜!添加成功!\n",a);
flag++;
printf("\n");
printf("请按任意键继续...\n");
getchar();
getchar();
display();
}
else
{
printf("\n");
printf("恭喜!你的成绩 %d 分已经达到了前五名!\n",a);
printf("确认要保存记录请按'y',任意键返回...!\n");
scanf("%s",&c);
if(c!='y')display();
for(int j=i;j<MAX-1;j++)
{
rec[j+1].sorce=rec[j].sorce; //记录后移
strcpy(rec[j+1].name,rec[j].name);
if(rec[j+2].sorce==0)break;
}
printf("\n");
printf("请输入你的名字\n");
scanf("%s",&rec[i].name);
rec[i].sorce=a;
recwrite(); //写入
printf("恭喜!添加成功!\n",a);
flag++;
printf("\n");
printf("请按任意键继续...\n");
getchar();
getchar();
display();
}
}
}
if(flag==0)
{
printf("\n");
printf("请按任意键继续...\n");
getchar();
getchar();
display();
}
}

void recread() //读取记录文件
{
FILE *fp;
L: fp=fopen("E:\\rec.rec","rb");
if(fp==NULL)
{
recwrite();
goto L; //初始化
}
if(fread(&rec,sizeof(record),MAX,fp)==MAX)
{
}
else
{
printf("文件读取失败!");
}
fclose(fp);
}
void recwrite() //写入记录文件
{
FILE *fp;
fp=fopen("E:\\rec.rec","wb");
if(fp==NULL)
printf("写入失败!\n");
fwrite(rec,sizeof(record),MAX,fp);
fclose(fp);
}

void main()
{
display();
}

////////////////////////////////

㈥ 跪求C语言编程! 有关猜数字游戏的~~~~~

有个几年前编好的猜数字,但是代码找不到了,没有没有记忆成绩的功能,楼主要不?

㈦ 一道c语言猜数字的题目~

//这是我学语言大半个月时写的。

#include <iostream>
#include <time.h>

using namespace std ;

int RAND()
{int N ; srand (time(NULL)) ; N = rand() % 4 + 2 ; return N ;}

int main()
{
int RANDA , RANDB , NUMRANDA , NUMRANDB , NUMRANDC , NUMRANDD , RAND1 , RAND2 , L = 0 ;
char get ;
cout << "欢迎您,请按回车键进入游戏:"; cin.get() ; system ("CLS") ;
RANDA = RAND() ;
int NUM[RANDA] , NUMCOPY[RANDA] ;
srand (time(NULL)) ;
for (int i = 0 ; i < RANDA ; i++)
{
NUM[i] = rand() % 9 ; NUMCOPY[i] = NUM[i] ;
}
RAND1 = rand() % 1 + 1 ; RAND2 = rand() % 1 + 1 ;
for (int i = 0 ; i < RANDA ; i++)
{
if (i == RAND1 || i == RAND2) NUM[i] = 66 ;
}
cout << "随机到的数分别为:" ;
for (int i = 0 ; i < RANDA ; i++)
{
if (NUM[i] == 66) cout << char(NUM[i]) << " " ; else cout << NUM[i] << " " ;
}
cout << endl ;
/*for (int i = 0 ; i < RANDA ; i++)
cout << NUMCOPY[i] << " " ; */
cout << "请输入您猜到的数:" ;
for (int i = 0 ; i < RANDA ; i++)
{
cin >> NUM[i] ;
}
for (int i = 0 ; i < RANDA ; i++)
{
if (NUM[i] == NUMCOPY[i]) L++ ;
}
if (L == RANDA)
{
cout << "全对,你真他吗是个人才!需要再来吗?(按Q返回游戏):" ;
if ((cin >> get) && (get != 'Q' || get != 'q')) main();
else cout << "不来了!" ;
}
else
{
cout << "回去睡觉吧!要不再来一次:" ; main() ;
}
system ("PAUSE") ;
return 0 ;
}

㈧ c语言玩 “猜数字” 的问题

i=1+rand()%4;
不能够在number函数中,因为你如果猜不对,下一次调用number时,又重新得到了一个新的i值。所以很难猜中。
if( gamestatus==CONTINUE ){
printf("\nPlease type another number: ");
scanf("%d",&a);
number ( a );
}
可以使用循环的方式来处理。

㈨ C语言题目 编程实现数字猜谜游戏!

一个函数用于生成一个随机数

再用一个函数进行三次循环

如果循环中输入的数字猜对了就返回1如果三次循环结束则返回0

主数字判断返回的结果如果是1则表示猜对否则表示猜错

然后询问是否继续进行猜数字游戏


下面是一个简单的代码

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

voidclean_input_buf(void)
{
while(getchar()!=' ');
}

intmake_num(intnum)
{
srand(num);
return1+rand()%20;
}

intguess_num(void)
{
inti=3;
intn;
intnum;

num=make_num(clock());
while(i)
{
printf("请输入一个你猜的数字:");
scanf("%d",&n);

if(n==num)
return1;

clean_input_buf();
--i;
}

return0;
}

intmain(intargc,char**argv)
{
charc;

printf("猜数字游戏! 游戏要猜测的数字为1-20,每个数字可以猜测3次! ");

while(1)
{
if(guess_num()==1)
printf("恭喜你,你猜中了! ");
else
printf("很遗憾,你猜错了! ");

redo:
printf("还要继续游戏吗?继续输入Y否则输入N! Y/N:");
c=getchar();
clean_input_buf();

if(c=='Y'||c=='y')
continue;
elseif(c=='N'||c=='n')
break;
else
{
printf("输入错误,请重新输入! ");
gotoredo;
}

}

return0;
}

㈩ C语言简单题目猜数字

scanf("%d",&b);
while(m!=b)
{

if(b>m)
printf("too high!");
if(b<m)
printf("too low!");
c++;
scanf("%d",&b);
}
应该可以了
for(scanf("%d",&b);m!=b;scanf("%d",&b))
{

if(b>m)
printf("too high!");
if(b<m)
printf("too low!");
c++;
scanf("%d",&b);
}

最好在每个scanf("%d",&b); 后面加getchar();