C语言接龙,C语言完成成语接龙小游戏 |
您所在的位置:网站首页 › 清香成语接龙怎么写出来好看一点 › 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\\idiom.txt)","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]); } 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()函数中! |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |