c语⾔成语接龙编程,C语⾔完成成语接龙⼩游戏
⽤C语⾔实现成语接龙⼩游戏(新⼿上路,⼤神勿喷)
1、⾸先需要到⼀个成语库(从⽹上下载即可,保存为.txt⽂件)
2、整体思路如下
由于要⽤的成语保存在⽂件⾥,⼀边⽤⼀边读取会降低代码的效率,所以我们⾸先建⽴⼀个⼆维动态数组,将⽂件⾥的成语读取到⼆维数组⾥。⾸先让⽤户输⼊第⼀个成语,先遍历⼀遍成语库⾥的成语,查看成语库⾥是否包含此成语,若不存在则默认⽤户输⼊的不是成语,输出“Your input is not a idiom”,程序结束。如果成语库有该成语,则电脑从成语库⾥接出下⼀个成语,然后再由⽤户接成语,循环往复,⼀直到⽤户接的成语最后⼀字成语库⾥没有以该字开头的成语,则输出:“YOU WIN!”,程序结束;如果⽤户接不出电脑输出的成语,则输出:“You fail!”
3、流程图如下:
4、实现代码如下:
#include
#include
#include
#define MAX 30
int main()
{
FILE *fp;
int i,flag = 0,t,Y=1,flag1=0;
int n1 = 20432 , n2 = MAX , j ;
char buf1[MAX],buf2[MAX],**array;
array = (char **)malloc(n1*sizeof(char *));
fp = fopen("⽂件保存路径(如:F:\\Linux_report\\)","r"); if(NULL == fp)
{
printf("File open fail\n");
}
for(i = 0 ; i < n1 ; i++)
{
array[i] = (char *)malloc(n2*sizeof(char));
fscanf(fp,"%s",array[i]);
}c语言编程小游戏
for(i = 0 ; !feof(fp) ; i++)
{
fscanf(fp,"%s",array[i]);
}
while(Y==1)
{
printf("Please input an idiom:\n");
scanf("%s",buf1);
for(i = 0 ; i < 20432 ; i++)
{
if(!(strcmp(buf1,array[i])))
{
flag = 1;
break;
}
}
if(flag==0)
{
printf("Your input is not a idiom\n");
return 0;
}
strcpy(buf2,buf1);
while(1)
{
flag = 0 ;
flag1 = 0 ;
for(i = 0 ; i < 20431 ; i++)
{
if((buf2[6]==array[i][0])&&(buf2[7]==array[i][1])&&(array[i][10]!='*')) {
flag1 = 1 ;
printf("%s\n",array[i]);
strcpy(buf2,array[i]);
array[i][10] = '*' ;
break;
}
}
if(flag1 == 0)
{
printf("YOU WIN!");
return 0;
}
printf("Please input an idiom:\n");
scanf("%s",buf1);
for(i = 0 ; i < 20432 ; i++)
{
if(!(strcmp(buf1,array[i])))
{
flag = 1;
break;
}
}
if(flag==0)
{
printf("Your input is not an idiom\n");
return 0;
}
if((buf1[0]!=buf2[6])||(buf1[1]!=buf2[7]))
{
printf("You fail!");
return 0 ;
}
else
strcpy(buf2,buf1);
}
}
free(array[i]);
free(array);
return 0;
}
注:代码运⾏时确保电脑已有正确的成语库,并把路径赋给fopen()函数中!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论