求助成语接龙程序设计!!!
求助大神帮助做一下这道成语接龙程序设计题研讨主题:模块化程序设计
导言:五个选题都是字符数组、二维数组和函数相关的综合运用。要求:
1、用模块化程序设计思想,通过多个函数间的调用来实现规模较大的程序;
2、设计包含菜单的程序,让用户可以选择执行不同的功能;
3、通过永真式如while(1)让程序一直循环运行,直到用户选择结束程序(如输入“end”)程序才会退出。
一.研讨问题:
1.[成语接龙]
(a)用菜单列出接龙的开始成语,供用户选择,当用户不喜欢列出的选项时,可以自己输入开始的成语;
(b)接龙的规则为:四字成语,上一个成语的最后一字和下一个成语的第一个字相同;
(c)一旦用户输入的成语不满足上述规则(或者用户选择结束本次接龙),则一次接龙结束,统计出用户接龙的成语数量;
(d)询问用户是否再玩儿一次,根据用户的选择继续运行或者退出程序。
提示:一个成语可以用一维字符数组来存储。如果要存储多个(如10个)成语,可以定义二维数组。每个汉字占2个字节,所以存储一个成语需要定义包含9个字符的数组,最后一个位置存放字符串结束标志‘\0’。同理,成语的第一个字和最后一个字可以用含3个字符的数组来存储。例如:已定义char idiom[9]=“学富五车”,char start[3],char end[3];
则第一个字“学”可以用函数存储到start数组中:
strncpy(start,idiom,2);//取idiom的前2个字符复制到start中
start[2]='\0';//在start数组末尾放置字符串结束符'\0’
最后一个字“车”,可以逐个字符赋值给end数组:
end[0]=idiom[6];end[1]=idiom[7];end[2]='\0';
读入下一个成语:
char next[9]; scanf("%s",next);
比较首尾字是否相同用strcmp函数:if(strcmp(start,end)==0)表示相同
以上字符串处理函数strncpy(),strcmp()等需要包含头文件#include <string.h>
注意:输入数据并回车时,一个回车符会送到缓冲区,影响读入新的数据。因此可以用一个getchar()函数读走缓冲区里的回车符。
成语接龙.zip
(77.12 KB)
[此贴子已经被作者于2018-6-25 11:25编辑过]