c语言程序设计第十一章综合实训—学生成绩管理系统资料.ppt

c语言程序设计第十一章综合实训—学生成绩管理系统资料.ppt

ID:56812051

大小:672.51 KB

页数:45页

时间:2020-06-28

c语言程序设计第十一章综合实训—学生成绩管理系统资料.ppt_第1页
c语言程序设计第十一章综合实训—学生成绩管理系统资料.ppt_第2页
c语言程序设计第十一章综合实训—学生成绩管理系统资料.ppt_第3页
c语言程序设计第十一章综合实训—学生成绩管理系统资料.ppt_第4页
c语言程序设计第十一章综合实训—学生成绩管理系统资料.ppt_第5页
资源描述:

《c语言程序设计第十一章综合实训—学生成绩管理系统资料.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、项目十一综合实训—学生成绩管理系统1【项目要求】将从键盘输入的十进制数转换为N(如二进制、八进制、十六进制)进制数据,利用顺序栈实现数制转换问题十进制转化成N进制的算法是//整数部分为除N取余法,小数部分为乘N取整法。例如:对1348这个数,转化为N进制,也就是解方程1348=aN^5+bN^4+cN^3+dN^2+eN^1+f,目标就是要求出系数a,b,c,d,e,f的值(也许a的前面还有w*N^6甚至7次方等等,但是次数太高的话就必然会是0),比如我们假定N=10的话,那么求出来的结果必然是a=b=0,c=1,d=3,e

2、=4,f=8。对于N进制来说,a,b,c,d,e,f的值都必然要小于N(否则就会向高位进一),显然求解的过程是:将1348除以10(令N=10),则余数就是f,即8,则商则是aN^4+bN^3+cN^2+dN^1+e,这样进一步除以10得e,依次得到d,c,b,a,可用堆栈来实现。【项目分析】2问题情境及实现/*堆栈的应用---进制转换将十进制转换成其他进制*/#include #definemaNlen100typedefstruct//堆栈的结构大家应该都很熟悉了{intdata[maNlen];int

3、top;}SeqStack;voidInitStack(SeqStack* S)   //置栈空{S->top = -1;}3问题情境及实现voidPop(SeqStack* S,int* N)    //出栈,N用来接受被弹出的数的{*N = S->data[S->top];S->top--;}voidPush(SeqStack* S,intN)    //入栈{S->top++;S->data[S->top] = N;}voidConversion(SeqStack* S,intn,intd)    //n为一个十进制数

4、,d为进制{if(d< 0)printf("ERROR!");if(n< 0)n = -n;if(n== 0)Push(S, 0);while(n){Push(S,n%d);n /= d;}}4问题情境及实现intmain(){intn,d,N;      //n为一个十进制数,d为进制SeqStackstack, *S;S = &stack;while(scanf("%d%d",&n,&d) != EOF){InitStack(S);          //初始化Conversion(S, n, d);if(n< 0)

5、printf("%c",'-'); //若是负数while(S->top != -1){Pop(S, &N);if(N< 10)printf("%d",N);elseprintf("%c",N+ 55);    //使输出的时候大于9的输出为字母ABC}printf("");}return0;}5相关知识1.栈2.队列本讲小结61栈1.1栈的定义及顺序存储1.2栈的运算1.3双栈的操作1.4栈的应用7栈满1.1栈的定义及顺序存储1.栈的定义栈又叫堆栈,允许在表的一端进行插入和删除。后进先出的线性表(简称LIFO表)。MA

6、N-1┇i┇210top空栈a11个元素a3a2a13个元素a3a2a12个元素an┇┇a3a2a1toptoptoptop82.栈的顺序存储#defineMAN栈中允许存放元素的最大个数typedefstruct{datatypedata[MAN];inttop;}stack;91.2栈的运算1.栈的基本操作⑴栈初始化:init(s)构造了一个空栈;⑵判栈空:empty(s)若栈s为空栈返回为1,否则返回为0;⑶入栈:push(s,N)在栈s的顶部插入一个新元素N,使N成为新的栈顶元素;⑷出栈:pop(s)栈s的顶部元素从

7、栈中删除;⑸读栈顶元素:get(s)取栈顶元素作为结果返回;⑹置栈空:clear(s)清除栈s中的所有元素,使之成为空栈。102.栈的基本算法的实现⑴栈的初始化voidinit(stack*s){s->top=0;}⑵判空栈intempty(stack*s){if(s->top==0)return1;elsereturn0;}11⑶入栈voidpush(stack*s,datatypeN){if(s->top==MAN-1)printf("栈满");else{s->top++;s->data[s->top]=N;}}12⑷出

8、栈voidpop(stack*s,datatype*N){if(empty(s))printf("栈空");else{*N=s->data[s->top];s->top--;}}13⑸取栈顶元素datatypeget(stack*s){if(empty(s))printf("栈空");el

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。