ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:138.01KB ,
资源ID:11703551      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11703551.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C课设判断回文报告.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C课设判断回文报告.docx

1、C课设判断回文报告目录一、需求分析 2二、概要设计 2三、详细设计 4四、调试分析 9五、用户手册 9六、测试数据 10七、附录 11一、需求分析 用栈及队列的基本操作完成对字符串是否为回文的判断,其中栈及队列都是作为单独的子函数存在。 通过创建栈和队列来存放字符串,然后分别取出栈和队列里元素,一个个比较,如果到栈和队列到最后一个元素从两边出来的字符都相同,则能说明用户输入的字符串为回文,否则就不是。 用户要从屏幕上输入一串字符,完成对栈及队列的存储。 程序完成对用户输入的字符串进行存储,然后完成对字符串的输出,比较丛栈和队列中出来的字符,然后进行判断。 程序执行命令: 接受用户输入字符串;

2、比较判断从栈和队列中出来的字符; 输出最后判断的结果。二、概要设计 设计栈和队列的抽象数据类型定义:基本操作: 操作结果stinit(s) 构造一个空栈,完成对栈的初始化s quinit(q) 构造一个空队列,完成对队列的初始化q stpush(s,c) 完成字符进栈的操作 enqueue(q,c) 完成字符进队列的操作 stempty(s),quempty(q) 判断栈和队列中是否还有元素 stpop(s),dequeue(q) 比较出栈与出队列的字符是否匹配 判断字符 基本操作: stpop(s)=dequeue(q); 初始条件:在子函数中已经定义了栈与队列,而且已经将字符分别输入空的栈

3、和队列中,现在的关键就在于判断从栈和队列里出来的元素是否相同。 操作结果:如果输入到栈和队列元素相同,那么代表输入的字符为回文字符。 3. 本程序模块结构 主函数模块 void main() 初始化; 为栈和队列申请空间; 调用栈和队列功能子函数; 判断从栈和队列出来的字符是否相同; 得出最终的结果; 栈模块-实现栈抽象数据类型,完成对栈的初始化,进栈和出栈的操作。 队列模块-实现队列抽象数据类型,完成对队列的初始化,进队列和出队列的操作。 各模块之间的调用关系如下: 主程序模块 栈模块 队列模块 三、 详细设计 1 基本数据类型操作1 栈模块1 typedef struct char sta

4、ckm; int top;stackstru; /定义栈2 参数设置:#define m 100/-基本操作的算法描述-int stinit(stackstru *s) s-top=-1; return 1; /初始化栈int stempty(stackstru *s) if(s-top=-1) /栈顶为空 return 0; else return 1; /判断栈是否为空int stpush(stackstru *s,char x) if(s-top=m) /栈满 puts(The stack is overflow!); /输出提示信息 return 0; else /栈未满 s-top=

5、s-top+1; /栈顶后移 s-stacks-top=x; /字符入栈 return 1; /入栈操作char stpop(stackstru *s) char y; if(s-top=-1)/栈为空 puts(The stack is empty!); /输出提示信息 return ; /返回空格 else /栈不为空 y=s-stacks-top; /取出栈顶元素 s-top=s-top-1; /栈顶指示后移 return y; /出栈操作2 队列模块:1 typedef struct char queuem; int front; int rear;queuestru; /定义队列2

6、参数设置:#define m 100/-基本操作的算法描述-int quinit(queuestru *q) q-front=0; q-rear=0; return 1; /初始化一个空的循环队列int quempty(queuestru *q) if(q-front=q-rear) /队头和队尾相等 return 0; else return 1; /判断队列是否为空int enqueue(queuestru *q,char e) if(q-rear+1)%m=q-front) /队列已满 puts(The queue is overflow!); /提示信息 return 0; else

7、q-queueq-rear=e; /入队 q-rear=(q-rear+1)%m; /移动队尾指针 return 1; /入队操作char dequeue(queuestru *q) char f; if(q-front=q-rear) /队列为空 puts(The queue is empty!); /提示信息 return 0; else f=q-queueq-front; /取出队首元素 q-front=(q-front+1)%m; /移动对头指针 return f; /出队操作3 主函数算法: void main() char c; int flag=0; stackstru *s=(

8、stackstru *)malloc(sizeof(stackstru); queuestru *q=(queuestru *)malloc(sizeof(queuestru); stinit(s); quinit(q); puts(-huiwen jiance-); puts(-102023ban 10202331 huangyawei-); putchar(n); puts(Welcome to come here,please input a string:); while(c=getchar()!=n) /输入字符串。输入回车键结束 putchar(c); /输出输入的字符 stpus

9、h(s,c); /字符进栈 enqueue(q,c); /字符进队列 putchar(n); puts(Please press enter to continue!); /提示信息 getchar(); while(stempty(s) /栈中还有元素 if(stpop(s)=dequeue(q) /出战的字符与出队列的字符匹配 flag=1; continue; /将标志设置为1,继续从栈和队列中区配字符 else /字符不匹配 flag=0; break; /跳出循环,将标志设置为0 if(flag=1)puts(This string is palindrome(weihui)!);

10、/标志为1,完全匹配,是回文 elseputs(This string isnt palindrome(huiwen)!); /标志为0,不完全匹配,不是回文puts(Please press enter to continue!); /提示信息getchar(); puts(Ceshi is over,plesae press enter to exit!n); /提示信息 getchar();2 函数的调用关系反映了本演示程序的层次结构 main 栈设置 队列设置 stinit stempty stpush stpop dequeue enqueue quempty quinit 判断是否

11、相等四、调试分析 在写整个程序的时候应注意对已栈和队列的操作不能少了一个步骤,否则会出现一些关于栈和队列的常识错误,从而会影响整个程序。 在程序中加了一些栈和队列基本的函数,比如判断栈和队列是否为空及栈和队列是否已满的函数,这样可以使程序更加完善。 在主函数中使用一些实用的提示符及界面的一些提示,这样使使用者更好的使用。五、用户手册 本程序的运行环境是在tc2.0中,文件名为huiwen.c。 打开文件后,按下Ctrl+F9进入界面。 进入界面后,按照界面的提示输入一串字符。 输入结束后,按Enter键结束输入。 然后继续按Enter键查看结果,看输入的字符是否为回文。 最后再次按Enter键

12、退出判断程序。六、测试数据进入界面后出现下面界面然后输入你想要输入的字符,假如输入abcdcba这一串字符,连续按两下Enter键结果:然后再次按下Enter键后:再次按下Enter键就结束了本次测试,再次测试下另一串字符,如:abcdefg 通过上面两次的测试,分别对字符abcdcba和abcdefg进行测试,结果已经表明字符abcdcba为回文,而字符abcdefg不是回文,满足实际要求。七、附录源程序:#include#include#define m 100typedef struct char stackm; int top;stackstru;typedef struct char

13、 queuem; int front; int rear;queuestru;int stinit(stackstru *s) s-top=-1; return 1;int stempty(stackstru *s) if(s-top=-1) return 0; else return 1;int stpush(stackstru *s,char x) if(s-top=m) puts(The stack is overflow!); return 0; else s-top=s-top+1; s-stacks-top=x; return 1; char stpop(stackstru *s)

14、 char y; if(s-top=-1) puts(The stack is empty!); return ; else y=s-stacks-top; s-top=s-top-1; return y; int quinit(queuestru *q) q-front=0; q-rear=0; return 1;int quempty(queuestru *q) if(q-front=q-rear) return 0; else return 1;int enqueue(queuestru *q,char e) if(q-rear+1)%m=q-front) puts(The queue

15、is overflow!); return 0; else q-queueq-rear=e; q-rear=(q-rear+1)%m; return 1; char dequeue(queuestru *q) char f; if(q-front=q-rear) puts(The queue is empty!); return 0; else f=q-queueq-front; q-front=(q-front+1)%m; return f; void main() char c; int flag=0; stackstru *s=(stackstru *)malloc(sizeof(sta

16、ckstru); queuestru *q=(queuestru *)malloc(sizeof(queuestru); stinit(s); quinit(q); puts(-huiwen jiance-); puts(-102023ban 10202331 huangyawei-); putchar(n); puts(Welcome to come here,please input a string:); while(c=getchar()!=n) putchar(c); stpush(s,c); enqueue(q,c); putchar(n); puts(Please press e

17、nter to continue!); getchar(); while(stempty(s) if(stpop(s)=dequeue(q) flag=1; continue; else flag=0; break; if(flag=1) puts(This string is palindrome(weihui)!); else puts(This string isnt palindrome(huiwen)!); puts(Please press enter to continue!); getchar(); puts(Ceshi is over,plesae press enter to exit!n); getchar();

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1