1.求一篇1000字左右c语言之猜数游戏论文~
我们现在来做一个<猜数字>游戏。
游戏规则参照文曲星里的猜数字: 输入四入不重复的数字(中间用空格隔开)按<回车>后结果显示在后边, 形式为 " ? A ? B", 四个数中位置和数字都正确为 A,数字相同位置不同为 B, 当 4 A 0 B 时为猜对,每一局有8次机会. 如:原四个数为1234,则 1234 4 A 0 B 5678 0 A 0 B 没有一个对. 1243 2 A 2 B 3,4虽对但位置错. 明白了规则后,下手就容易了,也许你还没头绪,没关系,一步一步来. 1.首先明白自己的游戏要做什么? 由玩家输入四个数字,验证这四个数和正确答案的关系,提供一个" X A X B"的 提示给玩家,再输入。直至玩家猜对或到达八次. 2.游戏需要什么资源? 这个游戏并不需要什么特别的,只要一个printf,和scanf获得输入. 所以程序开头: #include
main(){ } 先把这个函数写下来,这个叫主函数,一个程序就只有一个,也称为程序入口函数, 你的程序就是从这里开始执行的.(是不是有点废话?) (以下操作都在main()中) 设定四个变量储存正确答案:(也可以结个初值) int a1,a2,a3,a4; 再设定四个变量诸存玩家的输入: int b1,b2,b3,b4; 设定一个变量诸存猜的次数并赋初值: int n = 0; 设定两个变量诸存结果A,B的个数: int cA,cB; 准备工作完成,设定正确答案: a1 = 3; a2 = 5; a3 = 9; a4 = 7; (当然你会抱怨正确答案是固定的,不要紧,下面会告诉你怎么产生随机的效果,慢慢来.) 仔细想一想整个游戏流程。 大概是这样的: 循环执行: 输入; 对比正确答案; 输出提示; 判断是否猜对; 是:显示胜利并退出循环,否:不理会; 次数加1; 判断次数是否超出; 是:显示失败并退出循环; 循环结束; 那么,为了更容易理解,我们使用死循环,但要注意一点:里面必须有使循环结束的语句! break;就是这个语句. 那么: while(1){ 。
break; 。 } 就写下吧.while(XX){YYYY}是这样工作的: XX是不是0 (真) 不是: 执行 YYYY 是:退出循环 再检查XX是不是不为0 。
不过你必须明确:break;会强制退出循环. 好,就这样: printf("\n\t Guess Numbers!\n\n"); /*打印一点提示信息*/ while(1){ /*开始用户的输入和程序输出*/ printf("%d: ",n+1); /*打印当前是第几次输入*/ scanf("%d %d %d %d",&b1,&b2,&b3,&b3); /*先不要知道为什么要在b1,b2这前加&,先认为,scanf就要这样*/ cA=0; cB=0; /*对比就要开始,先把结果置0*/ /*对比开始,我们用一堆if来为我们做事*/ /*虽然这有点累赘,但谁叫我们是初学者呢?不过告诉你,这种表达效率是最高的*/ if(a1 == b1) cA++; if(a2 == b2) cA++; if(a3 == b3) cA++; if(a4 == b4) cA++; /*逐个检查增加A的数量*/ if(a1 == b2 || a1 == b3 || a1 == b4) cB++; if(a2 == b1 || a2 == b3 || a2 == b4) cB++; if(a3 == b1 || a3 == b2 || a3 == b4) cB++; if(a4 == b1 || a4 == b2 || a4 == b3) cB++; /*穷举检查得到B的数量*/ /*当然,你必须保证玩家输入的都不一样,不然就会闹出笑话*/ /*检查对比结束*/ /*打印提示*/ printf("\t\t%d A %d B\n",cA,cB); /*判断是否胜利*/ if(cA == 4){ printf("\n\tWell Done!\n"); getch(); /*getch()的功能是输入一个字符,不需要回车,也不会显示到屏幕*/ /*通常用来暂停程序*/ break; /*退出循环*/ } /*次数加一*/ n++; /*判断次数*/。
2.猜数字游戏
一个完整的c程序如下,程序在win-tc和Dev-c++下都调试通过。
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int main()
{
int stime,a,z,t,i,c,m,g,s,j,k,l[4]; /*j:数字正确的位数 k:位置正确的位数*/
long ltime;
ltime=time(NULL); /*l:数字相同时,人所猜中数字的正确位置*/
stime=(unsigned int)ltime/2;
srand(stime);
z=random(9999); /*计算机想一个随机数*/
printf("I have a number with 4 digits in mind,please guess.\n\n");
for(c=1;;c++) /*c: 猜数次数计数器*/
{
printf("Enter a number with 4 digits:");
scanf("%d",&g); /*请人猜*/
a=z;j=0;k=0;l[0]=l[1]=l[2]=l[3]=0;
for(i=1;i<5;i++) /*i:原数中的第i位数。个位为第一位,千位为第4位*/
{
s=g;m=1;
for(t=1;t<5;t++) /*人所猜想的数*/
{
if(a%10==s%10) /*若第i位与人猜的第t位相同*/
{
if(m&&t!=l[0]&&t!=l[1]&&t!=l[2]&&t!=l[3])
{
j++;m=0;l[j-1]=t; /*若该位置上的数字尚未与其它数字“相同”*/
} /*记录相同数字时,该数字在所猜数字中的位置*/
if(i==t) k++; /*若位置也相同,则计数器k加1*/
}
s/=10;
}
a/=10;
}
printf("Correctly guessed %d digits,",j);
printf("and guessed %d digits in exact position.\n\n",k);
if(k==4) break; /*若位置全部正确,则人猜对了,退出*/
}
printf("Now correctly guessed the whole number after %d times.\n",c);
}
3.c语言课程设计
以下程序的功能是随机产生数字,要求用户猜测程序中产生的随机数字,并输入,根据猜测的结果程序给出不同的响应,如果15次没猜对则退出。
源程序如下:
#include <stdio.h>
#include<stdlib.h>
#include<ctype.h>
main()
{
int count;/*猜数字的次数*/
int number;/*系统产生的随机数字*/
int guess;/*程序员输入数字*/
char yes='Y';
clrscr();
printf("\nNow let us play the game.\n Guess the number:");
while (toupper(yes)=='Y')
{
count=0;
randomize();
number=random(100)+1;
do
{
do
{
printf("\nInput an integer number(1~100):");
scanf("%d",&guess);
}while(!(guess>=1&&guess<=100));/*结束第二层DO~WHILE循环*/
if (guess<number)
printf("\n Your answer is low,try again!");/*如果用户输入的数字小于系统随机数,则输出数字太小的提示信息*/
if (guess>number)
printf("\n Your answer is high,try again!");/*如果用户输入的数字大于系统随机数,则输出数字太小的提示信息*/
count++;/*猜测次数加一*/
if (count==15)
{
printf("\n This is the %d times! Think it hard next!",count);
exit(0);/*如猜测15次还没猜对,则退出游戏*/
}
}while (!(guess==number));
if (count<=7)/*猜测的次数小于7次*/
{
printf("\n You have got it in %d times.\n",count);
printf("\n you guess right,Congretulations!");/*游戏成功则提示祝贺信息*/
}
else
{
printf("\n You got it in %d times.\n",count);
printf("\n I bet you can do it better!");/*游戏失败则提示鼓励信息*/
}
printf("\n NEXT?(Y/N):");/*选择是否重新游戏*/
scanf("%c",&yes);
}
}
运行程序时请用户猜数字,该数字由系统随机产生,用户最多有七次猜测的机会,如果在七次内猜对数字,则程序显示祝贺信息,如果用户大于七次猜对数字,则程序显示鼓励信息,如果用户连续15次都没有猜对数字,则游戏自动退出。结束一次游戏后,系统询问用户进行下一次猜数字游戏,用户输入“Y”则开始下一次猜数字游戏,用户如果输入“N”则退出游戏。
唉,花了个把小时终于搞出来了,应可以看懂吧,程序中作了很详细的解释,且在最后也作了功能说明!
如果认为好的话,追加分数哦!
4.JAVA 设计猜数字小游戏
int result;
Scanner in = new Scanner(System.in);
int number = (int) (Math.random() * (900) + 100);
System.out.println("\n***********猜数码小游戏,你hold得住吗?*********");
System.out.println("\n ********随机数字产生:不告诉你!*********\n");
System.out.println("让我们动动脑筋来猜一猜吧,小提示:他是一个从100到999的整数");
long sTartTime = System.currentTimeMillis();
int count=1;
String breakFlag="N";
while (true) {
System.out.println("请输入你第" + count + "次的猜测");
result = guess(count);
if (result > number)
System.out.println("不好意思,您所猜的数字大于谜底数字!");
else if (result < number)
System.out.println("不好意思,您所猜的数字小于谜底数字!");
else {
SimpleDateFormat sNowDate = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
long sEndTime = System.currentTimeMillis();
System.out.println("\n ***********正确答案:" + number
+ "***************\n");
if (count == 1) {
System.out.println("perfect!!恭喜您!一次就中!!");
} else if (count< 10) {
System.out.println("good job! 您总共猜了" + count + "次, 还要继续加油!!");
} else {
System.out.println("not bad! 您总共猜了" + count + "次, 任重而道远啊!");
}
System.out.println("当前时间 :" + sNowDate.format(new Date()));
System.out.println("所用时间 :" + (sEndTime - sTartTime) / 1000
+ "秒");
System.out.print("恭喜挑战成功!是否继续【Y/N】?");
String answer=in.nextLine();
if(breakFlag.equalsIgnoreCase(answer)){
System.out.println("\n欢迎使用猜数系统!");
in.close();
break;
}else{
count=0;
number = (int) (Math.random() * (900) + 100);
}
}
if(count==10){
System.out.print("您10次都没猜对,游戏已结束,是否继续【Y/N】?");
String answer=in.nextLine();
if(breakFlag.equalsIgnoreCase(answer)){
System.out.println("\n欢迎使用猜数系统!");
in.close();
break;
}else{
count=0;
number = (int) (Math.random() * (900) + 100);
}
}
count++;
}
5.c++程序设计 猜数小游戏
#include
#include
#include
using namespace std;
void main()
{
srand((unsigned)time(NULL)); //系统随机产生一个数值
int real=(int)(2000.0*rand()/(RAND_MAX+1.0));
int guess;
int nCount=10;
while(nCount!=0)
{
cout>guess;
nCount--;
if(guessreal)
cout>rdm;
srand(rdm);
随机数的范围给你限制到了2000以内,大了不好猜,也可以自己改,把那个2000换成你想要的范围n,范围就是0~n
6.猜数字游戏程序设计
脚本说明:第一步:把如下代码加入
区域中我手中有一个数,它的范围在1~100之间,你能猜到它是几吗? 第二步:把<body>区域中的内容改为:<body onl oad="document.forms[0].guess.focus(); document.forms[0].guess.select()">。7.猜数字游戏
/bbs/?a=898114195 这本是给百度上的朋友写的,是我的原创 现在发上来看下好用么。
只是用于学习,可能不是很实用,请大家见谅。 觉得好上我们论坛支持一下。
猜数字游戏 游戏规则:① 游戏软件随机产生四个数字,但不显示,给用户提供输入提示符,让用户猜4个数字的值和位置顺序。如果数字值和位置顺序均正确,则猜数字成功。
② 用户有10次猜数字机会,如果在10次之内仍未猜出正确的数字值和顺序,则提示用户游戏失败,并给用户显示出原始数字的值和顺序。一旦用户在10次内猜数出正确的数字值和顺序,则提示用户赢得游戏。
③ 当用户赢得游戏后,会与排行榜中的前五名用户的游戏记录比较,根据比较结果更新排行榜。④ 记分规则:猜数字所用的次数即为分数,分数越少越好 功能要求: 游戏区功能:① 随机产生原始数字、② 游戏提示(提示用户当前猜数字的匹配情况,提示方法自主设计)、③ 原始数字显示 排行榜浏览和清除功能:① 按用户成绩顺序浏览 ② 按用户姓名浏览 ③ 排行榜清除 排行榜记录添加和更新功能:① 判断用户可否入榜 ② 记录更新 ③ 显示当前排行榜 游戏记录读取功能:① 判断有误游戏记录 ② 初始化排行榜 ③ 获取最好记录并在游戏开始时显示最好记录 帮助功能:给用户提供游戏规则和游戏相关提示的注释。
QQ 898114195 我是用 wintc 编译的,在中文DOS 下才能正确显示。 #include #include #include #include #define MAX 5 typedef struct { char name[21]; int score; unsigned char sernum; }PLAYER; void getnum(int answer[]){ int i,j; for(i=0;i<=3;i++) { randomize(); answer=rand()%10; for(j=0;j { while(answer==answer[j]) { answer=rand()%10; j=-1; } } } } /*get number for answer*/ void structcpy(PLAYER *play1,PLAYER play2){ strcpy(play1->name,play2.name); play1->score=play2.score; play1->sernum=play2.sernum; } int menu(){ clrscr(); printf("\n****************** 猜数字游戏 ******************\n\n"); printf(" ******** 由Ryw12403编译 ********\n\n"); printf(" 菜单 \n"); printf("\n\n1.帮助"); printf("\n\n2.显示排行榜"); printf("\n\n3.清除排行榜"); printf("\n\n4.开始游戏"); printf("\n\n5.退出游戏"); printf("\n\n请选择 (1->5):"); return getche(); } /*choose to play*/ void initrecord(){ int i; FILE *fp; char ch; PLAYER record[MAX]; clrscr(); if((fp=fopen("guess.dat","rb"))==NULL){ printf("\n第一次玩这个游戏,要继续吗?"); ch=getche(); printf("\n"); if(ch=='y'||ch=='Y'){ if((fp=fopen("guess.dat","wb+"))==NULL){ printf("无法建立文件,请检查磁盘!"); exit(1); } for(i=0;i strcpy(record.name,"\0"); record.score=100; record.sernum=i+1; fwrite(&record,sizeof(PLAYER),1,fp); } } else return; } fclose(fp); } void help(){ clrscr(); printf(" Help \n"); printf(" 输入四位0--9不重复的数字,按字母键退出。
\n"); printf("规则:A表示猜的数字和位置都对,B表示猜的数字对,位置不对\n"); printf("字母前面的数字表示对的个数。\n"); printf("如要猜的数字是2943,你猜2893,那就提示2A1B\n\n"); printf("按任意键继续."); } /*display help information */ void displayrecord(){ char i; FILE *fp; PLAYER record[MAX]; clrscr(); if((fp=fopen("guess.dat","rb"))==NULL){ printf("无法打开文件,请确认文件己存在。
"); return; } for(i=0;i fread(&record,sizeof(PLAYER),1,fp); } if(record[0].score==100){ printf("文件中没有记录."); } printf(" 第 1 名到第 5 名的排名:\n"); printf("姓名: 分数: 名次:\n"); for(i=0;i if(record.score==100) printf("\n%d: %-20s%-20d%-10d",i+1, record.name,0,record.sernum); else printf("\n%d: %-20s%-20d%-10d",i+1, record.name,record.score,record.sernum); } printf("\n\n按任意键继续."); fclose(fp); }/*排行榜浏览*/ void deleterecord(){ int i; FILE *fp; PLAYER temp; if((fp=fopen("guess.dat","rb+"))==NULL){ printf("\n文件不存在!\n"); return; } else { strcpy(temp.name,"\0"); temp.score=100; for(i=0;i temp.sernum=i+1; fwrite(&temp,sizeof(PLAYER),1,fp); } fclose(fp); printf("\n 记录己清除 !"); } } /*排行榜清除*/ int play(PLAYER *temp){ int answer[4],guess,a,b,times,i,j; char flag,ch; clrscr(); guess=0; times=0; getnum(answer); printf("\n输入姓名:"); scanf("%s",temp->name); printf("\n开始猜数,(最大四位数)或输入字母退出。\n"); a=0; while(a!=4) { a=0; b=0; times++; if(times>10) break; do { printf("\n%d ",times); scanf("%d",&guess); if(guess==0) return NULL; }while(guess<0||guess>9999); for(i=3;i>-1;i--) { for(j=0;j<4;j++) { if((int)(guess/pow10(i))==answer[j]) { if(i+j==3) a=a+1; else b=b+1; } } guess=guess-(int)(guess/pow10(i))*pow10(i); } printf(" %dA%dB\n",a,b); } printf("\nanswer is %d%d%d%d" ,answer[0],answer[1],answer[2],answer[3]); if(times>10){ printf("\n你输了!"); printf("\n没。
8.《C语言程序设计课程设计》任务书 设计题目:猜数字游戏
#include
9.猜数字游戏
/bbs/?a=898114195这本是给百度上的朋友写的,是我的原创 现在发上来看下好用么。
只是用于学习,可能不是很实用,请大家见谅。 觉得好上我们论坛支持一下。
猜数字游戏 游戏规则:① 游戏软件随机产生四个数字,但不显示,给用户提供输入提示符,让用户猜4个数字的值和位置顺序。如果数字值和位置顺序均正确,则猜数字成功。
② 用户有10次猜数字机会,如果在10次之内仍未猜出正确的数字值和顺序,则提示用户游戏失败,并给用户显示出原始数字的值和顺序。一旦用户在10次内猜数出正确的数字值和顺序,则提示用户赢得游戏。
③ 当用户赢得游戏后,会与排行榜中的前五名用户的游戏记录比较,根据比较结果更新排行榜。④ 记分规则:猜数字所用的次数即为分数,分数越少越好 功能要求: 游戏区功能:① 随机产生原始数字、② 游戏提示(提示用户当前猜数字的匹配情况,提示方法自主设计)、③ 原始数字显示 排行榜浏览和清除功能:① 按用户成绩顺序浏览 ② 按用户姓名浏览 ③ 排行榜清除 排行榜记录添加和更新功能:① 判断用户可否入榜 ② 记录更新 ③ 显示当前排行榜 游戏记录读取功能:① 判断有误游戏记录 ② 初始化排行榜 ③ 获取最好记录并在游戏开始时显示最好记录 帮助功能:给用户提供游戏规则和游戏相关提示的注释。
QQ 898114195 我是用 wintc 编译的,在中文DOS 下才能正确显示。 #include #include #include #include #define MAX 5 typedef struct { char name[21]; int score; unsigned char sernum; }PLAYER; void getnum(int answer[]){ int i,j; for(i=0;i<=3;i++) { randomize(); answer=rand()%10; for(j=0;j { while(answer==answer[j]) { answer=rand()%10; j=-1; } } } } /*get number for answer*/ void structcpy(PLAYER *play1,PLAYER play2){ strcpy(play1->name,play2.name); play1->score=play2.score; play1->sernum=play2.sernum; } int menu(){ clrscr(); printf("\n****************** 猜数字游戏 ******************\n\n"); printf(" ******** 由Ryw12403编译 ********\n\n"); printf(" 菜单 \n"); printf("\n\n1.帮助"); printf("\n\n2.显示排行榜"); printf("\n\n3.清除排行榜"); printf("\n\n4.开始游戏"); printf("\n\n5.退出游戏"); printf("\n\n请选择 (1->5):"); return getche(); } /*choose to play*/ void initrecord(){ int i; FILE *fp; char ch; PLAYER record[MAX]; clrscr(); if((fp=fopen("guess.dat","rb"))==NULL){ printf("\n第一次玩这个游戏,要继续吗?"); ch=getche(); printf("\n"); if(ch=='y'||ch=='Y'){ if((fp=fopen("guess.dat","wb+"))==NULL){ printf("无法建立文件,请检查磁盘!"); exit(1); } for(i=0;i strcpy(record.name,"\0"); record.score=100; record.sernum=i+1; fwrite(&record,sizeof(PLAYER),1,fp); } } else return; } fclose(fp); } void help(){ clrscr(); printf(" Help \n"); printf(" 输入四位0--9不重复的数字,按字母键退出。
\n"); printf("规则:A表示猜的数字和位置都对,B表示猜的数字对,位置不对\n"); printf("字母前面的数字表示对的个数。\n"); printf("如要猜的数字是2943,你猜2893,那就提示2A1B\n\n"); printf("按任意键继续."); } /*display help information */ void displayrecord(){ char i; FILE *fp; PLAYER record[MAX]; clrscr(); if((fp=fopen("guess.dat","rb"))==NULL){ printf("无法打开文件,请确认文件己存在。
"); return; } for(i=0;i fread(&record,sizeof(PLAYER),1,fp); } if(record[0].score==100){ printf("文件中没有记录."); } printf(" 第 1 名到第 5 名的排名:\n"); printf("姓名: 分数: 名次:\n"); for(i=0;i if(record.score==100) printf("\n%d: %-20s%-20d%-10d",i+1, record.name,0,record.sernum); else printf("\n%d: %-20s%-20d%-10d",i+1, record.name,record.score,record.sernum); } printf("\n\n按任意键继续."); fclose(fp); }/*排行榜浏览*/ void deleterecord(){ int i; FILE *fp; PLAYER temp; if((fp=fopen("guess.dat","rb+"))==NULL){ printf("\n文件不存在!\n"); return; } else { strcpy(temp.name,"\0"); temp.score=100; for(i=0;i temp.sernum=i+1; fwrite(&temp,sizeof(PLAYER),1,fp); } fclose(fp); printf("\n 记录己清除 !"); } } /*排行榜清除*/ int play(PLAYER *temp){ int answer[4],guess,a,b,times,i,j; char flag,ch; clrscr(); guess=0; times=0; getnum(answer); printf("\n输入姓名:"); scanf("%s",temp->name); printf("\n开始猜数,(最大四位数)或输入字母退出。\n"); a=0; while(a!=4) { a=0; b=0; times++; if(times>10) break; do { printf("\n%d ",times); scanf("%d",&guess); if(guess==0) return NULL; }while(guess<0||guess>9999); for(i=3;i>-1;i--) { for(j=0;j<4;j++) { if((int)(guess/pow1。
10.基于C语言的猜数游戏程序设计
最低0.27元开通文库会员,查看完整内容> 原发布者:阿波爱喝水 注意本程序使用rand函数此函数在此程序中默认随机值为1275可以用来测试程序#include#includeintmain(void){intc,r,s,x,y,m=0,n=0;inta[4],b[4];do{x=rand()%(9876-1234+1)+1234;for(r=3;r>=0;r--){a[r]=x%10;x=x/10;}}while(a[0]==a[1]||a[0]==a[2]||a[0]==a[3]||a[1]==a[2]||a[1]==a[3]||a[2]==a[3]);printf("我将给出一个随机的四位数,且这个数的各位数数字不重复从一到九,接下来你输入一个四位数,我会给你格式为*A*B的提示,A前的数字代表你本次对了几个数字,B前的数字代表你数字猜对且位置正确\n注意:完全猜对才会结束\n");do{scanf("%d",&y);c=y;for(r=3;r>=0;r--){b[r]=y%10;y=y/10;}if(c>9876||c=0;r--){for(s=3;s>=0;s--){if(a[r]==b[s]){m=m+1;}}}。
转载请注明出处众文网 » 猜数字小游戏毕业论文