C语言猜数字游戏

a351824070 2014-05-31 05:03:44
猜数字
每次随机产生5个数字,提供10次机会,若猜中进入下一次猜数,每猜中一次奖励100分,可中途退出猜数游戏,可以累计分数,和产生积分榜
用户注册
用户积分查看



#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<5;i++)
{
str[i]=getch();
putchar(str[i]);
}
putchar('\n');
for(i=0;i<5;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_help()
{
system("cls");
printf("\t\t\t\t※游戏帮助※");
printf("\n 本游戏由电脑自动生成五个不重复数字,由玩家来猜;游戏开始后,");
printf("\n 玩家输入五个不重复的数字,输入后会有提示XAYB, X表示有几个");
printf("\n 数字与答案数字相同且位置相同。 Y表示有几个数字与答案数字相");
printf("\n 同但位置不正确。例如:答案数字是3792,如果输入9786,则会提");
printf("\n 示1A1B。玩家总共有十次机会来猜数字。");
printf("\n\n\n\t\t\t\t\t\t祝您游戏愉快!");
printf("\n\n请按任意键返回主菜单……");
getch();
return;
}
/*游戏部分*/
/*定义变量及函数*/
void c_game(const char *temp)
{
int i,j,ci,score=0;
char in[5];
char out[5]="0A0B";
for(ci=0;ci<10;ci++)
{
printf("第 %d 次输入,你总共有10次机会:",ci+1);
c_input(in);
for(i=0;i<5;i++)
{
if(in[i]==temp[i])
{
out[0]++;
}
else
{
for(j=0;j<5;j++)
{
if(in[i]==temp[j])
{
out[2]++;
}
}
}
}
printf("%s\n",out);
if(strcmp(out,"5A0B")==0)
{
score=score+100;
printf("恭喜您,加一百分!\n您的总分为%5d,score");
printf("\n请按任意键返回主菜单……………");
getch();
return;
}
out[0]='0';
out[2]='0';
}
printf("很遗憾,您的机会用完了,再接再厉哦!");
printf("\n请按任意键返回主菜单……………");
getch();
}

void c_rand()
{
int i,j;
char data[]="0123456789";
char temp[5];
system("cls");
printf("\t\t\t\t※猜数字游戏中※\n\n");
/*电脑自动生成5个不重复数字*/
for(i=0;i<5;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("\t\t\t\t※测试模式※\n\n");
printf("请输入测试数据:");
/*检测用户输入的数据是否符合要求*/
c_input(temp);
/*系统根据玩家设定的数据展开游戏测试*/
system("cls");
printf("\t\t\t\t※测试模式※\n\n");
c_game(temp);
}

/*主目录*/
void main()
{
srand(time(NULL));
while(1)
{
char choice;
system("cls");
printf("\n\n 猜数字游戏 ");
printf("\n\t\t\t\t1、【进入游戏】\n");
printf("\n\t\t\t\t2、【测试模式】\n");
printf("\n\t\t\t\t3、【游戏帮助】\n");
printf("\n\t\t\t\t4、【退出游戏】\n");
printf("\n请选择(1-4) : ");
choice=getchar();
switch(choice)
{
case '1':c_rand();break;
case '2':c_printf();break;
case '3':c_help();break;
case '4':
{
char ch;
printf("你确定要退出吗?(y/n):");
fflush(stdin);
ch=getchar();
if(ch=='y'||ch=='Y')exit(0);
else continue ;
}
}
}
}
...全文
262 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
a351824070 2014-06-02
  • 打赏
  • 举报
回复
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #define OK 0 #define SHORT 1 #define DUPLICATE 2 #define NONNUMERIC 3 #define SIZE 5 /*定义变量及函数*/ void c_input(char *str, int size) { int i, j, flag, len; /*检测输入是否合法*/ do{ flag = OK; scanf("%s", str); rewind(stdin); len = strlen(str); if(len < size) { printf("长度不足,请重新输入:\n"); flag = SHORT; continue; } for(i=0; i<size && flag==OK; i++) { if(str[i]<'0' || str[i]>'9') { printf("含非数字字符,请重新输入:\n"); flag = NONNUMERIC; break; } for(j=0; j<size; j++) { if(str[i] == str[j] && i != j) { printf("含重复字符,请重新输入:\n"); flag = DUPLICATE; break; } } } }while(flag != OK); str[size] = '\0'; return; } /*显示帮助信息*/ void c_help() { system("cls"); printf("\t\t\t\t※游戏帮助※"); printf("\n 本游戏由电脑自动生成五个不重复数字,由玩家来猜;游戏开始后,"); printf("\n 玩家输入五个不重复的数字,输入后会有提示XAYB, X表示有几个"); printf("\n 数字与答案数字相同且位置相同。 Y表示有几个数字与答案数字相"); printf("\n 同但位置不正确。例如:答案数字是3792,如果输入9786,则会提"); printf("\n 示1A1B。玩家总共有十次机会来猜数字。"); printf("\n\n\n\t\t\t\t\t\t祝您游戏愉快!"); printf("\n\n请按任意键返回主菜单……"); getchar(); return; } /*游戏部分*/ /*定义变量及函数*/ void c_game(const char *temp) { int i, j, ci; char nickname; printf("请输入你的昵称:"); nickname=getchar(); static score = 0; char in[SIZE + 1]; char out[5]="0A0B"; for(ci=0; ci<10; ci++) { printf("第 %d 次输入,你总共有10次机会:",ci + 1); c_input(in, SIZE); if(strcmp(in, temp) == 0) { score += 100; printf("恭喜您,加一百分!\n您的总分为%5d", score); printf("\n请按任意键返回主菜单…"); getchar(); return; } for(i=0; i<SIZE; i++) { if(in[i] == temp[i]) out[0]++; else for(j=0; j<SIZE; j++) if(in[i] == temp[j]) out[2]++; } printf("%s\n",out); out[0] = '0'; out[2] = '0'; } printf("很遗憾,您的机会用完了,再接再厉哦!"); printf("\n请按任意键返回主菜单……"); getchar(); return; } void c_rand(char *str) { int i, j; char data[] = "0123456789"; system("cls"); srand(time(NULL)); printf("\t\t\t\t※猜数字游戏中※\n\n"); /*电脑自动生成5个不重复数字*/ for(i=0; i<SIZE; i++) { j = rand() % (10 - i); str[i] = data[j]; data[j] = data[10 - i - 1]; } c_game(str); return; } void c_jifenbang(char *str){ //查看积分榜// char F; system("cls"); printf("\t\t\t\t※查看积分榜※\n\n"); printf("用户%c的积分为%5d,nickname,score"); printf("\n\n\n按F返回菜单"); scanf("%c",&F); if F=F, return 0 } void c_test(char *str) { /*用户自己设置数字来测试游戏*/ system("cls"); printf("\t\t\t\t※测试模式※\n\n"); printf("请输入测试数据:"); /*检测用户输入的数据是否符合要求*/ c_input(str, SIZE); /*系统根据玩家设定的数据展开游戏测试*/ system("cls"); printf("\t\t\t\t※测试模式※\n\n"); c_game(str); return; } int main() { char str[80]; char ch; char choice; while(1) { system("cls"); printf("\n 猜数字游戏 "); printf("\n\t\t1、【进入游戏】"); printf("\n\t\t2、【测试模式】"); printf("\n\t\t3、【游戏帮助】"); printf("\n\t\t4、【查看积分】"); printf("\n\t\t5、【退出游戏】"); printf("\n请选择(1-5) : "); choice = getchar(); fflush(stdin); system("cls"); switch(choice) { case '1': printf("***游戏模式***\n"); c_rand(str); break; case '2': printf("***测试模式***\n"); c_test(str); break; case '3': printf("***帮助***\n"); c_help(); break; case '4': printf("***查看积分榜***\n"); c_jifenbang(); break; case '5': printf("你确定要退出吗?(y/n):"); ch = getchar(); if(ch == 'y' || ch == 'Y') exit(0); } } return 0; } 帮忙修改一下这个版本
anshiny 2014-05-31
  • 打赏
  • 举报
回复
求散分!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

#define OK         0
#define SHORT      1
#define DUPLICATE  2
#define NONNUMERIC 3

#define SIZE 5


/*定义变量及函数*/
void c_input(char *str, int size) {
	int i, j, flag, len;
	/*检测输入是否合法*/
	do{
		flag = OK;
		scanf("%s", str);
		rewind(stdin);
		len = strlen(str);
		if(len < size) {
			printf("长度不足,请重新输入:\n");
			flag = SHORT;
			continue;
		}

		for(i=0; i<size && flag==OK; i++) {
			if(str[i]<'0' || str[i]>'9') {
				printf("含非数字字符,请重新输入:\n");
				flag = NONNUMERIC;
				break;
			}
			for(j=0; j<size; j++) {
				if(str[i] == str[j] && i != j) {
					printf("含重复字符,请重新输入:\n");
					flag = DUPLICATE;
					break;
				}
			}
		}
	}while(flag != OK);
	str[size] = '\0';
	return;
}

/*显示帮助信息*/
void c_help() {
	system("cls");
	printf("\t\t\t\t※游戏帮助※");
	printf("\n    本游戏由电脑自动生成五个不重复数字,由玩家来猜;游戏开始后,");
	printf("\n    玩家输入五个不重复的数字,输入后会有提示XAYB, X表示有几个");
	printf("\n    数字与答案数字相同且位置相同。 Y表示有几个数字与答案数字相");
	printf("\n    同但位置不正确。例如:答案数字是3792,如果输入9786,则会提");
	printf("\n    示1A1B。玩家总共有十次机会来猜数字。");
	printf("\n\n\n\t\t\t\t\t\t祝您游戏愉快!");
	printf("\n\n请按任意键返回主菜单……");
	getchar();
    return;
}


/*游戏部分*/
/*定义变量及函数*/
void c_game(const char *temp) {
	int i, j, ci;
	static score = 0;
	char in[SIZE + 1];
	char out[5]="0A0B";
	for(ci=0; ci<10; ci++) {
		printf("第 %d 次输入,你总共有10次机会:",ci + 1);
		c_input(in, SIZE);
		if(strcmp(in, temp) == 0) {
			score += 100;
			printf("恭喜您,加一百分!\n您的总分为%5d", score);
			printf("\n请按任意键返回主菜单…");
			getchar();
			return;
		}
		for(i=0; i<SIZE; i++) {
			if(in[i] == temp[i])
				out[0]++;
			else
				for(j=0; j<SIZE; j++)
					if(in[i] == temp[j])
						out[2]++;
		}
		printf("%s\n",out);
		
		out[0] = '0';
		out[2] = '0';
	}
	printf("很遗憾,您的机会用完了,再接再厉哦!");
	printf("\n请按任意键返回主菜单……");
	getchar();
	return;
}


void c_rand(char *str) {
	int i, j;
	char data[] = "0123456789";
	system("cls");
	srand(time(NULL));
	printf("\t\t\t\t※猜数字游戏中※\n\n");
	/*电脑自动生成5个不重复数字*/
	for(i=0; i<SIZE; i++) {
		j = rand() % (10 - i);
		str[i] = data[j];
		data[j] = data[10 - i - 1];
	}
	c_game(str);
	return;
}


void c_test(char *str) {
	/*用户自己设置数字来测试游戏*/
	system("cls");
	printf("\t\t\t\t※测试模式※\n\n");
	printf("请输入测试数据:");
	/*检测用户输入的数据是否符合要求*/
	c_input(str, SIZE);
	/*系统根据玩家设定的数据展开游戏测试*/
	system("cls");
	printf("\t\t\t\t※测试模式※\n\n");
	c_game(str);
	return;
}


int main()
{
	char str[80];
	char ch;
	char choice;
	while(1) {		
		system("cls");
		printf("\n          猜数字游戏         ");
		printf("\n\t\t1、【进入游戏】");
		printf("\n\t\t2、【测试模式】");
		printf("\n\t\t3、【游戏帮助】");
		printf("\n\t\t4、【退出游戏】");
		printf("\n请选择(1-4) : ");
		choice = getchar();
		fflush(stdin);
		system("cls");
		switch(choice)
		{
		case '1':
			printf("***游戏模式***\n");
			c_rand(str);
			break;
		case '2':
			printf("***测试模式***\n");
			c_test(str);
			break;
		case '3':
			printf("***帮助***\n");
			c_help(); break;
		case '4':
			printf("你确定要退出吗?(y/n):");
			ch = getchar();
			if(ch == 'y' || ch == 'Y')
				exit(0);
		}
	}
	return 0;
}
a351824070 2014-05-31
  • 打赏
  • 举报
回复
给我做做呗,多多感谢啊
li4c 2014-05-31
  • 打赏
  • 举报
回复

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧