C语言课程设计任务书
- 格式:docx
- 大小:389.39 KB
- 文档页数:20
c语言实训课课程设计一、教学目标本课程旨在通过C语言实训,使学生掌握C语言的基本语法、编程技巧和相关概念,培养学生独立编程和解决问题的能力。
具体目标如下:1.知识目标:–掌握C语言的基本语法和数据类型。
–理解函数、数组、指针、结构体等基本概念。
–学习C语言的输入输出、文件操作和库函数的使用。
2.技能目标:–能够使用C语言编写简单的程序,解决实际问题。
–熟练使用C语言的调试工具,分析并解决编程中的问题。
–掌握C语言编程的规范和技巧,编写结构清晰、可读性强的代码。
3.情感态度价值观目标:–培养学生的创新意识和解决问题的能力,激发学生对计算机科学的兴趣。
–培养学生团队合作的精神,提高学生的沟通能力和协作能力。
–培养学生的自主学习能力,养成良好学习习惯。
二、教学内容根据课程目标,教学内容主要包括以下几个方面:1.C语言基本语法和数据类型。
2.函数、数组、指针、结构体等基本概念。
3.C语言的输入输出、文件操作和库函数的使用。
4.编程实践,包括简单的数学计算、字符串处理、数据结构实现等。
教学大纲将按照以下顺序进行:1.第一周:C语言基本语法和数据类型。
2.第二周:函数、数组、指针、结构体等基本概念。
3.第三周:C语言的输入输出、文件操作和库函数的使用。
4.第四周:编程实践,包括简单的数学计算、字符串处理、数据结构实现等。
三、教学方法为了激发学生的学习兴趣和主动性,将采用多种教学方法:1.讲授法:通过讲解C语言的基本语法、概念和编程技巧,使学生掌握基础知识。
2.案例分析法:通过分析典型的编程案例,使学生理解并掌握C语言的应用。
3.实验法:安排上机实验,让学生亲自动手编写代码,培养学生的实际编程能力。
4.小组讨论法:学生进行小组讨论,分享学习心得和解决问题的方法,提高学生的团队合作能力。
四、教学资源为了支持教学内容和教学方法的实施,将准备以下教学资源:1.教材:《C程序设计语言》(K&R)或《C Primer Plus》。
《C语言程序设计课设》课程设计指导书一、课程设计的目的(1)加深对讲授内容的理解,尤其是一些语法规则。
(2)熟悉C语言程序设计的结构化编程的思想,掌握数据的基本类型、自定义类型、函数、文件和指针等知识,能运用这些知识进行综合编程,熟练应用。
(3)能够综合运用所学知识,编程解决实际问题。
(4)培养团队分工合作的意识,最终使学生提高编程技能和解决实际问题的能力。
二、课程设计基本要求2.1.组织管理1.由院、系指派经验丰富的专业教师担任指导教师。
2.课程设计实行课程负责人与指导教师共同负责制。
3.课程负责人主要进行课设的命题、指导教师的考核、技术把关和全面管理。
4.指导教师全面负责所承担班级的课程设计指导、管理和考核评定工作。
2.2设计要求1.自选题目、小组管理、团队合作、小组评测。
2.模块化程序设计。
3.锯齿型书写格式。
4.必须上机调试通过。
三、选题要求:每个题目限定1-2人,每人必须负责一部分功能,并独立完成,推举出一个组长,负责任务分工,汇总到班长处,然后交给指导教师。
四、设计报告格式及要求:1、题目2、设计目的3、总体设计(程序设计组成框图、流程图)4、详细设计(模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)5、运行结果及分析6、调试与测试:调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施7、课程设计心得及体会8、源程序清单和执行结果:清单中应有足够的注释五、课程设计成绩评定5.1基本要求:(1)每个人必须有程序运行结果;(2)每个人必须交《C语言课程设计》报告5.2、成绩评定和打分标准由指导教师对学生在课程设计期间的表现,所完成的设计报告的质量、设计结果的验收和答辩情况进行综合考核。
具体评定标准如下:(1)上机考勤:注重平时上机考勤与遵守纪律情况20%(2)结果验收:学生能运行、讲述或调试自己的程序,回答教师提问,每个人必须有程序运行结果40%(3)小组自评成绩结果10%(4)设计报告:每个人必须交《C语言课程设计》报告和《C语言课程设计》日志30%以上四项缺一不可,否则不能到得相应学分依据上述考核内容,最后采用优(>90分)、良(80~89分)、中(70~79分)及格(60~69分)、不及格(<60分)五级记分制评定学生课程设计成绩。
实验一顺序结构程序设计一、实验目的1. 掌握C语言中使用最多的一种语句——赋值语句的使用方法。
2. 掌握各种类型数据的输入输出的方法,能正确使用各种格式转换符。
二、实验的内容和步骤1.以下程序多处有错。
要按下面指定的形式输入数据和输出数据时,请对该程序做相应的修改。
#include <stdio.h>void main ( ){ double a,b,c,s,v;printf(input a,b,c:\n);scanf("%d%d%d",a,b,c);s=a*b;v=a*b*c;printf("%d %d %d",a,b,c);printf("s=%f\n",s,"v=%d\n",v);}当程序执行时,屏幕的显示和要求输入形式如下:input a,b,c:1.0 2.0 3.0 →此处的1.0 2.0 3.0是用户输入的数据a=1.000000 b=2.000000,c=3.000000 →此处是要求的输出格式s=2.000000,v=6.000000相关知识:①检查程序错误时应注意几点:a)有时程序中一个错误会引发一系列错误信息,工作中不应被这种情况所迷惑,改正了一些错误后应及时对源程序重新进行编译;b)如果修改错误时增删了行,或是一个行里有多个错误,更正前面错误时增删了字符,就可能导致系统对错误定位不准,此时应该重新编译;c)系统给出的警告信息一般都说明程序中有问题,因为系统发现了可疑情况。
对于警告信息同样要逐个仔细分析。
除非明确认定不是问题,否则绝不能简单地认为不是错误而不予理睬。
实际上,很多警告都是因为程序中确实有严重的隐含错误。
d) 在连接中发现新错误也需要仔细检查和修改程序。
连接时发现的错误一般是由于函数名或外部变量名字写错,或者一些函数、外部变量没有定义引起的。
系统不能对连接错误给以自动定位,只能提供有关的名字信息等。
课程设计报告课程名称《C语言程序设计》课题名称运动会分数统计系统专业电气工程及其自动化班级电气工程学号姓名指导教师年月日湖南工程学院课程设计任务书课程名称《C语言程序设计》课题运动会分数统计系统专业班级电气工程及其自动化学生姓名学号指导老师审批任务书下达日期年月日任务完成日期年月日第一部分《C语言课程设计》任务书前言《C语言程序设计》课程设计是对学生的一种全面综合训练,它包括问题分析,总体结构设计,用户界面设计,程序设计基本技能和技巧,多人合作,以至一整套软件工作规范的训练和科学作风的培养。
是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。
通常,课程设计的课题比平时的习题复杂得多,也更接近实际。
课程设计着眼于与应用的结合点,使学生学会如何把书上学到的知识用于解决实际问题,培养软件工作所需要的动手能力;另一方面,能使书上的知识变“活”,使学生更好地深化理解和灵活掌握教学内容。
为了达到上述目的,本课程设计安排了八个设计课题,训练重点在于基本的程序设计方法和分析问题的能力,而不强调面面俱到。
学生可任选其中一题进行设计,设计完毕写出课程设计报告,用A4纸打印成册;并将课程设计报告与源程序存盘。
学习委员将课程设计报告与磁盘收齐后交指导老师。
一、目的全面熟悉、掌握C语言基本知识,掌握C程序设计中的顺序、分支、循环三种结构及数组、函数和C语言基本图形编程等方法,把编程和实际结合起来,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,养成提供文档资料的习惯和规范编程的思想,为以后在专业课程中应用计算机系统解决计算、分析、实验和设计等学习环节打下较扎实的基础。
二、设计要求掌握结构化程序设计的主体思想,以自顶向下逐步求精的方法编制程序解决一些实际的问题,为将来编写软件积累一些典型的案例处理经验。
C语言实训课课程设计一、教学目标本课程旨在通过C语言实训,使学生掌握C语言的基本语法、编程技巧和相关概念,培养学生独立编程和解决问题的能力。
具体的教学目标如下:1.理解C语言的基本语法和数据类型。
2.掌握函数的定义和调用。
3.熟悉数组的声明和使用。
4.了解指针的概念和应用。
5.掌握循环和条件语句的用法。
6.能够使用C语言编写简单的程序。
7.具备基本的调试和解决问题的能力。
8.能够阅读和理解C语言的代码。
情感态度价值观目标:1.培养学生的团队合作意识和沟通能力。
2.激发学生对计算机编程的兴趣和热情。
3.培养学生的创新思维和解决问题的能力。
二、教学内容根据课程目标,教学内容主要包括以下几个方面:1.C语言的基本语法和数据类型:介绍C语言的基本结构,包括变量、常量、运算符等。
2.函数的定义和调用:讲解函数的声明、定义和调用方式,包括主函数和用户自定义函数。
3.数组的声明和使用:学习一维和多维数组的声明、初始化和使用方法。
4.指针的概念和应用:理解指针的定义和表示方法,掌握指针的运算和指针数组的使用。
5.循环和条件语句:学习循环语句(for、while、do-while)和条件语句(if、else、switch)的用法。
三、教学方法为了激发学生的学习兴趣和主动性,将采用多种教学方法相结合的方式:1.讲授法:通过讲解和演示,使学生掌握C语言的基本概念和语法。
2.案例分析法:通过分析典型程序案例,引导学生理解编程思想和技巧。
3.实验法:安排上机实验,让学生亲自动手编写代码,培养实际编程能力。
4.讨论法:学生进行小组讨论,促进学生之间的交流与合作。
四、教学资源为了支持教学内容和教学方法的实施,将选择和准备以下教学资源:1.教材:《C程序设计语言》(K&R)或《C语言入门教程》。
2.参考书:提供一些相关的参考书籍,如《C语言编程思想》、《C语言实战》等。
3.多媒体资料:制作PPT课件,提供一些教学视频和在线教程。
C 语言课程设计(小游戏贪吃蛇得程序设计报告)设计人:班级:201年月号目录一:概述1:研究背景及意义2:设计得任务与需要知识点3:具体完成设计内容二:需求分析1:功能需求2:操作方法三:总体设计1:模块划分2:数据结构设计四:详细设计1:主空摸块设计2:绘制游戏界面3:游戏得具体过程4:游戏得结束处理5:显示排行榜信息模块五:程序得调试与测试1:动画与音乐同步2:蛇得运行3:终止程序六:结论七::结束语八:程序清单九:参考文献一. 概述本课程设计以软件工程方法为指导,采用了结构化,模块化得程序设计方法,以C语言技术为基础,使用TurboC++3、0为主要开发工具,对贪吃蛇游戏进行了需求分析,总体设计,详细设计,最终完成系统得实现与测试。
1、1 研究得背景及意义随着社会得发展,人们生活得节奏日益加快,越来越多得人加入了全球化得世界。
人们不再拘泥与一小块天地,加班,出差成了现代人不可避免得公务。
而此时一款可以随时随地娱乐得游戏成为了人们得需要。
此次课程设计完成得贪吃蛇小游戏,正就是为了满足上述需求而设计出来得。
贪吃蛇游戏虽小,却设计诸多得知识点。
通过开发贪吃蛇游戏系统,可使读者初步了解使用软件工程得与那个发,技术与工具开发软件得过程,进一步掌握结构化,模块化得程序设计方法与步骤,进一步掌握总体数据结构设计,模块划分方法,掌握局部变量,全局变量,结构体,共用体,数组,指针,文件等数据结构得使用方法,掌握图形,声音,随机数等多种库函数得使用方法,学习动画,音乐,窗口,菜单,键盘等多项编程技术,进一步学会软件调试,测试,组装等软件测试方法,为后续课程得学习与将来实际软件开发打下坚实得基础。
1、2设计得任务与需要得知识点1、2、1 课程设计主要完成得任务1)、通过编写“贪吃蛇游戏”程序,掌握结构化,模块块化程序设计得思想,培养解决实际问题得能力。
2)有同步播放动画,声音效果。
3)设计好数组元素与蛇,食物得对应关系。
课程设计报告书设计题目烟花绽放系别计算机工程系专业计算机科学与技术班级姓名指导教师设计任务下达日期2011年12 月24 日设计时间2011年12月26日至2010年12月30日课程设计任务书目录一.课程设计目的: (4)二.课程设计原因 (4)三.课程设计思路以及方案 (4)1.基础思路 (4)2总体功能 (4)四.课程设计中涉及的知识点 (3)附录:源代码 (3)一.课程设计目的:熟练掌握条件语句、循环、数组、函数操作,将本课程所学的知识合理地运用于实践当中。
了解一些书上没有的函数及使用方法。
为以后的用C语言乃至其他设计语言解决实际问题打下了一个良好的基础。
二.课程设计原因对图形图像的操作加以熟悉以掌握和应用三.课程设计思路以及方案1.基础思路以黑色为背景色作为夜空,用两个圆嵌套填充颜色画一个月亮,用数组和for循环按角度画出星星。
在固定的几个点上烟花逐渐循环放大。
2功能描述夜空中悬挂着月亮和零星的几颗星星,烟花逐个绽放而且越变越大。
四.课程设计中涉及的知识点程序用到了for循环语句、数组、setcolor、setfillstyle、floodfill函数、ellipse、circle、line函数、putpixel、delay 以及rand等函数,还有宏定义和函数调用。
动画效果是有for循环实现的大小和色彩不断变化的圆。
附录:源代码#include <stdio.h>#include <conio.h>#include <dos.h>#include <math.h>#include <graphics.h>#include <bios.h>#include <stdlib.h>#define PI 3.14159void moon(){int x=50,y=50,n=30;setcolor(YELLOW);setfillstyle(1,YELLOW);ellipse(x,y,0,360,n,n);Fllodfill(x,y,YELLOW);circle(x,y,n);circle(x+n/2,y,n);}void star(int x, int y){int i,a;int n=5;int x1[5],y1[5],x2[5],y2[5];setcolor(YELLOW);for (i=0;i<5;i++){x1[i]=x+n*cos(i*72*PI/180);y1[i]=y+n*sin(i*72*PI/180);x2[i]=x+n/2*cos(i*72*PI/180+PI/5);y2[i]=y+n/2*sin(i*72*PI/180+PI/5);}for(i=0;i<5;i++){a=i+1;if(a>4) a=0;line(x1[i],y1[i],x2[i],y2[i]);line(x2[i],y2[i],x1[a],y1[a]);}}void drawstar(){int a[]={70,250,190,400,150}; int b[]={43,27,38,79,90},i;setfillstyle(1,14);for(i=0;i<5;i++){star(a[i],b[i]);floodfill(a[i],b[i],YELLOW);}}void starflower(){int i=0,j,n=60,n1=2;int x=200,y=200,size=100; int cover=0;int delay1=5000;int wid,hei;int px,py;int color=9;while(!kbhit()){if(i<size){for(j=0;j<n;j++){px=x+i*cos(j*360/n*PI/180); py=y+i*sin(j*360/n*PI/180); putpixel(px,py,rand()%16);putpixel(px-1,py,color); putpixel(px,py+1,color); putpixel(px+1,py-1,YELLOW); putpixel(px,py-1,YELLOW); putpixel(px+1,py,RED); putpixel(px+1,py+1,RED);}}if(i>size && cover<size){setcolor(BLACK);circle(x,y,cover++);delay1=1000;}if(cover==size){i=0;x=50+rand()%550;y=rand()%400;cover=0;color=rand()%16;size=50+rand()%250;delay1=10000;clearviewport();drawstar();moon();}i+=n1;delay(delay1);}}main(){int i,j,k;int gdriver = DETECT, gmode;registerbgidriver(EGAVGA_driver);initgraph(&gdriver,&gmode,"");drawstar();moon();starflower();Closegraph();}参考文献:[1] 王娣安剑孙秀梅《C语言程序开发范例宝典(1CD)》出版社:人民邮电出版社ISBN:978-7-115-21818-6 出版时间:2010-01-01[2] 王敬华, 林萍,陈静. C语言程序设计教程[M]. 北京: 清华大学出版社, 2005.10:141~167[3] 谭浩强. C程序设计语言[M],. 北京: 机械工业出版社, 2003.4:205-256[4]李邦几胡金桂王敬华 . 最新C语言实用教程[M]. 北京: 化学工业出版社, 1996.3:35~43 66~97 132~148[5] 李军民. 新编C语言程序设计教程(第二版)[M]. 西安: 西安电子科技大学出版社, 2005.08:68~93 148~171指导教师评语。
课程设计报告课程名称《C语言程序设计》课题名称班级成绩管理系统专业信息管理与信息系统班级信管1401学号201403110118姓名杨宁馨指导教师曾赛峰、赵锦元、李峰2015年7 月2 日湖南工程学院课程设计任务书课程名称《C语言程序设》课题班级成绩管理系统专业班级信管1401学生姓名杨宁馨学号201403110118指导老师曾赛峰、赵锦元、李峰审批任务书下达日期2015 年6月9 日任务完成日期2015 年7 月2日设计课题一:班级成绩管理系统一、问题描述:对一个有N个学生的班级,每个学生有M门课程。
该系统实现对班级成绩的录入、显示、修改、排序、保存等操作的管理。
二、功能要求:1、本系统采用一个结构体数组,每个数据的结构应当包括:学号、姓名、M门课程名称。
2、本系统显示这样的菜单:请选择系统功能项:a、成绩录入b、成绩显示c、成绩保存d、成绩排序e、成绩修改(要求先输入密码)f、成绩统计(1)显示每门课程成绩最高的学生的基本信息(2)显示每门课程的平均成绩(3)显示超过某门课程平均成绩的学生人数g、退出系统3、执行一个具体的功能之后,程序将重新显示菜单。
4、将学生成绩保存到文件中。
三、算法提示:1、数据结构:结构体类型数组。
2、数据库结构:下表构成该系统的基本数据库。
四、测试数据:学生人数N=10课程门数M=4课程名:数学、语文、英语、政治五、其它对该系统有兴趣的同学可以在实现上述基本功能后,完善系统的其它功能。
课程设计报告规范一、需求分析1、程序的功能。
2、输入输出的要求。
二、概要设计1、程序由哪些模块组成以及一个模块之间的层次结构、模块的调用关系;每个模块的功能。
2、课题的总体数据结构和数据库结构;即要存储什么数据,这些数据是什么样的结构,它们之间有什么关系等。
三、详细设计1、采用C语言定义相关的数据类型。
2、写出各模块的类C码算法。
3、画出函数的调用关系图。
四、程序测试及运行效果1、测试数据:准备典型的测试数据和测试方案2、程序运行的效果截图及说明五、小结1、程序调试中遇到的问题以及解决问题的方法。
目录C语言课程设计成绩评定表 ............ 错误!未定义书签。
C语言课程设计任务书 (1)程序基本框架结构图 (2)程序设计说明书 (3)源代码清单 (4)课程设计总结 (10)C语言课程设计C语言课程设计任务书一、设计目的通过本次课程设计使学生进一步加深对C语言课程内容的理解,初步掌握一般应用程序的开发方法和步骤,进一步了解与掌握C语言的编程方法和技巧,提高学生用C语言解决实际问题的能力。
二、设计要求1、认真查阅参考书、资料2、遵守课程设计时间安排3、按时上机,认真调试程序4、认真完成课程设计报告三、课设报告装订内容及顺序1、课程设计封皮2、目录3、课程设计成绩评定表4、课程设计任务书5、程序基本框架图6、程序设计说明书7、源代码清单8、课设总结与心得四、设计题目图书管理系统五、时间安排(一周:从 6 月 20 日到 6 月 24 日)1、查阅资料及程序设计(1天)2、程序编制及调试(3天)3、成绩评定(0.5天)3、打印报告(0.5天)六、参考文献1、《C语言程序设计》李淑华/李贞编大连理工大学出版社2、《C语言程序设计》孙连科/姚大鹏编辽海出版社3、《C++时尚编程百例》网冠科技编.机械工业出版社4、《TURBO C 实用大全》徐金梧等编. 机械工业出版社程序基本框架结构图程序设计说明书我们第二小组的课题是图书管理系统,这个系统是我们小组每个人的不懈努力和不断坚持的成果,最后将每个人的结果汇总,经过不断的调试,不断的修改,才成为现在的这个程序。
我们的程序分为4个部分:增加图书、删除图书、修改图书资料以及查询图书资料,我负责的部分是修改图书资料,我的设计思想是:在输入各个书本的信息之后,可以查询出来,并且用某种函数修改已经输入的内容,于是我用了2个指针函数,分别指向“book.txt”和“book1.txt”,之后定义函数,使用户输入书名后,用一个“for”循环语句进行筛选和对比,直到程序筛选到与用户输入的书名一样的书,停止循环,并将此书的所有信息显示,之后,我用了一个“switch”语句,选择用户所需要的修改项,并显示“修改序号”“修改书名”“修改作者”,选择序号为1-3,(如果不是1-3,则显示出错)之后进入修改的界面,根据修改内容,定义到原数据中,并修改原数据,最后,修改结束后,返回主界面。
一、课程设计的目的C语言程序设计课程设计是计算机科学与技术(信息安全、电子商务)专业一门重要的专业技术基础课程,也是一门核心课程。
本课程设计的目的是为了配合C语言程序设计课程的开设,使学生能够较熟练地掌握C语言的基本内容及程序设计的基本方法与编程技巧,并能够培养学生应用计算机解决和处理实际问题的思维方法与基本能力,为进一步学习和应用计算机的专业知识打下基础。
二、课程设计的基本要求设计中要求学生能够综合运用所学知识,上机解决一些与实际应用结合紧密的、规模较大的问题。
通过分析、设计、编码、调试等各环节的训练,使学生了解C语言的基本概念、语法、语义和数据类型的使用特点;掌握最基本算法的设计与实现方法;掌握用C语言开发应用程序的一般步骤和方法及编程技巧;掌握调试程序的基本方法及上机操作方法;能够利用所学的基本知识和技能,独立完成一个综合应用程序的开发,提高学生分析问题和解决问题的能力。
除此以外,还应达到以下几点要求:1、充分认识课程设计的重要性,认真做好设计前的各项准备工作。
2、既要虚心接受老师的指导,又要充分发挥主观能动性。
结合课题,独立思考,努力钻研,勤于实践,勇于创新。
3、独立按时完成规定的工作任务,不弄虚作假,不抄袭他人内容。
4、严格遵守学校的学习和劳动纪律、规章制度,按时出勤。
5、在设计过程中,要严格要求自己,树立严肃、严密、严谨的科学态度,必须按时、按质、按量完成课程设计。
6、小组成员之间,分工明确,但要保持联系畅通,密切合作,培养良好的互相帮助和团队协作精神。
学生可自定1个题目,但所选题目要有一定难度,要符合1周的工作量要求(200行以上代码)。
同一班级同一题目最多不超过三人。
如有雷同都不及格三、课程设计的主要内容1.学生成绩管理系统(1)设计要求:按照软件开发的一般步骤进行设计:首先进行需求分析,然后进行系统设计和编码调试、综合测试。
在系统设计和编码实施阶段的主要工作有:①系统结构的总体设计决定系统的总体结构,包括整个系统分哪些部分,各部分之间有什么联系以及已确定的需求对这些组成部分如何分配等方面。
信息科学与工程学院 综合设计报告书
课程名称: C语言课程设计 ___________ 班 级: ________________________ 学 号: _______________________ 姓 名: _________________________ 指导教师: ____________________ (一) ................................................... 需求分析 2-3 1.设计题目; 2.用户操作流程; 3.数据处理流程; (二)概要设计 .................... 4-5 1.系统总体设计框架; 2.系统功能模块图; (三)详细设计 .................... 5-11 1.主要功能模块的算法设计思路; 2.工作流程图; (四)主要源程序代码 ................. 12-21 1.完整源程序清单及关键注释; (五)调试分析过程描述 ................ 21-24 1. 测试数据、测试输出结果; 2. 对程序调试过程中存在问题的思考; (六)课程设计小结 .................. 24-25 1. 包括课程设计过程中的学习体会与收获; 2. 对 C 语言和本课程设计的认识以及自己的建议等内容。一、 需求分析 1、 设计题目:
编程实现以下功能: (1) 分别输入一元多项式pn (x)和Q n (x) 从键盘输入一元多项式中各项的系数和指数,并用单链表 加以表示。 (2) 分别对一元多项式pn (x)和Q n (x进行升幕排序。 ( 3) 将一元多项式中各子项按照指数从小到大的顺序排序。 (4) 分别输出一元多项式pn (x)和 Q n (x) (5) 将用单链表表示的一元多项式输出,即打印多项式的系数 和指数。 (6) 任意输入一个实数x0,分别求出一元多项式pn (xO)和Q n (x0)的值。
(7) 已知有两个一元多项式分别为 Pn (x)和Qn (x),求出两个多 项式的和 (8) R n (x)和差T n (x),分别用单链表表示 R n (x)和T n (x),并 将二者输出, ( R n (x)=P n (x)+Q n (x,) T n (x)=P n (x)-Q n (x)
2、 用户操作流程 : ( 1 ) 进入欢迎及界面。 (2) 根据提示选择需要的功能。 (3) 根据提示输入数据 . (4) 选择函数输出运行结果。 (5) 退出本系统。
3、 数据处理流程 (1) 输入数据,通过链表存储P(x)和Q(x)的指数和系数。 (2) 通过冒泡排序法对P(x和 Q(x)进行升幕排序。 (3) 输入xO,通过指针将其带入P(x和 Q(x)的表达式求出具体 的数值。 ( 4) 通过链表对两个多项式求和求差。 (5) 通过链表输出运行结果。
概要设计 1、 系统总体设计框架: 2、 系统功能模块
(1) 功能选择函数:通过输入对应功能的数字,进行多项
式的运算。该函数在主函数中调用。
2) 输入数据函数:通过建立单链表,输入两个多项式的 各
功能选择函数 输入数据函数 主程序
升幕函数
赋值函数 求差求和函数 输出结果函数 项指数和系数。 3) 升幂函数: 通过冒泡排序法对两个多项式进行升幂排 序。 4) 求和求差函数:定义空链用来存储结果,将两个多项 式相加减。 5) 输出函数:输出上一步的运行结果。
三、 详细设计 一元多项式的表示在计算机内可以用链表来表
示, 为了节省存储 空间,只存储多项式中系数非零的项。 链表中的每一个结点存放多项 式的一个系数非零项,它包含三个域,分别存放该项的系数、指数以 及指向下一个多项式项结点的指针。 创建一元多项式链表, 对一元多 项式的运算中会出现的各种可能情况进行分析, 实现一元多项式的相 加、相减操作。 多项式相加的运算规则是: 两个多项式中所有指数相同的项的对 应系数相加,若和部位零,则构成“和多项式”中的一项;所有指数 不相同的的项均 “复抄”到“和多项式” 中。以单链表作为存储结构, 并且“和多项式”中的节点无需另外生成,则可看做是将多项式 Q 加到多项式 P 中,由此得到下列运算规则: 若p->expvq->exp则结点p所指的结点应是“和多项式”中的一 项,令指针 p 后移
若p->expvq->exp,贝卩结点q所指的结点应是“和多项式”中的 一项,将结点 q 插入在结点 p 之前,且令指针 q 在原来的链表上后移。 若p->exp=q->exp则将两个结点的系数相加,当和不为零是修 改结点 p 的系数,释放 q 结点;若和为零,贝“和多项式”中无 o 此项,从 P 中 p 结点,同时释放 p 和 q 结点。 多项式相减运算规贝同加法。 设计思路: 实现的方法是先定义多项式结点的结构, 该多项式每个结点由三 个元素:输入的系数、输入的指数、以及指向下一个结点的指针构成。 该链表采用链式存储结构。 然后通过多次的输入, 依次得到两个一元 多项式的各个项的系数与指数。 该输入以零结尾。 然后通过对结点的 判断是否为零后,进行运算或者终止的操作。再初始化一个链表 LC, 将LC的各项系数和指数的指针指向 LA+LB所得的结果的值,完成了 最后的输出。 ( 1)定义结构体 struct 结构体为表示一个对象的不同属性提供了连贯一致的方法, 结构 体类型的说明从关键词 struct 开始,成员可以由各种数据类型混合构 成,成员甚至还可以是数组或者其他类型的结构,但是,结构体中不 能包含自身定义类型的成员。使用 typedef 和 struct 定义的新类型名 称,其用途与内建类型的名称相同,可以用来:声明和初始化结构体 变量;创建并根据自己的意愿初始化结构数组; (2) 单链表的建立 单链表有两个域, data 域和 next 域,一个是存放数据,一个是存放 指针而且指向它的后继。并且还有个 head,称表结点,它一般不存 放数据,只是做个特殊标记。表的结束是 NULL,也就是最后的那个 链域 next 为空单链表的插入运算有两种,一种是头插法,另一种是 尾插法,这里运用的是尾插法 (3) 一元多项式的建立 输入多项式采用插头的方式, 输入多项式中一个项的系数和指数, 就 产生一个新的节点,建立起它的右指针,并用头节点指向它;为了判 断一个多项式是否结束,定义一个结束标志,并输入非 0 时就继续, 当输入 0 时,就结束一个多项式的输入 (4) 显示一元多项式 如果系数是大于0的话就输出+系数x指数形式;如果系数小于0的 话输出系数x指数形式;如果指数为0的话,直接输出系数;如果系 数是的话就直接输出+x;如果系数是-1的话直接输出-x输出多项式 (5)一元多项式的加法计算 它从两个多项式的头部开始, 两个多项式的某一项都不为空时, 如果 数相等的话,系数就应该相加;相加的和不为 0的话, 用头插法建立 一个新的节点。p的指数小于q的指数的话,就应该复制q节点到多 项式中。p的指数大于q的指数的话,就应该复制p节点到多形式中。 当第二个多项式为空时, 第一个多项式不为空时, 将第一个多项式用 心节点产生。当第一个多项式为空,第二个多项式不为空时,将第二 个多项式用新节点产生 (6) 一元多项式的减法计算 它从两个多项式的头部开始, 两个多项式的某一项都不为空时, 如果 数相等的话,系数就应该相减;相加的和不为 0 的话, 用头插法建立 一个新的节点。 p 的指数小于 q 的指数的话,就应该复制 q 节点到多 项式中。p的指数大于q的指数的话,就应该复制p节点到多形式中。 并且建立的节点的系数为原来的相反数; 当第二个多项式为空时, 第 一个多项式不为空时, 将第一个多项式用心节点产生。 当第一个多项 式为空,第二个多项式不为空时,将第二个多项式用新节点产生,并 且建立的节点系数为原来的相反数。 数学模型: 在数学上,一个一元多项式Pn(x)可按升幕写成:
Pn(X)二po + piX+^X2* +pnX^
它由 n+1 个系数唯一确定,因此,在计算机中它可用一个线性表 P 来表示: P= ( po ,Pl,P2, ,pn )
每一项的指数i隐含在其系数Pi的序号里,每一项的值顺序为各个多 项式的系数值。 加法模型: 假设Qm(X)是一元m次多项式,同样可用线性表 Q来表示: Q=(qo,qi,q2, qm) 不失一般性,设mvn,则两个多项式相加的结果Rn(x)=P(x)+Q(x也可用 线性表R来表示,为了更具一般性,设n>m,相加的结果也可以用单链 表来表示,规则是相同指数的项的系数相加,所以 P(x)+Q(x)二
(Po+qo,pi+qi ............ pm+qm , pm+1 ........... pn), 例如: P(x)=2)4+5x2+3x+1,Q(x)=3:2+1 相加后 R(x)= 2X+8x2+3x+2,用一维向量 表表示分别为(1, 3, 5, 0, 2)+( 1, 0,3,) =(2,3,8,0, 2),写成数学 形式即为2x4+8x2+3x+2,结论正确。减法模型同加法模型。
具体函数模块的流程图: 功能选择模块: 输入数据函数: