简单c语言实现的成语接龙小游戏

时间:2024-03-25 15:05:56

一、目标:
成语接龙小游戏,玩家输入一个成语,程序(电脑)输出一个。按成语接龙规则(最后一个字与接下来第一个字相同)
二、算法流程图:
简单c语言实现的成语接龙小游戏
三、实现代码:

#include<stdio.h>
#include<string.h>
#define M 13361
FILE *fp;
int main()
{
	char cy[M][10];
	char a[8];
	//char b[2];
	char c[2];
	int i,j;
	int find;
	int flag=0;
	if((fp=fopen("idom.txt","r"))==NULL)
	{
	  printf("cannot open file\n");
	  return 0;
	}
	
	for(i=0;i<M;i++)
	{
		fscanf(fp,"%s",cy[i]);
	}
	while(1)
	{
	
	printf("请输入开头的成语:(若输入“退出”,则退出游戏)\n"); 
	scanf("%s",&a);
	find=0;
	if(strcmp(a,"退出")==0)
	break;
	for(i=0;i<M;i++)
	{
		if(strncmp(a,cy[i],strlen(a))==0)
		{
			find=1;
			break;
		}
	}
	if(find==0)
	printf("输入的不是成语,请重新输入或退出\n");
	else
	{
	//b[0]=a[6];
//	b[1]=a[7];
	for(i=0;i<M;i++)
	{
		if(cy[i][0]==a[6]&&cy[i][1]==a[7])
		
	{
		flag=1;
		printf("%s\n",cy[i]);
		//c[0]=cy[i][6];
		//c[1]=cy[i][7];
		break;}
		if(flag==0&&i==(M-1))
		{
		printf("你赢了!真棒!\n");
		break;}
	//	continue;
	
	}
}
}
	return 0;
}

四、部分代码解释:
(1)

if((fp=fopen("idom.txt","r"))==NULL)

将成语库命名为idom.txt,并且将文件和c语言程序放在同一个文件夹下。Fopen函数文件打开函数用法:fopen(文件名,打开方式)fp=fopen==null表示了将成语库全部放进指针。
(2)

if(strncmp(a,cy[i],strlen(a))==0)

用法int strncmp ( const char * str1, const char * str2, size_t n );比较两个数组==0则说明a在数组cy中。
(3)

if(cy[i][0]==a[6]&&cy[i][1]==a[7])

输入数组和成语库的比较,首尾相等则继续运行。
(4)

if(flag==0&&i==(M-1))

循环完M次若没有符合条件的则继续运行。
五、运行结果
简单c语言实现的成语接龙小游戏
若不将成语库和c程序放在同一个文件夹下,则会出现这样的报错信息。
简单c语言实现的成语接龙小游戏
输入一个开头成语之后程序运行效果如图
简单c语言实现的成语接龙小游戏
若没有词语可接,输入退出后会呈现这样的效果。
简单c语言实现的成语接龙小游戏
若是你的词语让程序的库没法接下去,就会出现这样的提示。