c语言设计猜数字游戏
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言设计猜数字游戏相关的知识,希望对你有一定的参考价值。
各位大哥大姐,这是我老师出的作业题,大家帮帮忙,先提前说一句,我没有分了,真的,现在只求有兴趣的帮我做做,感激不尽。。。。。。
猜数字游戏:
计算机随机生成没有重复的n个数,用户从键盘输入猜测的数。每猜一次,电脑给出提示信息。如果用户输入的数跟计算机生成的数,数值和位置都完全相等,则胜出。
基本功能要求:
随机生成没有重复的4个数。(每个数字在0-9范围内)。
用户从键盘输入4个不重复的数,程序能对用户输入的数与随机生成的数进行匹配,并给出提示信息:“有 x个数数值和位置都相同!有 y个数数值相同,但位置不同。”
控制用户的尝试次数为10次。
计算、输出并保存用户的得分,计分规则:总分是100分,每失败一次扣10分。
有操作菜单,能根据不同选择运行不同功能:1:开始游戏!2:查看上次成绩!3:输出帮助信息!0:退出程序!
提示:(1)生成一个0~9的随机数,使用rand函数:
#include<stdio.h>#include<stdlib.h> //使用rand函数必须使用此头文件#include<time.h>int main() int a; srand(time(0)); //生成一个种子。整个程序只写一次即可。 a=rand()%10; //生成一个随机数。 printf("%d\n",a); return 0;
(2)保证生成的n个数不重复:
可用数组记录生成的数,每生成一个数,要与之前已经生成的进行比较,如果有相同的 重新生成,直到不相同。
大家给力啊,尽快。最好在13号之前搞定,感激不尽。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include <windows.h>
#define MAXTIMES 10
#define winer 1
#define loser 0
int main()
int aid[4],num[4],i,j,times,key,key2,A,B;
char ch;
time_t now;
Initialize:now=time(0);
srand(now);
aid[0]=(rand()+90)%10;/*生成目标数组*/
Sleep(20);
aid[1]=(rand()+90)%10;
Sleep(20);
aid[2]=(rand()+90)%10;
Sleep(20);
aid[3]=(rand()+90)%10;
for(i=0;i<4;i++) /*判断是否产生相同的数字*/
for(j=0;j<4;j++)
if((i!=j)&&(aid[i]==aid[j]))
goto Initialize;
printf("\n");
times=1;
while(times<=MAXTIMES) /*程序主体部分*/
key=0;
key2=0;
printf("NO.%d:\n\tPlease input 4 different int numbers to play!\n\t",times);
scanf("%d,%d,%d,%d",&num[0],&num[1],&num[2],&num[3]);
for(i=0;i<4;i++) /*判断所输数字是否合法则*/
if(!((num[i]<=9)&&(num[i]>=0)))
printf("\tError!The numbers you input must be int numbers which from 0 to 9\n");
key=1;
break;
if(key==1)
continue;
for(i=0;i<4;i++) /*判断是否输入了相同的数字*/
for(j=i+1;j<4;j++)
if(num[i]==num[j])
printf("\tError!The numbers you input must be different!\n");
key2=1;
break;
if(key2==1)
continue;
A=0;
B=0;
for(i=0;i<4;i++) /*比较两组数字*/
if(num[i]==aid[i])
A++;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
if(num[i]==aid[j])
B++;
B=B-A;
printf("\tA%dB%d\n",A,B);
if(A==4) /*游戏成功,提示并返回*/
printf("Congratulations!\n");
printf("Press any key to exit.!\n");
getchar();
return(winer);
else /*这次不完全对,允许次数内重新猜*/
printf("\t\tPress ENTER to continue,or press A to see about answer and exit.\n"); /*选择是否放弃,看答案*/
ch=getchar();
if(ch=='n')
continue;
if((ch=='a')||(ch=='A'))
printf("The four numbers:%d,%d,%d,%d\n",aid[0],aid[1],aid[2],aid[3]);
getchar();
return(loser);
times++;
printf("Sorry!You have lost all the chances!nPress any key to exit!\n");
getchar();
追问
不管怎么样,都谢谢你了,只有二十分,不好意思。
本回答被提问者采纳C语言猜数字小游戏「功能优化」
以上是关于c语言设计猜数字游戏的主要内容,如果未能解决你的问题,请参考以下文章