c语言课程设计设计报告

时间:2019-05-12 20:32:20下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《c语言课程设计设计报告》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《c语言课程设计设计报告》。

第一篇:c语言课程设计设计报告

c语言课程设计设计报告

C语言是一门通用计算机编程语言,应用广泛。下面是小编为大家整理的关于c语言课程设计的设计报告,欢迎大家的阅读。

高等职业教育的目标及侧重点不同于普通高等教育,其培养的学生在毕业后应能直接上岗,具有熟练的实践操作技能。教育部《关于以就业为导向深化高等职业教育改革的若干意见》中指出,高职教育应“坚持培养面向生产、建设、管理、服务第一线需要的‘下得去、留得住、用得上’,实践能力强、具有良好职业道德的高技能人才”。

因此,加强实践性课程教学,对保证人才培养质量显得尤为重要。我院为贯彻《关于全面提高高等职业教育教学质量的若干意见》精神,针对区域经济发展的要求,灵活调整和设置专业课程,以就业为导向,加快专业课程对应的课程设计改革。目前,我院按照由浅入深、不断深化的教学规律,构建了实践教学三层次四环节的实践课程体系。实践教学三层次包括基本技能、专业拓展、综合创新,四环节包括实验、实习实训、设计和课外实践。“C语言课程设计”是我院信息类专业的必修专业基础课程设计,在“C语言程序设计”课程教学结束后的下一学期进行,历时2周,40学时。课程开设的目的在于培养学生分析问题和解决问题的能力,为学生提供一个动手、动脑、独立实践的机会。

21项目教学法“项目教学法”是基于建构主义教学理论的一种教和学的模式。著名的瑞士心理学家皮亚杰认为,知识不是通过教师传授得到的,而是学生在一定的情境下,借助他人的帮助,利用必要的学习资料,通过意义建构的方式而获得的。美国项目管理专家约翰·宾认为:“项目是要在一定时间里,在预算规定范围内需达到预定质量水平的一项一次性任务。”

“项目教学法”是通过实施一个完整的项目而进行的教学活动,旨在把学生融入有意义的任务完成的过程中,让学生积极地学习,自主地进行知识的建构,在课堂教学中把理论与实践教学有机地结合起来,充分发掘学生的创造潜能,提高学生解决实际问题的综合能力。因此,在教学活动中,教师将需要解决的问题或需要完成的任务以项目的形式交给学生,在教师的指导下,以小组工作方式,由学生自己按照实际工作的完整程序,共同制定计划,共同或分工完成整个项目。

在项目教学中,学习过程成为一个人人参与的创造实践活动,注重的不是最终的结果,而是完成项目的过程。在高等职业技术教育中,项目是指以生产或制作一样具体的、具有实际应用价值的产品的工作任务。在技术领域,很多小产品或一些复杂产品的模型都可以作为项目,如:在信息类专业,可以开展微机组装、网站建设、信息管理系统开发、局域网构建、单片机制作、多媒体课件制作等项目;在电子类专业,可以开展报警器、LED、门铃、家电组装等项目;在商业、财会和服务行业,所有具有整体特性并有可见成果的工作也都可以作为项目,如商品展示、产品广告设计、营销策划等。

22项目教学法的基本特征项目教学法与传统的教学法相比,有很大的区别,主要表现在改变了传统的3个中心:以教师为中心转变为以学生为中心;以课本为中心转变为以“项目”为中心;以课堂为中心转变为以实际经验为中心。项目教学法具有以下特点:

实践性。项目“源”于企业,项目的主题与真实世界密切联系,由浅入深,选择的项目具有典型性、实用性。

自主性。提供学生根据自己的兴趣选择内容和展示形式的决策机会,让学生能够自主地进行学习,从而有效地促进学生创造能力的发展。

发展性。长期项目与阶段项目相结合,构成了实现教学目标的认知过程。

评价特殊性。项目型教学的评价注重学生在项目活动中能力发展的过程,测评内容包括学生参与活动各环节的表现及作业质量,避免了传统的一张试卷定成绩的弊端。测评可以采用自评、小组评、教师综合评等方法。教师只有明确并抓住项目化教学特点,才能更好地完成教学目标。

31教学内容为了更好地开展课程设计教学,经过多次实践和摸索,总结出学生在具体实施项目中一般存在2个方面的知识不足:

第一,在教学内容上,由于前导课程在教学上受学时影响,很多教师对指针、结构体、共用体和文件基本操作的知识介绍不甚完善、系统,更难谈上辅以实例加以消化。对此,针对学生在这些知识点上的掌握程度,利用4~6个学时,实施区别式的、辅导性的、实例化教学。

第二,学生对项目管理知识知之甚少,针对此情况,采用2个阶段实施有别于常规教学的补课行动。第1阶段为项目准备阶段,利用2~4个学时,安排曾经做过项目且做得比较好的学生,现身介绍项目的准备工作、项目实施过程要完成的工作、项目验收及作业提交的工作等。在学生介绍中,教师穿插讲解,辅以点评。第2阶段为项目实施阶段,教师应针对学生发生的问题,及时给予指导,直到学生弄懂为止。

32教学要求切实保证教学质量和教学效果,本着“学以致用”的原则,要求学生做到以下3点:第一要做到“学有三备”,即:在项目实施前做好知识储备,在项目实施中做好安全防备,项目结束时做好被评准备。第二要写好“三书一报告”。“三书”即每个项目组要做需求规格说明书、概要设计说明书、详细设计说明书,“一报告”即人人都要做课程设计报告。第三要做“四自”参与者。“一自”即自律,要求学生自觉履行学生守则和项目实施有关规则,不迟到、不早退、不缺席,实施点名制度,若无特殊原因,有5次旷课者自愿以重修论处;“二自”即自尊,要求学生尊重知识、尊重学习规律、尊重项目组成员、尊重教师、尊重自己;“三自”即自信,要求学生相信自己能够按时、按量、按质完成工作内容,遇到困难时,沉着、冷静,理性地寻找问题解决的办法;“四自”即自强,要求学生不满足自己已有的成绩和以往与课题项目组共同取得的成绩,用创新和超越的思想,做出比以前哪怕是前进一小步的事情。同时也要求教师做好相应的工作,如做好项目整体规划、精心准备、努力激发学生参与行为、为人师表、表扬为主、批评为辅、多分析、精点评等。

33项目实施进程项目教学法是一种生动、灵活、多样化的教学方法。在项目实施过程中,既不能生搬硬套地利用一个时间标准,又不能影响项目实施的整体进程,因此对时间的灵活处理是非常关键的,也是值得商榷的。

34明确项目内容,帮助学生立项立项首先要审题。当学生拿到项目列表时,最不能忽略的问题,就是提醒学生审题。审题恰当对学生以后开展各项工作是关键。审题时,学生首先要考虑自己的长、缺处,做到扬长避短,也就是说审题就是学生自己审自己完成该项目有多大的能力,有没有信心。只有学生明白自己,才可以避免以后实施项目过程中走弯路。同时既要建议学生在组建项目组时,考虑所在组的其他学生的长处和短处,又要尽量避免使被学生认定的差等学生没人愿意与其组合,而成绩好的学生又抱团的现象发生。

根据近几年带课程设计的经验,关于如何合理选择项目,建议教师应从学生的角度考虑以下4个因素,协助学生做好选题:

规模。项目规模太大会影响项目的完整性,项目规模太小难以体现课程的实践性。

难度。项目难度一定要适中,既要激发学生学习的兴趣又不能影响学生的自信心。

实用性。项目的选择应该是现实世界真实的工作任务,具有一定的现实和实用性。

趣味性。兴趣是最好的老师,所以在选择项目时应考虑其趣味性,让学生有更大热情投入项目。

第二篇:《JAVA语言》课程设计设计

《面向对象程序设计JAVA》课程设计大纲

课程名称:面向对象程序设计JAVA 适用专业:计算机及计算机相关专业

学时数:20(上机实验)学 分: 1 配套教材:《JAVA语言与面向对象程序设计》印旻 编著 清华大学出版社 大纲编写者:周斌 编写日期:2008.2

一、课程设计目的

1、课程设计的教学任务是让学生通过动手动脑解决实际问题,是学生学完课程后进行 的一次全面的综合训练,是一个非常重要的教学环节,通过课程设计,使学生经受一次综合动用所学知识,解决实际问题的方法。

2、使学生掌握使用各种计算机资料和有关参考资料,提高学生的基本设计能力。

3、培养学生理论联系实际和独立思考的能力,并激发学生的实际开发创造的意识和能力。

二、课程设计要求

1、利用JAVA进行应用程序的设计。

2、必须熟悉课程设计的各项内容和要求,明确课程设计的目的、方法和步骤;

3、设计中必须独立地地完成每一阶段的设计任务,禁止抄袭他人的设计成果;

4、所设计的程序必须满足实际使用要求,编译出可执行的程序。

5、要求程序结构简单,功能齐全,使用方便。

三、课程设计内容

课程设计题目:

1、已知银行整存整取存款不同期限的年息利率分别为: 0.63% 期限一年

0.66% 期限二年

年息利率= 0.69% 期限三年 0.75% 期限五年

0.84% 期限八年

要求输入存钱的本金和期限,求到期时能从银行的到的利息与本金的合计。

程序如下:

import java.io.*;public class myWork1 { public static void main(String args[]){ try { int m,n;BufferedReader br=new BufferedReader(new InputStreamReader(System.in));System.out.print(“请输入金额: ”);m=Integer.parseInt(br.readLine());System.out.print(“请输入年限: ”);n=Integer.parseInt(br.readLine());System.out.println();switch(n){ case 1: System.out.println(“得到的总额为 ”+m*(1+n*0.0063));break;case 2: System.out.println(“得到的总额为 ”+m*(1+0.0066*n));break;case 3: System.out.println(“得到的总额为 ”+m*(1+0.0069*n));break;case 5: System.out.println(“得到的总额为 ”+m*(1+0.0075*n));break;case 8: System.out.println(“得到的总额为 ”+m*(1+0.0084*n));break;} } catch(IOException e){ System.out.println(e);} } } 截图如下:

2、输入n值,打印边长为n的空心正六边形,其边由“*”组成。

3、编写一个类,这个类同时求出n个学生成绩的最高分、最低分、平均分以及超过平均分的人数,并编写主类完成:(1)输入n个学生的成绩;(2)调用此类进行统计;(3)输出统计结果。

4、编程实现实时动态运行的模拟时钟。以下题目选做:

5、编程实现约瑟夫问题。8个人站成一圈,从第1个人开始报数,报到5的人出圈,第6个人再从1开始报。依次类推,求出圈的序列。

6、编程实现俄罗斯方块游戏。

说明:可以自行选择其他设计题目

四、编写课程设计报告书

课程设计报告书要求:

1、文字叙述清楚,结构结构简洁明了,理论正确,程序功能完备。

2、设计说明书要求文字工整,书写整齐。

3、附参考资料名称说明。

4、课程设计报告主要内容: 1)题目 2)问题需求分析 3)总体设计 4)详细设计

5)测试数据和调试报告 6)小结

五、成绩评定方式

根据平时设计完成质量和课程设计报告确定成绩。分优秀、良好、中等、及格、不及格五档。

第三篇:C语言课程设计报告

C语言课程设计报告

级:

10电子本1

号:

10303033122

名:

指导老师:

方文森

完成日期:

温州大学城市学院课程设计

目 录

1、课程设计目的和要求.....................................................................................................2

2、课程设计任务内容.........................................................................................................2

3、详细设计说明.................................................................................................................3

3.1分析.........................................................................................................................3 3.2软件设计.................................................................................................................3 3.3软件调试(对编程中的错误进行记录,并给出你的解决办法).....................3

4、软件使用说明.................................................................................................................4

5、课程设计心得与体会.....................................................................................................4 附录1:参考文献................................................................................................................5 附录2:部分程序清单(带有较详细的注释)................................................................5

温州大学城市学院课程设计

C语言课程设计报告

1、课程设计目的和要求

目的:(1)巩固和加深学生对C语言课程的基本知识的理解和掌握(2)掌握C语言编程和程序调试的基本技能(3)利用C语言进行基本的软件设计(4)掌握书写程序设计说明文档的能力(5)提高运用C语言解决实际问题的能力 要求:(1)分析课程设计题目的要求(2)写出详细设计说明

(3)编写程序代码,调试程序使其能正确运行(4)设计完成的软件要便于操作和使用(5)设计完成后提交课程设计报告

2、课程设计任务内容

1)一个班级有4个学生,共学习5门课程(大学英语、高等数学、C语言程序设计、VB程序设计、大学语文)。要求编写程序完成相应功能。2)

输入并保存]5门课程名称;

3)

输入并保存]4个学生的学号及其[个人相关信息]; 4)

输入并保存]每个学生对应的每门课程成绩; 5)求出每门功课的平均分;

6)找出有两门以上功课不及格的学生,输出他们的学号和全部课程成绩及该学生5门课程的平均成绩;

7)找出平均成绩在90分以上或者全部课程成绩在85分以上的学生,输出他们的学号和全部课程成绩及该学生5门课程的平均成绩;

8)计算每位学生的总分,并按总分进行排名,按由高到低输出他们的学号及总成绩; 9)对前面问题进行优化,即在一维数驵的基础上,考虑采用二维数组、函数及其参数传递的方式来解决相关问题;

10)对前面问题进行优化,在学号的基础上,增加学生的其它个人信息,包括:学号、姓名、年龄、性别,并采用结构体形式加以表示; 11)利用文件实现对输入及分析输出数据的存取操作。

12)参照教材P27页,3-11题引入选择功能,输入功能编号可以实现以上功能(考虑清屏函数,自查)。

温州大学城市学院课程设计

3、详细设计说明

3.1分析

3.2软件设计

开始菜单(功能选择)Key=?Key=1Key=2Key=3Key=4Key=5Key=0Key=99Key=6Key=7Key=8Key=9Key=10写入课程名读取课程名输入学生信息读取学生信息建立了学生信息及课程名称?退出程序读取课程、学生、成绩读取课程成绩输出功课的平均分两门以上功课不及格的学生输出高分的学生总分由高到低排序No保存保存Yes输入课程成绩(提示)必须输入课程名称、学生信息才能建立成绩保存清屏

3.3软件调试(对编程中的错误进行记录,并给出你的解决办法)

取地址。

温州大学城市学院课程设计

4、软件使用说明

1.2.3.4.5.6.7.8.9.10.11.12.[99]读取课程、学生、成绩 [1]输入课程名称.[2]读取课程名称.[3]输入学生信息.[4]读取学生信息.[5]输入课程成绩.[6]读取课程成绩.[7]功课的平均分.[8]两门以上功课不及格的学生 [9]-高分的学生-.[10]学生总分排序.[0]退出应用程序.5、课程设计心得与体会

在大家的共同努力下,忙碌了两个星期,我们顺利完成了对此程序的编译及试运行。在设计程序的过程中,我们了解到要设计一个完整的程序,其中最难的可能就属设计整个程序的框架,其中可能会需要经过很多次的修改与调试,所以必须要有耐心,直至最后设计出自己想要的程序。

另外平时学习c语言的基础也很关键,因为如果平时学得就不怎么样,那么你面对这么一个比较有难度的程序,可能会望而却步,看懂他人的程序都是个难点,更别说让自己去设计。为了解决此类问题,最好就是多向同学,老师请教,查找资料。

设计一个程序的过程就是解决一个实际问题的过程,从解决实际问题的角度,我们可以这样来看:首先要了解这个问题的基本要求,即输入、输出、完成从输入到输出的要求是什么;在次我们必须捋清思路,逐一的解决问题的各个方面,即从输入开始入手,着重考虑如何从输入导出输出,在这个过程中,可确定所需的变量、数组、函数,然后确定处理过程--算法。

感谢这次的课程设计,它使我更加深刻地体会到c语言程序编写过程的严谨与细致,还有就是无论做任何事都要有耐心。当然团队合作也是非常重要的一个环节,这会使你在学习过程中倍感轻松

总的来说,这次程序设计让我获益匪浅,对C语言也有了进一步的认识:C语言功能高、表达能力强、使用灵活方便、目标程序效率高等等。C语言是在国内外广泛使用的一种计算机语言,相信除了以上优点,还有许多我们还未发现,希望能在以后的学习中有更深入的认

温州大学城市学院课程设计

识。

附录1:参考文献

《C语言程序设计与实践教程》

附录2:部分程序清单(带有较详细的注释)

#include #include

#define N 4 #define M 5 #define Debug 1

typedef struct { char SNo[5];char SName[10];}Student;

void ScoreRead(float Score[][M],char FileName[],char FileType[]){ int i,j;FILE *fp;fp=fopen(FileName,FileType);if(fp==NULL){ printf(“Errorn”);exit(0);} else { for(i=0;i

温州大学城市学院课程设计

void ScoreWrite(float Score[][M],char FileName[],char FileType[]){ int i,j;FILE *fp;fp=fopen(FileName,FileType);if(fp==NULL){ printf(“Errorn”);exit(0);} else { for(i=0;i

void CoureseRead(char Cname[][20],char FileName[],char FileType[]){ FILE *fp;int i,j;char ch;fp=fopen(FileName,FileType);if(fp==NULL){ printf(“Errorn”);exit(0);} i=0;j=0;while(1){ ch = fgetc(fp);if(ch==EOF)break;if(ch=='n'){ Cname[i][j]='';i++;j=0;6

温州大学城市学院课程设计

} else { Cname[i][j]=ch;j++;} } #if(Debug==1)for(i=0;i

void CoureseWrite(char Cname[][20],char FileName[],char FileType[]){ FILE *fp;int i,j;fp=fopen(FileName,FileType);if(fp==NULL){ printf(“Errorn”);exit(0);} for(i=0;i

void StuInfoWrite(Student S[],char FileName[],char FileType[]){ int i,j;FILE *fp;fp=fopen(FileName,FileType);if(fp==NULL)7

温州大学城市学院课程设计

{ printf(“Errorn”);exit(0);} else { for(i=0;i

void StuInfoRead(Student S[],char FileName[],char FileType[]){ int i,j;FILE *fp;fp=fopen(FileName,FileType);if(fp==NULL){ printf(“Errorn”);exit(0);} else { for(i=0;i

温州大学城市学院课程设计

Student Stu[N];char Cname[M][20];

while(1){ system(“cls”);printf(“ttt=======学生成绩管理应用程序=======n”);printf(“tttt[99]读取课程、学生、成绩.nn”);printf(“tttt[1]输入课程名称.nn”);printf(“tttt[2]读取课程名称.nn”);printf(“tttt[3]输入学生信息.nn”);printf(“tttt[4]读取学生信息.nn”);printf(“tttt[5]输入课程成绩.nn”);printf(“tttt[6]读取课程成绩.nn”);printf(“tttt[7]功课的平均分.nn”);printf(“tttt[8]两门以上功课不及格的学生.nn”);printf(“tttt[9]-高分的学生-.nn”);printf(“tttt[10]学生总分排序.nn”);printf(“tttt[0]t退出应用程序.nn”);printf(“请选择功能:”);scanf(“%d”,&Key);getchar();printf(“n”);if(Key==99){ CoureseRead(Cname,“D:cname.txt”,“r”);StuInfoRead(Stu,“D:stuinfo.db”,“rb”);ScoreRead(CJ,“d:score.db”,“rb”);} else if(Key==1){ for(i=0;i

//输入学生信息 //读取课程名称

//输入课程名称

温州大学城市学院课程设计

{ scanf(“%stt%s”,Stu[i].SNo,Stu[i].SName);} getchar();StuInfoWrite(Stu,“D:stuinfo.db”,“wb”);} else if(Key==4){ StuInfoRead(Stu,“D:stuinfo.db”,“rb”);} else if(Key==5){

char Qu;scanf(“%c”,&Qu);getchar();if(Qu=='Y' || Qu=='y')printf(“您已经建立了学生信息及课程名称了吗?(Y/N)n”);

//输入课程成绩 //读取学生信息

{ CoureseRead(Cname,“D:cname.txt”,“r”);StuInfoRead(Stu,“D:stuinfo.db”,“rb”);for(i=0;i

else { printf(“请输入Y/N!n”);

//读取课程成绩 } }//else if(Key==5)else if(Key==6){ ScoreRead(CJ,“d:score.db”,“rb”);10

温州大学城市学院课程设计

} else if(Key==7){ ScoreRead(CJ,“d:score.db”,“rb”);CoureseRead(Cname,“D:cname.txt”,“r”);for(j=0;j

for(i=0;i2){ s=s/M;printf(“%st %sn平均成绩:%fn”,Stu[i].SNo,Stu[i].SName,s);for(k=0;k

}

}

} } 11

温州大学城市学院课程设计

} else if(Key==9){ int x,k;float c,s;printf(“平均成绩在90分以上或全部课程成绩在85分以上n”);for(i=0;i=90)){ s=s/M;printf(“%st%st平均成绩:%fn”,Stu[i].SNo,Stu[i].SName,s);for(k=0;k=85){ x++;if(x==M){ s=s/M;printf(“%st%st平均成绩:%fn”,Stu[i].SNo,Stu[i].SName,s);for(k=0;k

}

} } else if(Key==10){ float x[i];12

温州大学城市学院课程设计

char XH[N][3];char temp[3];int num;int imax,k;float t;for(i=0;i=1;i--){ for(k=0;k

else if(Key==0){ break;} getchar();} } 13

第四篇:C语言课程设计报告

C语言课程设计报告

Experiment Designing reporter

课程名称 : C语言课程设计

英文名称 : C Program Experiment Designing

专 业 :

学 号 :

姓 名 :

指导教师 :

日 期: 2011年7月18日 至2011年7月22日

《C语言课程设计》报告

C Program Experiment Designing

课程编号:01200308005

学时: 40学时 适用专业:软件工程专业 授课单位:软件学院

一、C语言课程设计目的及要求

目的:

根据课堂讲授内容,学生做相应的自主练习,消化课堂所讲解的内容;通过调试典型例题或习题积累调试C程序的经验;通过完成辅导教材中的编程题,逐渐培养学生的编程能力、用计算机解决实际问题的能力。

要求:

1. 熟悉Turbo C 的编程环境、主要菜单功能。

2. 通过上机验证运算符、表达式、运算规则、函数使用。3. 熟练使用C语言的典型语句编写简单程序。4. 调试典型例题或习题。5. 提高上机编程能力

二、实验类型

设计类型

三、实验学时

40学时

四、实验设备

微型计算机、WINDOWS98以上版本的操作系统、Turbo C2.0 软件一套

五、C语言课程参考教材:

1.李瑞 C语言程序基础(第二版)清华大学出版社 2.梁旭 C语言课程设计.电子工业出版社

课程设计(报告)任务书

任务及要求:

1.设计(研究)内容和要求

研究内容:C语言课程设计题目相关内容 任务和要求:

(1).学习C语言基础知识,掌握C语言编程和程序调试的基本技能。(2).对指导教师下达的题目进行系统分析。(3).根据分析结果完成系统设计。

(4).编程:在计算机上实现题目的代码实现。(5).完成对该系统的测试和调试。(6).提交课程设计报告。(7).指标: 要求完成课程设计报告3千字以上(约二、三十页).完成若干综合性程序设计题目,每个综合设计题目的语句行数的和在300行语句以上.2.原始依据

了解C语言的基础知识,有一定的语言编程基础,能够熟练运用C语言进行程序设计。通过用C语言完成的题目,提高用C语言解决实际问题的能力。3.参考文献

[1] 黄明等.C语言程序设计辅导教材.大连理工大学出版社,2006 [2] 马靖善等.C语言程序设计.清华大学出版社,2005 [3] 谭浩强.C语言程序设计(第二版).北京:高等教育出版社,2002

目录

C语言课程设计报告................................................................................错误!未定义书签。

1. 输出杨辉三角.............................................................................................................1 1.1 系统分析..............................................................................................................1 1.2 设计说明..............................................................................................................1 1.3 程序运行截图......................................................................................................2 1.4 源程序代码..........................................................................................................2 2 汉诺塔求解方法.............................................................................................................3 2.1 系统分析..............................................................................................................3 2.2 设计说明..............................................................................................................3 2.3 程序运行截图......................................................................................................4 2.4 源程序代码..........................................................................................................4 3 输出200以内的素数.....................................................................................................5 3.1功能说明...............................................................................................................5 3.2 设计说明..............................................................................................................5 3.3 程序运行截图......................................................................................................5 3.4 源程序代码..........................................................................................................6 4 进制转换计算器.............................................................................................................6 4.1功能说明...............................................................................................................6 4.2 设计说明..............................................................................................................6 4.3程序运行截图.......................................................................................................7 4.4 源程序代码..........................................................................................................7 5 一元稀疏多项式.............................................................................................................8 5.1 功能说明..............................................................................................................8 5.2 设计说明..............................................................................................................8 5.3 程序运行截图....................................................................................................10 5.4 源程序代码........................................................................................................11

1. 输出杨辉三角

1.1 系统分析

以等腰直角三角形输出杨辉三角

1.2 设计说明

1、包含头文件

#include

#include

其中,头文件为使用clrscr()。

2、子函数

函数名:int num(i,j)

函数功能:以递归的方式进行计算,用函数代替二维数组

函数参数:int i;int j;

含义:相当于二维数组的a[i][j] 函数流程

Step1:输出最外行,即三角形两直角边的结果都为 1 ;

Step2:讨论其余情况,相当于数组中的

a[i][j] = a[i-1][j-1] + a[i-1][j]。

3、main()函数

1为保证结果完整输出,先进行清屏; ○2输入要打印的行数,由于一行只能显示80个字符,建议不要超过13行; ○3用循环调用函数int num(int i , int j)○

其中循环为三重循环:i 循环控制行打印

j 循环控制列打印

k 循环控制空格打印

每执行一次i 循环输出一个换行符,直角三角形定点放在第36个字符的位置上。

每个数字占6个字符的格。

1.3 程序运行截图

1.4 源程序代码

#include #include

int num(i,j){

int i,j;

if(I == j ||j == 0)return(1);

else return(num(i-1 , j-1)+num(i-1 , j));}

int main(void){

int n,k,i,j;

clrscr();

puts(“input row n:”);

scanf(“%d”,&n);

for(i = 0;i < n;i++)

{

{

for(k = 0;k < 36-3*i;k++)

putchar(' ');

}

{

for(j = 0;j <= i;j++)

printf(“%6d”,num(i , j));

}

puts(“");

}

getch();

return 0; } 汉诺塔求解方法

2.1 系统分析

汉诺塔求解方法

2.2 设计说明

1、包含头文件:

#include #include

其中,#include 为了应用函数toupper

2、子函数

函数名:void move(int n , char a , char b)

函数功能:打印移动的主子编号

函数参数:int n , char a , char b;

含义:n为移动的序数,a为源柱号,b目的柱号 函数流程

Step1:输出盘子移动情况;

Step2:打印换行。

函数名:void hanoi(int n,char a,char b,char c)

函数功能:以游戏规则求解移动盘子的方法

函数参数:int n,char a,char b,char c;

含义:n移动的序数,a为源柱号,b为目的柱号,c为中间柱号

函数流程

Step1:递归调用函数 hanoi(n-1,a,c,b);

Step2:调用函数move(n-1,a,b);

Step3:继续递归调用函数hanoi(n-1,c,b,a);

3、主函数main()1为了使程序可以重复运行,定义了变量ch,当ch == N 时,退出游戏; ○2使用while()循环使游戏重复运行; ○3输入盘子的数目以调整游戏的难度; ○3调用函数hanoi()○

2.3 程序运行截图

2.4 源程序代码

#include ”stdio.h“ #include ”ctype.h“

//应用函数toupper void move(int n,char a,char b)

//n为移动的序数,a为源柱号,b目的柱号*/ {

printf(”Disc%d move from %c to %c;“,(n+1),a,b);

printf(”n“);}

void hanoi(int n,char a,char b,char c){

//n移动的序数,a为源柱号,b为目的柱号,c为中间柱号

if(n>0)

{

hanoi(n-1,a,c,b);

//递归调用

move(n-1,a,b);

hanoi(n-1,c,b,a);

} } main(){

int n;

char ch ='Y';

printf(”Now let us play the game of hanoitowern“);

while(ch == 'Y')

//通用性设计

{

printf(”n Input the number of disc[2-15]:“);

scanf(”%d“,&n);getchar();

printf(”n The orders of moving %d discs from A to B are:n“,n);

hanoi(n,'A','B','C');

//调用函数

printf(”n Continue(Y/N):“);

ch=getchar();

getchar();

ch=toupper(ch);}

return 0;} 3 输出200以内的素数

3.1功能说明

输出200以内的素数

3.2 设计说明

1、宏定义

#define M 200

//范围,表示输出200以内的素数 #define N((M+1)/2)

//奇数的个数

处理流程:

Step1:第一步筛选掉所有的偶数,将剩余的奇数存放在a[N]中; Step2:第二部筛选掉多有可以被整除的数 Step3:将得到的素数10个一行打印。

3.3 程序运行截图

3.4 源程序代码

#include ”stdio.h“ #define M 200

//范围

#define N((M+1)/2)

//奇数的个数 main(){

int i,j,a[N];

a[0]=2;

for(i=1;i

//初始数组实现第一步筛选

a[i]=2*i+1;

for(i=1;i<(N-1);i++)

//第二步筛选

if(a[i]!=0)

for(j=i+1;j

if((a[j]%a[i]==0))

//倍数时置零筛去

a[j]=0;

printf(”n The primer are[2-%d]:n“,M);

for(i=0,j=0;i

//显示得到素数

{

if(a[i]!=0)

{

printf(”%5d“,a[i]);

if((++j)%10==0)

//十个数换行

printf(”n“);

} }

return 0;} 进制转换计算器

4.1功能说明

进行进制转换。

4.2 设计说明

1、处理流程:

Step1:输入原始数值xa,原始权a,已经希望转换的进制b;Step2:逐位取值,将原始数值转换成10进制 Step3:逐位取值,将原始数值转换成b 进制

4.3程序运行截图

4.4 源程序代码

void main()#include ”stdio.h“ main()

{

int a=0,/*原始进制*/ b=8,/*转换进制,默认为八*/

k=1;

/*位权*/

long xa=0,/*原始数值*/

xb=0,/*转换数值*/

x1=0,x2=0;

/*十进制数值*/

printf(”n Input the number and weight a->b:“);

scanf(”%ld%d%d“,&xa,&a,&b);

x1=xa;

while(x1!=0)

/*转换为十进制数*/

{ x2+=(x1%10)*k;

/*逐位取值*/ x1/=10;k*=a;

}

k=1;

x1=x2;

while(x1!=0)

/*转换为b进制数*/

{ xb+=(x1%b)*k;x1/=b;k*=10;

}

printf(”n %ld(%d)=%ld(%d)=%ld(%d)“,xa,a,x2,10,xb,b);

return;} 一元稀疏多项式

5.1 功能说明

求一元稀疏多项式的运算:

1、求两多项式加法;

2、求两多项式减法;

3、求两多项式乘法;

4、求两多项式导数;

5、求两多项式在x=m处的值。

5.2 设计说明

1、链表结点的定义:

typedef struct polyn {

float coef;

//多项式系数

int expn;

//多项式指数

struct polyn * prior,* next;} polyn, *linkpolyn;

2、子函数,多项式的基本运算。函数名:linkpolyn CREATEPOLYN()函数功能:创建多项式链表,在输入的时候进行升序排列 返回值:return head,即建立的多项式头结点 参数:linkpolyn head,含义:链表头结点 处理流程:

Step1:输入第一个结点,且第一个结点自然有序;

Step2:循环输入其余结点,当输入0 0是表示输入结束;

Step3:输入过程中进行升幂排序,用二分法,找到新结点插入点;

Step4:插入新结点;继续循环,直到输入0 0,循环结束,链表建立成功。Step5:返回建立链表头结点,函数结束。

函数名:linkpolyn DERIVATIONPOLYN(linkpolyn L)函数功能:多项式求导

返回值:return(head),即求导多项式的链表头结点

参数:linkpolyn L,含义:把建立好的链表A和B传递给L 处理流程:

Step1:分别用指针指向L的头结点和求导多项式的头结点head;

Step2:用循环逐个对L链表中的结点求导,一次存放在求导多项式中的新结点中; Step3:循环中考虑,当L链表中的结点仅存放一个常数,则跳过该结点,继续遍历下一结点;

Step4:当循环结束,即L中的各项以被求导,返回求导多项式头结点head。

函数名:linkpolyn INITPOLYN()函数功能:链表初始化

返回值:return(head),即求导多项式生成的链表头结点 参数:无参数 处理流程:

Step1:生成一个新的空间作为新结点;

Step2:将新节点的coef域赋0,expn域赋-1,以区分其他节点; Step3:将头结点的前去指针和后即指针置空,并返回头结点。

函数名:void PRINTLIST(linkpolyn head)函数功能:以类数学表达式的形式打印 返回值:无返回值

参数:linkpolyn head,含义:处理过的链表头结点 处理流程:

Step1:讨论是否链表为空,若为空,则输出0;

Step2:若链表不为空,则输出第一个值,第一个值不用输出符号; Step3:用循环依次输出其余各项,附加符号输出;

函数名:linkpolyn ADDPOLYN(linkpolyn A , linkpolyn B)函数功能:加法运算

返回值:return ptr,即和多项式的头结点

参数:linkpolyn A , linkpolyn B,含义:创建的链表A和B 处理流程:

Step1:分别以两个指针pa和pb遍历链表A和B;

Step2:当A和B两链表都为遍历完毕时,进行加法运算,分配新的空间存放和多项式,并用二分法进行升幂排序; Step3:当A遍历完毕而B未遍历完毕,将B其余各项拷贝到

和多项式链表中;

Step4:当B遍历完毕而A未遍历完毕,将A其余各项拷贝到

和多项式链表中;

函数名:linkpolyn SUBTRACTPOLYN(linkpolyn A , linkpolyn B)函数功能:计算A-B的值

返回值:return ptr,即差多项式的头结点

参数:linkpolyn A , linkpolyn B,含义:创建的链表A和B 处理流程:

Step1:分别以两个指针pa和pb遍历链表A和B;

Step2:当A和B两链表都为遍历完毕时,进行减法运算,分配新的空间存放和多项式,并用二分法进行升幂排序;

Step3:当A遍历完毕而B未遍历完毕,将B其余各项拷贝到

和多项式链表中;

Step4:当B遍历完毕而A未遍历完毕,将A其余各项拷贝到

差多项式链表中; Step5:返回多项式头结点

函数名:float WORK(float x,int e)函数功能:求x的幂

返回值:return t,即计算幂结果

参数:float x,int e,含义:x为输入的x的值,e为x的指数 处理流程:

Step1:分别讨论正指数与负指数的的情况; Step2:若e>0,则累乘e次x; Step3:若e<0,则累除e次x;; Step4:将所求结果返回;

3、主函数main()Step1:依次调用函数进行运算操作; Step2:调用函数创建链表; Step3:调用函数进行运算;

5.3 程序运行截图

5.4 源程序代码

#include ”stdio.h“ #include #include ”math.h“ #define FZ 1e-6

typedef struct polyn { float coef;//多项式系数 int expn;//多项式指数 struct polyn * prior,* next;} polyn, *linkpolyn;

void DESTROYPOLYN(linkpolyn head){ //销毁链表 linkpolyn s,p;p=head;

while(p->next!= NULL){ s = p;

p = p->next;

free(s);} } //DESTROYPOLYN

linkpolyn INITPOLYN(){ //链表初始化

struct polyn * head;head=(linkpolyn)malloc(sizeof(polyn));head->coef=0.0;//假设头结点系数为0 head->expn=-1;//假设头结点指数为-1 head->next=NULL;head->prior=NULL;return head;} //INITPOLYN

void INSERTPOLYN(linkpolyn p,linkpolyn s){ //将结点s插入到p之后

if(NULL!= p->next){

s->next = p->next;

s->next->prior = s;} s->prior = p;p->next = s;

} //INSERPOLYN

linkpolyn CREATEPOLYN(){ //创建多项式链表,在输入的时候进行升序排列 linkpolyn head,s,p,m,r;

int num = 1;//计数器

head = INITPOLYN();//初始化链表 head r = head;//设置为指针

s=(linkpolyn)malloc(sizeof(polyn));

/******************************************/ printf(”请输入第%d项系数和指数:“,num);/**输入第一个结点,并且第一个结点自然有序**/ scanf(”%f%d“,&s->coef,&s->expn);/******************************************/ r->next = s;s->prior = r;r = r->next;//r指向尾结点

r->next = NULL;p = r;//p为s的插入点前一个结点

m = r;//m为拍完结点中间的节点,二分法排序

while(++num)//while # 当将 s->coef 与 s->expn 都赋值为0的时候,认为输入结束

{ s =(linkpolyn)malloc(sizeof(polyn));printf(”请输入第%d项系数和指数:“,num);scanf(”%f%d“,&s->coef,&s->expn);

if((fabs(s->coef)<= FZ)&&(s->expn == 0))//if @

{ free(s);

break;

} //else @ else //else @

{ if(s->expn <= p->expn)//if #

{ while(p->prior!= NULL && p->expn > s->expn)

p = p->prior;//p向前遍历链表,找到插入点

if(s->expn == p->expn)

{

p->coef += s->coef;

free(s);

r=r;

}

else

{

INSERTPOLYN(p,s);//在p后面插入结点s

m = m->prior;

p = m;

}

} // if #

else //else #

{

while(p->next!= NULL && p->next->expn < s->expn)

p = p->next;//p向后遍历链表,找到插入点

if(s->expn == p->expn)

{

p->coef += s->coef;

free(s);

}

else

{

INSERTPOLYN(p,s);

if(s->expn > r->expn)

{ r = r->next;

r->next = NULL;

}

}

} //else #

} //else @ } //while # return head;} //CREATEPOLYN

void PRINTPOLYN(linkpolyn head){ //以类数学表达式的形式打印 linkpolyn p;

p = head->next;if(p == NULL)//链表为空

puts(”0“);else //else @ { //链表不为空,输出第一个结点的值

if(p->expn == 0)printf(”%f“,p->coef);//指数为0时不输出x else

{ if(p->coef==1)printf(”x^%d“,p->expn);/**************************/ else if(p->coef ==-1)printf(”-x^%d“,p->expn);/**第一项前不需要输出符号**/ else printf(”%gx^%d“,p->coef,p->expn);/**************************/

} p = p->next;while(p!= NULL)

{ //依次输出以后各节点 if(p->coef>0)

{ //当系数为正时,讨论输出符号问题

if(p->expn == 0)printf(”+%g“,p->coef);else if(p->coef == 1)printf(”+x^%d“,p->expn);else printf(”+%gx^%d“,p->coef,p->expn);

} else

{ //当系数为负时,讨论输出符号问题

if(p->expn == 0)printf(”%g“,p->coef);else if(p->coef ==-1)printf(”-x^%d“,p->expn);else printf(”%gx^%d“,p->coef,p->expn);

} p = p->next;

} } //else @ } //PRINTPOLYN

linkpolyn ADDPOLYN(linkpolyn A , linkpolyn B){ //加法

linkpolyn qa,qb,q,ptr;float x;qa = A->next;qb = B->next;q = INITPOLYN();//和多项式头结点初始化

ptr = q;//ptr指向和多项式头结点

while((qa!= NULL)&&(qb!= NULL)){ //升幂求和

if(qa->expn == qb->expn)//指数相同的项

{ x = qa->coef + qb->coef;//系数相加

if(x!= 0)//求得系数非0

{ q->next =(linkpolyn)malloc(sizeof(polyn));//

q = q->next;

q->coef = x;

q->expn = qa->expn;

}

生成和多项式的节结点

qa = qa->next;

qb = qb->next;

}

else //指数不同

{

q->next =(linkpolyn)malloc(sizeof(polyn));

q = q->next;

if(qa->expn > qb->expn)//A多项式当前指数大于B

{ q->coef = qb->coef;//B多项式当前的值复制到和多项式中

q->expn = qb->expn;

qb = qb->next;

}

else //B多项式当前指数大于A

{ q->coef = qa->coef;//A多项式当前的值复制到和多项式中

q->expn = qa->expn;

qa = qa->next;

}

} } //A或B中有一个多项式已经处理完毕

while(qa!= NULL)//A未处理完毕,将其余各项复制到和多项式中

{ q->next =(linkpolyn)malloc(sizeof(polyn));q = q->next;

q->coef = qa->coef;

q->expn = qa->expn;

qa = qa->next;} while(qb!= NULL)//B未处理完毕,将其余各项复制到和多项式中

{ q->next =(linkpolyn)malloc(sizeof(polyn));q = q->next;

q->coef = qb->coef;

q->expn = qb->expn;

qb = qb->next;} q->next = NULL;//令和多项式最末的节点指向头结点

return ptr;//返回多项式头指针 } //LINKPOLYN

linkpolyn SUBTRACTPOLYN(linkpolyn A , linkpolyn B){ //减法

linkpolyn qa,qb,q,ptr;float x;qa = A->next;qb = B->next;q = INITPOLYN();//和多项式头结点初始化

ptr = q;//ptr指向和多项式头结点

while((qa!= NULL)&&(qb!= NULL)){ //升幂求差

if(qa->expn == qb->expn)//指数相同的项

{ x = qa->coef-qb->coef;//多项式A的系数减去B的系数

if(x!= 0)//求得系数非0

{ q->next =(linkpolyn)malloc(sizeof(polyn));//生成和多项式的节结点

q = q->next;

q->coef = x;

q->expn = qa->expn;

}

qa = qa->next;

qb = qb->next;

}

else //指数不同

{

q->next =(linkpolyn)malloc(sizeof(polyn));

q=q->next;

if(qa->expn > qb->expn)//A多项式当前指数大于B

{ q->coef =-(qb->coef);//B多项式当前的值复制到和多项式中

q->expn = qb->expn;

qb = qb->next;

}

else //B多项式当前指数大于A

{ q->coef = qa->coef;//A多项式当前的值复制到和多项式中

q->expn = qa->expn;

qa = qa->next;

}

} } //A或B中有一个多项式已经处理完毕

while(qa!= NULL)//A未处理完毕,将其余各项复制到和多项式中

{ q->next =(linkpolyn)malloc(sizeof(polyn));q = q->next;

q->coef = qa->coef;

q->expn = qa->expn;

qa = qa->next;} while(qb!= NULL)//B未处理完毕,将其余各项复制到和多项式中

{ q->next =(linkpolyn)malloc(sizeof(polyn));q = q->next;

q->coef =-(qb->coef);

q->expn = qb->expn;

qb = qb->next;} q->next = NULL;//令和多项式最末的节点指向头结点

return ptr;//返回多项式头指针 } //SUBTRACTPOLYN

linkpolyn MULTIPLYPOLYN(linkpolyn A,linkpolyn B){ //乘法

linkpolyn pa,pb,s,head,m,r,p;pa = A->next;pb = B->next;head = INITPOLYN();r = head;

s=(linkpolyn)malloc(sizeof(polyn));s->coef = pa->coef * pb->coef;//计算第一个结点,并且第一个结点自然有序

s->expn = pa->expn + pb->expn;r->next = s;s->prior = r;r =r->next;r->next = NULL;p=r;//p为插入点前一结点

m=r;//m指向排完结点中间节点

pb=pb->next;// 第一个乘积处理完毕

for(pa= A->next;pa!= NULL;pa=pa->next)//for pa 处理其余乘积

{ //用A的第一个结点分别与B的其余结点相乘

if(pa == A->next)

pb = B->next->next;

else

pb = B->next;

for(;pb!= NULL;pb = pb->next)//for pb

{

s =(linkpolyn)malloc(sizeof(polyn));s->coef = pa->coef * pb->coef;

s->expn = pa->expn + pb->expn;if(s->expn <= p->expn)//if #

{ while(p->prior!=NULL && p->expn > s->expn)p=p->prior;//p向前遍历链表,找到插入点

if(s->expn==p->expn)

{

p->coef+=s->coef;

free(s);

}

else

{

INSERTPOLYN(p,s);//在p后面插入结点s

m=m->prior;

p=m;

}

} // if #

else //else #

{ while(p->next!=NULL && p->next->expn < s->expn)

p=p->next;//p向前遍历链表,找到插入点

if(s->expn==p->expn)

{

p->coef+=s->coef;

free(s);

}

else

{

INSERTPOLYN(p,s);

if(s->expn > r->expn)

{ r=r->next;

r->next=NULL;

}

}

} //else #

} //for pb } //for pa return head;} //MULTIPLYPOLYN

linkpolyn DERIVATIONPOLYN(linkpolyn L){ //多项式求导

linkpolyn head,p,s,r;head = INITPOLYN();//head为求导多项式头结点 r = head;p = L->next;while(p!= NULL){ if(p->expn == 0)

{ p = p->next;continue;} s =(linkpolyn)malloc(sizeof(polyn));s->coef = p->coef * p->expn;s->expn = p->expn-1;s->prior = r;

r->next = s;

r = r->next;

r->next = NULL;

p = p->next;} return(head);} //DERIVATIONPOLYN

float WORK(float x,int e){ //求x的幂 float t = 1;if(e>0){ while(e)

{ t *= x;e--;} } if(e<0){ while(e)

{ t *= 1/x;e++;} }

return(t);} //WORK

float CALCULATEPOLYN(linkpolyn head,float x){ //计算多项式在x处的值 float t = 0;linkpolyn p;p = head->next;while(p){ t = t +((p->coef)*(WORK(x,p->expn)));p = p->next;} return(t);} //CALCULATEPOLYN

int main(void){ linkpolyn A, B,addp,decp,mulp,derp1,derp2;int i;float x;start: system(”cls“);printf(”一元稀疏多项式计算nn“);printf(”1.建立多项式n“);printf(”2.多项式加法n“);printf(”3.多项式减法n“);printf(”4.多项式乘法n“);printf(”5.计算多项式在x处的值n“);printf(”6.对多项式求导n“);printf(”7.清空数据n“);printf(”8.关闭计算器n“);printf(”请输入选项(1~7):“);scanf(”%d“,&i);switch(i){ case(1): system(”cls“);printf(”建立多项式nn“);printf(”建立多项式A,当输入0 0 时表示出入完毕n“);A = CREATEPOLYN();printf(”建立多项式成功n“);printf(”建立多项式B,当输入0 0 时表示出入完毕n“);B = CREATEPOLYN();printf(”建立多项式成功n“);printf(”多项式A:“);PRINTPOLYN(A);printf(”n“);printf(”多项式B:“);PRINTPOLYN(B);

printf(”nn输入回车返回上一级“);getchar();getchar();goto start;case(2): system(”cls“);printf(”多项式加法nn“);printf(”多项式A:“);PRINTPOLYN(A);printf(”n“);printf(”多项式B:“);PRINTPOLYN(B);printf(”n“);addp = ADDPOLYN(A,B);printf(”多项式A+B:“);PRINTPOLYN(addp);printf(”n“);printf(”nn输入回车返回上一级“);getchar();getchar();goto start;case(3): system(”cls“);printf(”多项式减法nn“);printf(”多项式B:“);PRINTPOLYN(A);printf(”n“);printf(”多项式B:“);PRINTPOLYN(B);printf(”n“);decp = SUBTRACTPOLYN(A,B);printf(”多项式A-B:“);PRINTPOLYN(decp);printf(”n“);printf(”nn输入回车返回上一级“);getchar();getchar();goto start;case(4): system(”cls“);printf(”多项式乘法nn“);printf(”多项式A:“);PRINTPOLYN(A);printf(”n“);printf(”多项式B:“);PRINTPOLYN(B);printf(”n“);mulp = MULTIPLYPOLYN(A,B);printf(”多项式AB:“);PRINTPOLYN(mulp);printf(”n“);printf(”nn输入回车返回上一级“);

getchar();getchar();goto start;case(5): system(”cls“);printf(”计算多项式在x处的值n“);printf(”请输入x的值:“);scanf(”%f“,&x);printf(”n多项式A:“);PRINTPOLYN(A);printf(”n值为:%f“,CALCULATEPOLYN(A,x));printf(”n“);printf(”多项式B:“);PRINTPOLYN(B);printf(”n值为:%f“,CALCULATEPOLYN(B,x));printf(”nn输入回车返回上一级“);getchar();getchar();goto start;case(6): system(”cls“);printf(”多项式求导n“);printf(”多项式A:“);PRINTPOLYN(A);printf(”n“);printf(”多项式B:“);PRINTPOLYN(B);printf(”n“);derp1 = DERIVATIONPOLYN(A);printf(”求导后A':“);PRINTPOLYN(derp1);printf(”n“);derp2 = DERIVATIONPOLYN(B);puts(”求导后B':“);PRINTPOLYN(derp2);printf(”nn输入回车返回上一级“);getchar();getchar();goto start;case(7): system(”cls“);DESTROYPOLYN(A);DESTROYPOLYN(B);DESTROYPOLYN(addp);DESTROYPOLYN(decp);DESTROYPOLYN(mulp);DESTROYPOLYN(derp1);DESTROYPOLYN(derp2);printf(”已清空所有数据n“);printf(”nn输入回车返回上一级“);getchar();getchar();

goto start;case(8): printf(”退出");} return(0);}

第五篇:C语言课程设计报告(参考)

C语言课程设计报告

专 业:网络工程 学 号:11102101 姓 名:步乾豪 提交日期:2012-6-21

C语言课程设计报告

【设计目的】 1.教学目的

本课程设计是学生学习完《C语言程序设计》课程后,进行的一次全面的综合训练,通过课程设计,更好地掌握使用C语言进行程序设计的方法,加深对C语言特点和使用C语言进行程序设计开发过程的理解,加强动手能力。其主要目的是:

(1)进一步培养学生结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解;

(2)针对C语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。

(3)掌握C语言的编程技巧和上机调试程序的方法。(4)掌握程序设计的常用算法。2.教学要求

(1)要求从所给题目中任选若干个,每个学生必须独立完成课程设计,不能互相抄袭。(2)设计完成后,对所完成的工作进行答辩。(3)要求写出一份详细的课程设计报告。

(4)程序设计题目,须提交相应的程序,并需提供加注释的源程序,能正常运行。……………………………………..【设计内容】

学生信息管理系统 程序说明:

本程序属于非数值计算型算法设计,学生需要设计出学生管理系统所需要的基本功能,并设计简单的界面(无需图形化)。本程序主要考察对自定义函数的熟悉程度,本程序中主要使用到的是数组(链表)的相关操作,包括数组(链表)的输入、输出、查找、插入、删除等操作,需要对数组(链表)有比较深入的掌握。

设计要求:

(1)通过提示菜单选择可以进行的操作。

(2)将学生的信息存入文件中,并命名为StudentInfo.txt。(3)在本系统中可以进行管理系统包含的基本操作,其中包括

a)查看所有学生的信息

b)输入一个学生的学号,从当前学生中进行查找,如果找到则显示该学生的相关信息,如果没有找到则给出提示信息

c)添加一个学生的基本信息,通过输入学号,首先查找是否存在该学号的学生,如果存在则提示重新输入,否则将该学生按照顺序插入到相应位置

d)删除一个学生的基本信息,通过输入学号,首先查找是否存在该学号的学生,如果存在则将该学生删除,否则给出提示信息,提示该学生不存在

(4)学生基本信息包括学号、姓名、性别和专业这些简单信息

C语言课程设计报告

(5)学生信息文件中每一行存放一个学生的信息 ………………………………….【实验环境】 1.硬件环境

开发硬件:Thinkpad E520计算机

因特尔酷睿I5处理器,8GB运存,1GB独立显卡,500G硬盘存储,2.软件环境

开发环境:Windows 7旗舰版操作系统

开发软件:Microsoft Visual 6.0 C++软件

【设计中使用函数说明】

定义并使用的文件: void scanproduct()

【测试结果】

1)创建链表、插入新信息、删除信息、显示信息、修改信息。

2)测试数据

【设计总结】

一.对该设计题目有何更完善的方案

1、对自己完成程序进行自我评价

完成了课程设计的基本要求,同时在此基础上进行了一些创新,使用了多文件,使程序看起来更清晰更有条理。但由于能力有限,以及对C++的认识不深,其中还有不够完善合理的地方。

2、对课题提出更完善的方案

增加按照成绩对链表进行排序的功能,使学生信息能够按照成绩的高低进行显示,能够更清晰地显示学生的学习情况。二.收获及心得体会

1、通过本次课程设计,自己在哪些方面的能力有所提高

加深了对利用C++语言进行程序设计的理解,提高了对函数的运用能力,提高了软件系统分析能力和使用多文件、归纳总结的能力。

2、收获和心得体会

通过自己对单项链表的学习,熟悉了链表的建立、插入、删除等操作方法。通过这次课程设计使我明白了自学的重要性,有了一些自学的学习方法和技巧,并且要积极的与其他同学共同讨论,在讨论中才能找到自己认识的不足,改正自己的错误。【参考文献】 书籍:

1.《C语言程序设计第四版(谭浩强)》 2.《C语言程序设计课程上机指导》 3.《C语言程序设计第三版》

C语言课程设计报告

网站推荐:

http://(TC所有函数功能及使用查询)http://www.xiexiebang.com/(编程爱好者:里面有各种编程资料)

【源程序清单】 系统设计与分析

2.1.1第一模块界面及实现代码 其对应的函数如下: int main(){

int i;wenbenload();do { system(“cls”);printf(“nnnnnn”);printf(“***************************欢迎使用商品订购系统*******************************n”);printf(“ 作者: 网络11102101 步乾豪n”);

printf(“ ┏━━━━━━━━━━━━━━━━━━━┓n”);printf(“ ┃ 1.浏览商品信息 ┃n”);printf(“ ┃ 2.订购商品 ┃n”);printf(“ ┃ 3.订单查询 ┃n”);printf(“ ┃ 4.搜索商品 ┃n”);printf(“ ┃ 5.管理菜单 ┃n”);printf(“ ┃ 0.退出系统 ┃n”);printf(“ ┗━━━━━━━━━━━━━━━━━━━┛n”);printf(“********************************************************************************n”);

printf(“nntt请输入你的操作(0~5): ”);

scanf(“%d”,&i);switch(i){ case 1: system(“cls”);scanproduct();3

C语言课程设计报告

n“);

break;case 2:

system(”cls“);dinggou();break;

case 3: system(”cls“);

lookdinggou();break;searchproduct();break;case 4: case 5: secondmain();break;

case 0: //退出系统的界面

system(”cls“);printf(”nnnnnnnn“);printf(”nnttt欢迎使用本系统nnnnnttt欢迎再次使用

exit(0);//exit用于随时结束程序

}while(1);return 0;

} } 其中的wenbenload()用于从文本中导入商品信息

2.1.2 第二模块的界面及实现代码

如果选择的操作是主界面的1时,而产品文件为建立时会显示下图:

图2.3第二模块界面图

该程序的实现是通过以下代码实现的: void scanproduct(){

int i;system(“cls”);printf(“ttttt商品信息列表n”);for(i = 0;i < inumber;i++)4

C语言课程设计报告

} {

} printf(“nnnnnnttt”);printf(“返回主菜单n”);printf(“ttt”);system(“pause”);return;printf(“名称 : %sn”,a[i].name);printf(“货号 : %dn”,a[i].number);printf(“厂家 : %sn”,a[i].vender);printf(“产地 : %sn”,a[i].filed);printf(“存量 : %dn”,a[i].stock);printf(“单价 : %.2lfnnn”,a[i].unvalent);2.1.3 第三模块的实现及代码 该程序实现代码如下: void dinggou(){ char ch;int i, j, t, c = 1;int n = 1;int m = 0;

do {

switch(n){ case 1: system(“cls”);

printf(“tttt商品信息列表n”);//显示商品的名称、货号信息,以便于订购 printf(“名称t 货号t 库存n”);for(i = 0;i < inumber;i++){

printf(“%st %dt %dnnn”,a[i].name,a[i].number,a[i].stock);

C语言课程设计报告

} printf(“nnn”);printf(“tttt商品订单n”);printf(“nttt请输入你的第%d个订单信息:n”,m + 1);

printf(“nttt货号:”);

fflush(stdin);

scanf(“%d”,&b[ibuy].bgname);

//检测是否含有此商品

j = 1;

for(i = 0;i < inumber;i++)

{

if(a[i].number == b[ibuy].bgname)

{

j = 0;

t = i;

}

}

//若有商品继续购买项目

if(j == 0)

{

printf(“nttt订购量:”);

fflush(stdin);

scanf(“%d”,&b[ibuy].bmany);

if(a[t].stock >= b[ibuy].bmany){

a[t].stock = a[t].stock-b[ibuy].bmany;//买后商品的库存计算

printf(“nttt日期时间:”);

fflush(stdin);

scanf(“%d”,&b[ibuy].btime);

printf(“nttt客户名:”);

fflush(stdin);

gets(b[ibuy].bname);

printf(“nttt客户地址:”);

fflush(stdin);

gets(b[ibuy].baddress);

printf(“nttt客户号:”);

b[ibuy].bnumber = bgnumber;

printf(“%dn”,b[ibuy].bnumber);

bgnumber++;

ibuy++;

m++;6

顾客购C语言课程设计报告

printf(“nnntttt”);

system(“pause”);} else { printf(“nnttt订购数目超出库存n”);

printf(“ttt”);

system(“pause”);

} } //若没有商品的提示及操作

else {

printf(“nnttt查无此货n”);

printf(“ttt”);

system(“pause”);}

case 2: printf(“是否继续输入订购?(Y/N)”);fflush(stdin);scanf(“%c”,&ch);if(ch == 'N' || ch == 'n'){

c = 0;

break;} else if(ch == 'Y' || ch == 'y'){

c = 0;

n = 1;

break;} else if(ch!= 'n' || ch!= 'N' || ch!= 'Y' || ch!= 'y'){

n = 0;

c = 1;

break;} case 0:

C语言课程设计报告

} if(c == 1){ } n = 2;

}while(ch!= 'n' && ch!= 'N');system(“cls”);

return;} 2.1.4 第四模块的实现及代码 该程序实现代码如下: void lookdinggou(){ int i;system(“cls”);printf(“ttttt订单列表n”);for(i = 0;i < ibuy;i++){

printf(“货号 : %dn”,b[i].bgname);printf(“订购量 : %dn”,b[i].bmany);printf(“日期时间 : %dn”,b[i].btime);printf(“客户名 : %sn”,b[i].bname);printf(“客户地址 : %sn”,b[i].baddress);printf(“客户号 : %dnnn”,b[i].bnumber);

} printf(“nnnnnnttt”);printf(“返回主菜单n”);printf(“ttt”);system(“pause”);return;} 该代码中用到了指针,并用到了链表的建立和删除,当然也涉及到了结构体。2.1.5 第五模块的实现及代码 通过以下代码实现: void searchproduct(){

int i;int j;char ch;int n = 1;do

C语言课程设计报告

{

switch(n){ case 1: system(“cls”);

printf(“tttt商品列表n”);//显示商品的名称、货号信息,以便于下部的删除 for(i = 0;i < inumber;i++){

} //商品的搜索

printf(“nnntttt请输入你要搜索商品的ID:”);scanf(“%d”,&j);if(0<=j&&j<=inumber)printf(“名称 : %sn”,a[i].name);printf(“ID : %dn”,i);printf(“库存 : %dnnn”,a[i].stock);

{ printf(“名称 : %sn”,a[j].name);printf(“货号 : %dn”,a[j].number);printf(“厂家 : %sn”,a[j].vender);printf(“产地 : %sn”,a[j].filed);printf(“存量 : %dn”,a[j].stock);printf(“单价 : %.2lfnnn”,a[j].unvalent);}

case 2:

} printf(“是否继续搜索商品?(Y/N)”);fflush(stdin);scanf(“%c”,&ch);if(ch == 'N'|| ch == 'n'){ } if(ch ==' Y'|| ch == 'y'){

} n = 1;break;break;9

C语言课程设计报告

} }while(ch!= 'n' && ch!= 'N');

printf(“nnnnnnttt”);printf(“返回主菜单!n”);printf(“ttt”);system(“pause”);return;2.1.6 第六模块的实现及代码 该代码如下: void secondmain(){

int i;

do {

system(“cls”);printf(“nnnnnnn”);

单printf(“******************************************************************nn”);n“);n”);n“);n”);n“);

printf(” ┏━━━━━━━━━━━━━━━━━━━┓printf(“ ┃ 1.输入全部商品 ┃printf(” ┃ 2.增加商品 ┃printf(“ ┃ 3.删除商品 ┃printf(” ┃ 4.储存商品 ┃printf(“ ┃ 5.储存订单 ┃

C语言课程设计报告

n”);n“);printf(” ┗━━━━━━━━━━━━━━━━━━━┛printf(“ ┃ 0.返回上一级 ┃nnn”);printf(“********************************************************************************nnnnn”);

printf(“nntt请输入你所要选择的功能(0~5): ”);

scanf(“%d”,&i);

switch(i){

case 1:

system(“cls”);jianpanload();break;

case 2:

system(“cls”);addproduct();break;case 3:

system(“cls”);deleteproduct();break;

case 4:

system(“cls”);

C语言课程设计报告

saveproduct();break;case 5:

system(“cls”);savedinggou();break;

} case 0:

system(“cls”);

return;

}while(1);

printf(“tttt”);system(“pause”);system(“cls”);return;}该代码用于商品信息文件的建立生成,存储商品信息和订单。

2.2 软件的数据(结构)设计

先定义全局变量用于控制商品数量和订单数量如下: #include #include #include #include #include

int bgnumber = 023;//客户号

int inumber = 0;//商品量的统计 int ibuy = 0;//订单的统计

C语言课程设计报告

void secondmain();

//管理维护子菜单 void jianpanload();//输入商品 void scanproduct();//浏览商品 void searchproduct();//搜索商品 void dinggou();//订购商品 void lookdinggou();//查询订单 void addproduct();//增加商品 void deleteproduct();//删除商品 void saveproduct();//保存商品 void savedinggou();//保存订单 void wenbenload();//从文本导入商品

struct product {

char name[30];int number;char vender[30];char filed[100];int stock;

double unvalent;

//商品名 //货号 //厂家 //产地 //存量 //单价

};struct product a[100];

struct dinggou {

int bgname;//货号 int bmany;

int btime;

char bname[100];

//订购量 //日期时间 //客户名

char baddress[100];//客户地址 int bnumber;//客户号

};struct dinggou b[100];

下载c语言课程设计设计报告word格式文档
下载c语言课程设计设计报告.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    C语言课程设计报告

    目录 1前言 .............................................................. 1 2正文 .............................................................. 1 2.1设计目的......

    C语言课程设计报告

    C语言课程设计报告 1. 实验题目:职员信息管理系统 2. 数据结构:整型int,字符型char,长整型long,结构体及结构体数组 3. 源代码 : #include"stdio.h" #include"string.h" #defin......

    C语言课程设计报告

    C语言课程设计报告--学生成绩管理系 C语言课程设计报告: 学生成绩管理系统 系统需求 一、 当前学生信息:通过结构体struct student 来保存学生的姓名,学号,性别,语文,数学,英语和......

    C语言课程设计停车场报告

    C语言上机实习报告 指导老师:吴杰 学生姓名:刘超 班级序号:02305231 学生证号:20051004279 一.题目要求 设有一个可以停放N辆汽车的狭长停车场,它只有1个大门可以供车辆进出。车......

    课程设计报告 C语言[推荐阅读]

    课 程 报 告 课 程 名 称: 专 业 班 级 : 学 生 姓 名 : 学 号 : 程序设计实践 ****** 20104683**** 任 课 教 师 : 学 2010期 :2010-2011 学年第二学期 课程报告任务书 课程报告......

    C语言课程设计报告总结

    课程设计是培养学生综合运用所学知识 ,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对我们的实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,当......

    五子棋JAVA语言课程设计报告

    《Java语言程序设计》 课程设计报告 学 院: 信息科学技术学院 班 级: 软件技术2班 姓 名: 王更新 学 号: 1108900505 指导教师: 郭韶升 课设时间: 2014-03-17 至2014-03-26 二O......

    C语言课程设计实习报告

    C语言课程设计实习报告 题目一、两个大数相乘问题 题目描述:本问题中,要求输入两个相对较大的正整数,能够通过程序计算出其结果。 设计思路:用数组存储一个大数,数组的每个单元存......