C语言课程设计 (3)
《C语言程序设计》课程设计任务书-建电11412
《C语言》课程设计任务书一、性质与目的:本课程设计是学生学习完《C语言程序设计》课程后进行的一次全面的综合练习。
本课程设计的目的和任务:(1)巩固和加深学生对C语言课程的基本知识的理解和掌握;(2)掌握C语言编程和程序调试的基本技能;(3)利用C语言进行简单软件设计的基本思路和方法;(4)提高运用C语言解决实际问题的能力。
通过实习,加深学生对课堂所学基础知识的掌握与理解,提高学生对所学内容的综合运用能力;同时通过查询资料,培养学生自学、接受新知识能力,提高学习兴趣;增强学生程序设计能力,掌握编程技巧,培养学生实际上机调试能力。
二、基本要求:1、选题规定2、设计结束后,要求每个学生上交一份打印的实习报告。
3、设计期间,学生要服从指导教师统一安排,遵守机房制度。
4、严格遵守纪律,不迟到,不早退。
对于无故缺勤者,成绩按不及格处理。
三、设计内容:题目见后边附录四、课程设计的成绩评定a)实习期间的平时表现;b)设计任务的考核成绩;c)设计报告的批阅成绩。
根据以上的成绩由指导教师进行综合评定,成绩分优、良、中、及格和不及格五个等级。
五、实习进程实习为期一周,共22学时,周一至周四每天利用半天时间查阅资料,另外半天到计算机房调试程序(上机的具体时间遵照机房的安排),周五对所设计的软件进行上机考核验收,考核合格者书写设计报告(电子版和打印版),下周一交给指导教师。
六、设计报告格式首先是封面(如下图)其次是目录(要求根据报告内容自动生成)一、设计思路二、程序流程图三、源程序清单四、程序运行结果五、设计总结六、教师评语(学生不要填写)然后是根据目录而写的具体内容附录:(一)基础部分:1.输入一个五位整数,将它反向输出。
例如输入12345,输出应为54321。
(15分)2.用两种循环结构分别编程计算1+2+3…+100的值。
运行结果为“1+2+…+100=5050”(15分)3. 从终端读入20个数据到数组中,统计其中正数的个数,并计算它们之和。
c语言课程设计
课程设计报告正文1、目的:1) 对C各部分知识的综合应用能力2) 提咼程序设计的能力3) 提升对于较大程序的抽象分析设计能力4) 学习调试和测试的技巧2、所做题目的意义:通讯录管理系统在当今这个信息发达的社会是必不可少的,这个通讯录管理系统可以方便的为我们添加、管理联系人,不必一定要记住这些庞大的信息,可以很方便的调用出自己所需要的信息,随时的修改这些信息,这些在这个时代是非常的必要的。
3、本人所作的工作:(1)、写出了预习报告。
从图书馆搜集了些这方面的资料(2)、想好思路,写出了程序代码(3)、调试程序,找出其中的错误,最终成功的运行出程序(4)、写出课程设计报告4、系统的主要功能:该系统的是一个小型的通讯系统,它具有一般的通讯系统都具有的功能该程序具有查找、添加、修改、删除功能,其讯录包括:街道,城市,省,邮编。
5、、系统的总体设计:系统的基本要求和容:该系统要求具有查找,添加,修改,删除功能,其讯录包括:、,街道,城市,省,邮编。
但在实际设计中增加了一项,那就是末尾添加,可以在已有的记录末尾再次添加,不必每次都重新添加,方便用户描绘及绘制出系统的功能结构框图、程序设计组成框图,流程图等:此系统共分为九大模块,分别为以下的模块:第一模块:主函数ma in ()的功能是:根据选单的选项调用各函数,并完成相应的功能。
第二模块:quitRec()的功能是:退出选单。
第三模块:createRec()的功能是:创建新的通讯录。
第四模块:addRec()的功能是:在通讯录的末尾写入新的信息,并返回选单第五模块:findRec()的功能是:查询某人的信息,如果找到了,则显示该人的信息,如果未找到,则提示通讯录中没有此人的信息,并返回选单。
第六模块:alterRec()的功能是:修改某人的信息,如果未找到要修改的人,则提示通讯录中没有此人的信息,并返回。
第七模块:deleteRec()的功能是:删除某人的信息,如果未找到要删除的人,则提示通讯录中没有此人的信息,并返回选单。
大一c语言课程设计
大一c语言课程设计一、课程目标知识目标:1. 理解C语言的基本语法,掌握变量定义、数据类型、运算符和表达式等基础知识;2. 学会使用C语言控制结构,如顺序、选择和循环结构,并能运用其编写简单程序;3. 熟悉C语言数组和字符串操作,掌握基本排序和查找算法;4. 掌握C语言函数定义、调用和参数传递,理解函数封装和模块化编程思想;5. 了解C语言指针的概念和使用方法,包括指针与数组、函数的关系。
技能目标:1. 能够使用C语言编写简单程序,解决实际问题;2. 能够阅读和分析C语言代码,理解程序运行过程和逻辑;3. 能够运用数组和函数对数据进行处理和分析;4. 能够运用指针优化程序性能,提高代码质量;5. 学会使用集成开发环境(IDE)进行C语言编程和调试。
情感态度价值观目标:1. 培养学生对编程的兴趣和热情,激发学习积极性;2. 培养学生严谨的编程习惯,注重代码规范和可读性;3. 培养学生面对编程挑战时的耐心和毅力,勇于克服困难;4. 培养学生团队协作意识,学会与他人分享和交流编程经验;5. 培养学生具备良好的信息素养,关注编程技术的发展和应用。
本课程针对大一学生,以C语言为基础,注重理论与实践相结合。
根据学生特点和教学要求,课程目标具体、可衡量,旨在帮助学生掌握C语言编程基础,培养编程技能和良好编程习惯,同时提高学生解决问题的能力和团队协作精神。
后续教学设计和评估将围绕这些具体学习成果展开。
二、教学内容本课程教学内容紧密结合课程目标,依据教材章节进行科学性和系统性安排。
具体内容包括:1. C语言概述:介绍C语言发展历史、特点和应用领域,引导学生认识C语言的重要性。
- 教材章节:第1章 C语言概述2. 基本数据类型和运算符:讲解基本数据类型、变量定义、运算符和表达式。
- 教材章节:第2章 数据类型与运算符3. 控制结构:介绍顺序结构、选择结构(if-else、switch)和循环结构(for、while、do-while)。
《C语言程序设计课设》课程设计指导书
《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分)五级记分制评定学生课程设计成绩。
中职C语言教案:C语言图形程序设计(全3课时)
main()
{int i,j;
for(i=1;i<=3;i++)
{ for(j=1;j<=6;j++)
printf(“%d”,j);
}
printf(“\n”);
}
教学环节
教学活动内容及组织过程
个案补充
教
学
内
容
4.如果变成如下的图形呢?
1 2 3 4 5 6
1 2 3 4 5 6
printf(“*”);
}
printf(“\n”);
}
5.观察以下图形输出程序
*
***
*****
试写出此程序的典型程序段
#include<stdio.h>
main()
{int i,j;
for(i=1;i<=3;i++)
{ for(j=1;j<=4-i;j++)
printf(“ ”);
for(j=1;j<=2*i-1;j++)
printf(“*”);
}
printf(“\n”);
}
方法二:
#include<stdio.h>
#include<math.h>
main()
{int i,j;
for(i=-2;i<=2;i++)
{ for(j=1;j<=abs(i);j++)
printf(“ ”);
for(j=1;j<=5-abs(i);j++)
C语言
c语言课课程设计
c语言课课程设计一、教学目标本节课的教学目标是让学生掌握C语言的基本语法和编程思想,培养学生编写简单程序的能力。
具体目标如下:1.知识目标:–了解C语言的发展历史和特点。
–掌握C语言的数据类型、变量、运算符和表达式。
–熟悉C语言的控制结构,包括条件语句和循环语句。
–理解函数的定义和调用。
2.技能目标:–能够使用C语言编写简单的程序,实现基本的输入输出、计算和控制流程。
–能够阅读和理解简单的C语言程序。
–能够对程序进行简单的调试和优化。
3.情感态度价值观目标:–培养学生对计算机科学的兴趣和好奇心。
–培养学生解决问题的能力和创新精神。
–培养学生团队合作和分享的意识。
二、教学内容根据教学目标,本节课的教学内容主要包括以下几个部分:1.C语言的发展历史和特点:介绍C语言的起源、发展和特点,让学生了解C语言的重要性和应用领域。
2.数据类型、变量、运算符和表达式:讲解C语言的基本数据类型、变量的声明和使用、运算符的用法和表达式的计算。
3.控制结构:讲解条件语句和循环语句的用法,让学生能够编写简单的分支和循环程序。
4.函数的定义和调用:讲解函数的定义、声明和调用方式,让学生了解函数的基本概念和使用方法。
5.编程实践:通过编写简单的程序,让学生实践和巩固所学的知识。
三、教学方法为了达到教学目标,本节课将采用以下几种教学方法:1.讲授法:教师讲解C语言的基本概念和语法,引导学生理解和掌握相关知识。
2.案例分析法:通过分析典型的C语言程序,让学生了解编程思想和方法。
3.实验法:让学生动手编写和运行C语言程序,培养学生的编程能力和实践能力。
4.讨论法:鼓励学生之间的交流和讨论,培养学生的团队合作和沟通能力。
四、教学资源为了支持教学内容和教学方法的实施,本节课将准备以下教学资源:1.教材:选用权威、实用的C语言教材,为学生提供系统的学习资料。
2.参考书:提供一些经典的C语言编程书籍,供学生课后阅读和参考。
3.多媒体资料:制作精美的PPT和教学视频,提高学生的学习兴趣和效果。
c语言课程设计
课程设计任务书一、设计题目(一)学生成绩排名(二)根据条件进行学生成绩排名(三)链表的操作(链表的建立,访问,删除链表指定结点,增加结点)(四)学生成绩文件管理(五)一个综合系统(学生成绩管理系统)二、主要内容(一)学生成绩排名先采用选择法,将学生成绩从高到低进行排序,再输入一个学生的成绩,将此成绩按照排序规律插入已排好序的学生成绩数组,最后将排好序的成绩单进行反序存放。
(二)根据条件进行学生成绩排名在函数中进行10个学生成绩从高到低排名,再改进函数,进行n个学生成绩从高到低排名, 排名方式根据函数的style参数进行,如style为‘a'按升序排,style为' d ' 按降序排(a:ascending 升,d:descending 降)。
编写多个不同函数,使之能实现不同的排序算法(3种以上),再编写一个通用输出函数,(要求用函数指针做参数)能分别打印不同排序算法的结果。
(三)链表的操作(链表的建立,访问,删除链表指定结点,增加结点)建立一个动态链表,将学生数据(学号,成绩)存入链表结构中,实现链表的访问(求学生成绩的平均分,找到最高分,最低分,将其数据输出)。
删除指定学号的学生数据,对学生数据进行排序,分别在链表头部,中间,末尾插入学生数据。
(四)学生成绩文件管理定义一个结构体数组,存放10个学生的学号,姓名,三门课的成绩,输出单门课成绩最高的学生的学号、姓名、以及该门课程的成绩,输出三门课程的平均分数最高的学生的学号、姓名及其平均分,将10个学生的相关数据,存入文件中,再从文件中读出,按照平均分数从高到低进行排序,分别将结果输出到屏幕上和另一文件中,再从文件中读取第 1 ,3 , 5 ,7,9个学生的数据。
(五)学生成绩管理系统设计:数据库的数据项主要数据包括:学号、姓名、年级、专业、成绩1、成绩2、成绩3、平均成绩、总成绩。
要求具有以下功能:(1)添加、删除任意个记录。
c语言课程设计的内容
c 语言课程设计的内容一、课程目标知识目标:1. 理解C语言的基本语法和结构,掌握变量定义、数据类型、运算符和表达式等基础知识;2. 学会使用C语言进行顺序、选择和循环结构的编程,并能运用逻辑判断和循环控制解决实际问题;3. 掌握C语言中的数组和字符串操作,能够运用数组进行批量数据处理;4. 了解函数的定义和调用方法,能够编写简单的自定义函数。
技能目标:1. 能够运用C语言编写简单的程序,解决实际问题;2. 培养良好的编程习惯,编写规范、可读性强的代码;3. 学会使用调试工具,能够调试并修复程序中的错误;4. 提高逻辑思维能力,学会分析问题、设计算法并转化为C语言程序。
情感态度价值观目标:1. 培养学生对编程的兴趣和热情,激发学生的创新意识;2. 培养学生严谨、细心的学习态度,提高团队协作能力;3. 使学生认识到编程在现代社会中的重要作用,树立正确的价值观;4. 引导学生遵守编程道德规范,遵循国家法律法规,养成良好的社会责任感。
课程性质:本课程为C语言编程入门课程,旨在让学生掌握C语言的基本知识和编程技能,为后续学习打下基础。
学生特点:学生处于初中或高中年级,具有一定的逻辑思维能力和数学基础,对编程感兴趣,但可能缺乏实际编程经验。
教学要求:结合学生特点,采用任务驱动的教学方法,注重实践操作,让学生在动手实践中掌握编程技能。
同时,注重培养学生的编程兴趣和团队协作能力,提高学生的综合素质。
通过本课程的学习,使学生能够达到上述课程目标,并在后续的学习中不断提高。
二、教学内容1. C语言基础知识:变量、数据类型、常量、运算符、表达式;2. 控制结构:顺序结构、选择结构(if、switch)、循环结构(for、while、do-while);3. 数组:一维数组、二维数组、字符数组与字符串;4. 函数:函数定义、函数调用、函数声明、局部变量与全局变量;5. 编程实践:编写简单的计算器程序、排序算法实现、字符串处理等;6. 调试与优化:使用调试工具(如Turbo C)、程序错误类型及解决方法、代码优化。
c预言课程设计
c预言课程设计一、课程目标知识目标:1. 让学生掌握C语言基础语法,包括变量声明、数据类型、运算符和表达式。
2. 使学生了解C语言程序结构,包括函数定义、调用和返回值。
3. 帮助学生理解C语言的流程控制语句,如顺序结构、分支结构和循环结构。
技能目标:1. 培养学生运用C语言编写简单程序的能力,能解决实际问题。
2. 培养学生阅读和分析C语言代码的能力,能理解并修改他人编写的程序。
3. 培养学生运用调试工具,如调试器和断点,找出并修复程序错误。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发探索计算机科学的热情。
2. 培养学生具备良好的编程习惯,如注重代码规范、注释清晰。
3. 培养学生具备团队协作精神,能与他人合作完成编程任务。
分析课程性质、学生特点和教学要求:1. 课程性质:本课程为C语言入门课程,注重理论与实践相结合,以编程实践为主。
2. 学生特点:学生为初中生,具备一定的逻辑思维能力,对计算机编程感兴趣,但缺乏实际编程经验。
3. 教学要求:以学生为中心,注重个体差异,采用任务驱动法,鼓励学生动手实践,培养解决问题的能力。
将目标分解为具体的学习成果:1. 学生能独立编写简单的C语言程序,如计算器、九九乘法表等。
2. 学生能阅读并分析C语言代码,理解程序逻辑,找出潜在错误。
3. 学生能通过调试工具修复程序错误,提高代码质量。
4. 学生在编程过程中,注重代码规范,养成良好的编程习惯。
5. 学生能与他人合作,共同完成编程任务,提高团队协作能力。
二、教学内容本章节教学内容依据课程目标,结合教材内容进行选择和组织,主要包括以下部分:1. C语言基础知识:- 变量声明和数据类型- 运算符和表达式- 顺序结构程序设计2. C语言函数:- 函数定义和调用- 函数参数和返回值- 递归函数简介3. C语言流程控制:- 分支结构(if语句、switch语句)- 循环结构(for循环、while循环、do-while循环)- 跳转语句(break、continue、goto)4. 编程实践:- 编写简单程序,如计算器、九九乘法表等- 阅读和分析代码,理解程序逻辑- 使用调试工具修复程序错误教学大纲安排如下:1. 第一周:C语言基础知识学习,包括变量、数据类型、运算符和表达式。
C语言课程设计实验报告
C语言课程设计实验报告1前言........................................................................................................ 错误!未定义书签。
2需求分析.. (1)2.1要求 (1)2.2任务 (1)2.1运行环境 (1)2.1开发工具 (1)3系统分析3系统分析 (1)2.1要求 (1)2.1要求 (1)2.1要求 (1)4总体设计2.1要求 (1)2.1流程图 (1)2.1要求 (1)1 前言用C语言编写一个约为两千行的程序来实现图形化界面下的海空模拟作战系统。
建立简单的海军与空军交战场景,有较好的舰船、地空导弹、飞机、炸弹等图形模型,可人人对战或人机对战,具有计分、判胜负等具体功能。
首先,通过C语言中图形化操作的函数画出比较逼真的战舰群与飞机群,并将画图的程序写成模块,将画出战舰与飞机的程序模块分开分别存入不同个文件;其次,在各自的文件中用C语言中定位屏幕坐标与图形动画的函数实现发射导弹或投弹的功能,并通过参数的变化控制其发动攻击;再者,编程实现战舰与飞机接受攻击的次数并设定其被击沉或击落的状态,即将其从屏幕上清除掉,在此环节中设定接受攻击次数最多的战舰或飞机为指挥中心,并实现战舰或飞机的移动;在模式一下,随着指挥中心前进,指挥中心的移动随操作者用鼠标而动,这一功能通过C语言中移动屏幕的程序完成;模式二下,舰队或机队可分为两或三部分,这一功能可由调用画图的模块完成,主机所在的队仍由操作者通过鼠标指挥,其他两部分可在战斗前先设定行进路线,在行进过程中用按键控制其攻击,也可在战斗过程中按键暂停请入指挥模式,对其攻击路线尽心临时设置,但暂停次数有限;最后,编写程序对系统进行总体控制,包括进入战斗模式,选择模式(人人,人机),并调用各个模块通过各个模块之间的参数传递时整个系统可以有效的运行,战斗状态用一个循环来实现,并记录战斗双方的损失,最后根据哪一方的指挥中心先被击毁来判断输赢,任一方指挥中心被毁战斗就结束,即程序跳出循环,最后输出双方损失。
大学生c语言课程设计
大学生c语言课程设计一、课程目标知识目标:1. 学生能理解C语言的基本语法和结构,掌握数据类型、运算符、控制语句等基本概念。
2. 学生能够运用C语言编写简单的程序,解决问题,并理解程序执行流程。
3. 学生能掌握数组、函数、指针等C语言核心知识,进行模块化编程。
技能目标:1. 学生具备使用C语言进行程序设计的能力,能够编写、调试和运行简单的C 程序。
2. 学生能够运用所学知识解决实际问题,培养编程思维和逻辑分析能力。
3. 学生通过课程项目实践,提高团队协作和沟通能力。
情感态度价值观目标:1. 学生培养对编程的兴趣和热情,认识到编程在现代社会中的重要性。
2. 学生在学习过程中,养成积极探究、自主学习的习惯,形成良好的学习态度。
3. 学生通过课程学习,认识到团队合作的重要性,培养集体荣誉感和责任感。
分析课程性质、学生特点和教学要求:本课程为大学生C语言课程设计,旨在帮助学生掌握C语言编程基础,培养编程能力和逻辑思维。
学生特点为具有一定的高等数学和计算机基础,对编程有一定兴趣,但实践经验不足。
教学要求注重理论与实践相结合,以项目驱动教学,提高学生的动手能力和实际应用能力。
课程目标分解为具体学习成果:1. 学生能够独立编写100行以上的C程序,完成课程项目。
2. 学生通过课程学习,掌握C语言基本语法和核心知识,能解决实际问题。
3. 学生在课程实践中,展示良好的团队协作和沟通能力,形成积极的情感态度。
二、教学内容本课程教学内容紧密结合课程目标,确保学生系统掌握C语言知识。
教学内容如下:1. C语言概述:介绍C语言的发展历程、特点和应用领域,使学生了解C语言的重要性。
教材章节:第1章 C语言概述2. 基本语法:讲解数据类型、变量、常量、运算符、表达式等基本概念,为学生编程打下基础。
教材章节:第2章 数据类型与表达式3. 控制语句:学习顺序结构、分支结构、循环结构等控制语句,培养学生逻辑思维能力。
教材章节:第3章 控制语句4. 函数:介绍函数定义、调用、参数传递等知识,使学生掌握模块化编程方法。
c语言课程设计报告书3篇
c语言课程设计报告书3篇c语言课程设计报告书1我们学习它,有助于我们更好的了解计算机,与计算机进行交流,因此,c语言的学习对我们尤其重要。
在这个星期里,我们专业的学生在专业老师的带领下进行了c语言程序实践学习。
在这之前,我们已经对c语言这门课程学习了一个学期,对其有了一定的了解,但是也仅仅是停留在了解的范围,对里面的好多东西还是很陌生,的在运用起来的时候还是感到很棘手,毕竟,万事开头难嘛。
由于时间的关系,我们的这次实践课程老师并没有给我们详细的介绍,只是给我们简单的介绍了几个比较重要的实际操作。
包括了程序模块处理。
简单界面程序。
高级界面程序。
程序的添加修改。
用程序做一元线性回归处理以及用c语言程序来画粒度分布图等这几样比较重要的时间操作。
上机实验是学习程序设计语言必不可少的实践环节,特别是c语言灵活、简洁,更需要通过编程的实践来真正掌握它。
对于程序设计语言的学习目的,可以概括为学习语法规定、掌握程序设计方法、提高程序开发能力,这些都必须通过充分的实际上机操作才能完成。
学习c程序设计语言除了课堂讲授以外,必须保证有不少于课堂讲授学时的上机时间。
因为学时所限,课程不能安排过多的上机实验,所以希望学生有效地利用课程上机实验的机会,尽快掌握用c语言开发程序的能力,为今后的继续学习打下一个良好的基础。
为此,我们结合课堂讲授的内容和进度,安排了12次上机实验。
课程上机实验的目的,不仅仅是验证教材和讲课的内容、检查自己所编的程序是否正确,课程安排的上机实验的目的可以概括为如下几个方面:1、加深对课堂讲授内容的理解课堂上要讲授许多关于c语言的.语法规则,听起来十分枯燥无味,也不容易记住,死记硬背是不可取的。
然而要使用c语言这个工具解决实际问题,又必须掌握它。
通过多次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握c语言的语法规定。
对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差,这是由于大部分学生是初次接触程序设计,缺乏程序设计的实践所致。
C语言程序设计课程设计--歌手成绩管理系统
《C语言程序设计课程设计》课程设计报告题目:歌手成绩管理系统学院:计算机科学与技术歌手成绩管理系统一、系统菜单及任务(1)系统菜单的主要功能(1)输入歌手信息(2)输出歌手信息(3)歌手成绩排序(4)记录歌手信息(5)保存歌手信息(6)添加歌手信息(7)删除歌手信息(8)退出系统(2)实现的任务:完成对歌手比赛信息的各种管理。
歌手比赛系统对一次歌手比赛的成绩进行管理,功能要求:1、输入每个选手的数据包括姓名、歌曲名、各评委的打分成绩,大众评委打分成绩,根据输入计算出总成绩。
2、显示主菜单如下:1)输入信息2)显示信息3)结果排序4)保存信息5)显示结果6)退出系统。
二、设计内容:确定能表述歌手信息的数据结构,至少要有姓名、歌曲名、各评委打分、大众评委打分等信息,它是本程序的核心数据结构,定义为如下的结构体类型:struct Sing{float P1;float P2;float A[M];};struct Singer{int num;float sum;char singerName[10];char singName1[20];char singName2[20];struct Sing singScore1;struct Sing singScore2;};三、程序应具有以下基本功能:❖信息输入:输入每个选手的数据包括姓名、各首歌曲的歌曲名、各评委的打分成绩,大众评委打分成绩❖计算成绩:根据输入计算出各歌手的每首歌得分以及总得分。
❖成绩排序:按歌手的最后得分❖保存结果:将结果保存在文本文件中。
❖要求界面良好四、主要流程图程序各模块(输入,显示等)结构图:五、系统测试程序进行实例如下1、显示主菜单界面:主要功能输入歌手信息输出歌手信息歌手成绩排序记录歌手信息保存歌手信息添加歌手信息删除歌手信息退出系统2、选择1:运行界面如下六、源程序及系统文件使用说明#include<stdio.h>#include<stdlib.h>/*动态存储分配函数*/#include<string.h>/*字符函数和字符串函数*/ #include<math.h>/*数学函数*/#define M 5int N;struct Sing/*歌曲信息结构体*/{float P1;float P2;float A[M];};struct Singer/*歌手信息结构体*/{int num;float sum;char singerName[10];char singName1[20];char singName2[20];struct Sing singScore1;struct Sing singScore2;};struct Singer Sin[200];void print(){printf("- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n");printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");printf(" 欢迎进入歌手成绩管理系统\n");printf("- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n");printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");}void menu();void input()/*输入歌手信息*/{int i;for(i=0;i<3;i++){printf("请输入歌手编号:");scanf("%d",&Sin[i].num );printf("请输入歌手姓名:");scanf("%s",Sin[i].singerName );printf("请输入歌曲1名称:");scanf("%s",Sin[i].singName1 );printf("请输入歌曲1大众评委打分:");scanf("%f",&Sin[i].singScore1.P1);printf("请输入歌曲1专业评委1打分:");scanf("%f",&Sin[i].singScore1.A[0]);printf("请输入歌曲1专业评委2打分:");scanf("%f",&Sin[i].singScore1.A[1]);printf("请输入歌曲1专业评委3打分:"); scanf("%f",&Sin[i].singScore1.A[2]);printf("请输入歌曲1专业评委4打分:"); scanf("%f",&Sin[i].singScore1.A[3]);printf("请输入歌曲1专业评委5打分:"); scanf("%f",&Sin[i].singScore1.A[4]);printf("歌曲1专业评委打分为:");Sin[i].singScore1.P2=(Sin[i].singScore1.A[0]+Sin[i].singScore1.A[1]+Sin[i].singScore1.A[2]+Sin[i].singScore1.A[3]+Sin[i].singScore1.A[4])/5;printf("%f\n",Sin[i].singScore1.P2);printf("请输入歌曲2名称:");scanf("%s",Sin[i].singName2 );printf("请输入歌曲2大众评委打分:");scanf("%f",&Sin[i].singScore2.P1);printf("请输入歌曲2专业评委1打分:"); scanf("%f",&Sin[i].singScore2.A[0]);printf("请输入歌曲2专业评委2打分:"); scanf("%f",&Sin[i].singScore2.A[1]);printf("请输入歌曲2专业评委3打分:"); scanf("%f",&Sin[i].singScore2.A[2]);printf("请输入歌曲2专业评委4打分:"); scanf("%f",&Sin[i].singScore2.A[3]);printf("请输入歌曲2专业评委5打分:"); scanf("%f",&Sin[i].singScore2.A[4]);printf("歌曲2专业评委打分为:");Sin[i].singScore2.P2=(Sin[i].singScore2.A[0]+Sin[i].singScore2.A[1]+Sin[i].singScore2.A[2]+Sin[i].singScore2.A[3]+Sin[i].singScore2.A[4])/5;printf("%f\n",Sin[i].singScore2.P2);printf("该歌手的总成绩为:");Sin[i].sum = Sin[i].singScore1.P1+Sin[i].singScore1.P2+Sin[i].singScore2.P1+Sin[i].singScore2.P2 ;printf("%lf\n",Sin[i].sum);}menu();}void output()/*输出歌手信息*/{int i;printf("输出歌手信息是:\n");for(i=0;i<3;i++){printf("编号歌手歌曲1 大众评委专业评委歌曲2 大众评委专业评委总分:\n");printf("%d\t%4s\t%4s\t%4.2f\t%6.2f\t%6s\t%8.2f\t%4.2f\t%6.2f\t\n",Sin[i].num ,Sin[i].singerName,Sin[i].singName1,Sin[i].singScore1.P1,Sin[i].singScore1.P2,Sin[i].singName2,Sin[i].singScore2.P1,Sin[i].singScore2.P2,Sin[i].sum);}menu();}void sort()/*对歌手成绩进行排序*/{float t,d,e,g,h;int i,j,m;char b[10],c[20],f[20];for(j=0;j<3;j++)for(i=0;i<2-j;i++)if(Sin[i].sum>Sin[i+1].sum ){t=Sin[i].sum ;Sin[i].sum =Sin[i+1].sum;Sin[i+1].sum =t;/*分数排序*/m=Sin[i].num ;Sin[i].num =Sin[i+1].num ;Sin[i+1].num =m;/*编号排序*/strcpy(b,Sin[i].singerName);strcpy(Sin[i].singerName,Sin[i+1].singerName);strcpy(Sin[i+1].singerName,b);/*名字复制替换进行名字排序*/strcpy(c,Sin[i].singName1);strcpy(Sin[i].singName1,Sin[i+1].singName1);strcpy(Sin[i].singName1,c);/*歌曲1名称排序*/d=Sin[i].singScore1.P1;Sin[i].singScore1.P1=Sin[i+1].singScore1.P1;Sin[i+1].singScore1.P1=d;/*歌曲1大众评委打分的排序*/e=Sin[i].singScore1.P2;Sin[i].singScore1.P2=Sin[i+1].singScore1.P2;Sin[i+1].singScore1.P2=e;/*歌曲1专业评委打分的排序strcpy(f,Sin[i].singName2);strcpy(Sin[i].singName2,Sin[i+1].singName2);strcpy(Sin[i+1].singName2,f);/*歌曲2名称的排序*/g=Sin[i].singScore2.P1;Sin[i].singScore2.P1=Sin[i+1].singScore2.P1;Sin[i+1].singScore2.P1=g;/*歌曲2大众评委打分的排序*/h=Sin[i].singScore2.P2;Sin[i].singScore2.P2=Sin[i+1].singScore2.P2;Sin[i+1].singScore2.P2=h;/*歌曲2专业评委打分的排序*/}printf("排序后的结果为:\n");printf("编号姓名总成绩:\n");for(i=0;i<3;i++)printf("%d\t%s\t%lf\t\n",Sin[i].num,Sin[i].singerName,Sin[i].sum);menu();}void save()/*将歌手信息保存到文本文件中*/{FILE *fp;int i;if((fp=fopen("f:\\lin","wb"))==NULL){printf("cannot open file\n");return;}for(i=0;i<200;i++)if(fwrite(&Sin[i],sizeof(struct Singer),1,fp)==1){printf("文件写入错误\n");break;}fclose(fp);}void WritetoText(int n)/*将所有记录写入文件*/{int i=0;FILE *fp;/*定义文件指针*/char filename[200];printf("将所有记录写入文件:\n");/*输入文件名*/printf("输入文件名:\n");scanf("%s",filename);if((fp=fopen(filename,"a"))==NULL)/*打开文件*/{printf("不能打开文件:\n");system("pause");return;/*终止程序*/}fprintf(fp,"%d\n",n);/*循环写入数据*/fprintf(fp,"编号歌手歌曲1 大众评委专业评委歌曲2 大众评委专业评委总分:\n");while(i<n){fprintf(fp,"%d\t%2s\t%2s\t%lf\t%lf\t%6s\t%lf\t%lf\t%lf\t\n", Sin[i].num, Sin[i].singerName,Sin[i].singName1,Sin[i].singScore1.P1,Sin[i].singScore1.P2,Sin[i].singName2,Sin[i].singScore2.P1,Sin[i].singScore2.P2,Sin[i].sum);i++;}fclose(fp);/*关闭文件*/printf("Successed!\n");//返回成功信息menu();}void Tianjia_a_record()/*添加函数*/{int i,j;int a;printf("请输入一个歌手的编号:");scanf("%d",&a);for(i=0;i<N;i++)if(a==Sin[i].num)/*两个整数进行比较*/{printf("不能进行添加操作");j++;break;}if(j==0)/*新添加的歌手编号与原歌手中没有相同的*/ {Sin[i].num=a;printf("歌手名:");scanf("%s",Sin[i].singerName);printf("歌曲1的名称:");scanf("%s",Sin[i].singName1);printf("歌曲1的大众评委打分:");scanf("%f",&Sin[i].singScore1.P1);printf("歌曲1的专业评委1打分:");scanf("%f",&Sin[i].singScore1.A[0]);printf("歌曲1的专业评委2打分:");scanf("%f",&Sin[i].singScore1.A[1]);printf("歌曲1的专业评委3打分:");scanf("%f",&Sin[i].singScore1.A[2]);printf("歌曲1的专业评委4打分:");scanf("%f",&Sin[i].singScore1.A[3]);printf("歌曲1的专业评委5打分:");scanf("%f",&Sin[i].singScore1.A[4]);printf("歌曲1的专业评委打分:"); scanf("%f",&Sin[i].singScore1.P2);printf("歌曲2的名称:");scanf("%s",Sin[i].singName2);printf("歌曲2的大众评委打分:"); scanf("%f",&Sin[i].singScore2.P1); printf("歌曲2的专业评委1打分:"); scanf("%f",&Sin[i].singScore2.A[0]); printf("歌曲2的专业评委2打分:"); scanf("%f",&Sin[i].singScore2.A[1]);printf("歌曲2的专业评委3打分:"); scanf("%f",&Sin[i].singScore2.A[2]); printf("歌曲2的专业评委4打分:"); scanf("%f",&Sin[i].singScore2.A[3]);printf("歌曲2的专业评委5打分:"); scanf("%f",&Sin[i].singScore2.A[4]); printf("歌曲2的专业评委打分:"); scanf("%f",&Sin[i].singScore2.P2);printf("该歌手的总成绩:");scanf("&f",&Sin[i].sum);save();N++;system("pause");}}void name_Delete() /*按照姓名删除歌手信息*/{int i,j=0;char a[20];printf("\n输入一个歌手的姓名");scanf("%s",a);for(i=0;i<N;i++)if(strcmp(Sin[i].singerName,a)==0){Sin[i].num=Sin[i+1].num;/*编号*/strcpy(Sin[i].singerName,Sin[i+1].singerName);/*歌手名*/strcpy(Sin[i].singName1,Sin[i+1].singName1);/*歌曲1名称*/strcpy(Sin[i].singName2,Sin[i+1].singName2);/*歌曲2名称*/Sin[i].singScore1=Sin[i+1].singScore1;/*歌曲1得分*/Sin[i].singScore2=Sin[i+1].singScore2;/*歌曲2得分*/Sin[i].sum=Sin[i+1].sum;/*总得分*/printf("该歌手信息删除成功");N--;//j++;}if(j==0)printf("系统中无该歌手信息");}void dakai()/*定义打开函数*/{FILE *fp;system("cls");if((fp=fopen("filename","rb"))==NULL){printf("文件不存在\n");return;}}void menu()/*定义菜单函数*/{printf(" 歌手成绩管理系统\n");printf("**********************Menu**********************\n");printf(" * 1.输入信息 2.显示信息*\n");printf(" * 3.结果排序 4.信息保存到文件中*\n");printf(" * 5.信息记录到文件中 6.添加信息*\n");printf(" * 7.删除信息8.退出程序*\n");printf("************************************************\n");printf("请选择所要进行的选项:");}void Quit()/*退出函数*/{printf("结束程序"); exit(0);}void menu_select() /*菜单选择*/{int a;int n=3;printf("输入:");scanf("%d",&a);switch(a){case 1:printf("\n");input();break;case 2:printf("\n");output();break;case 3:printf("\n");sort();break;case 4:printf("\n");save();break;case 5:printf("\n");WritetoText(n);break;case 6:printf("\n");Tianjia_a_record();break;case 7:printf("\n");name_Delete();break;case 8:printf("\n"); Quit(); break;}}void main(){struct Singer Sin[200];print();menu();menu_select();}。
C语言课程设计指导书2022
C语言课程设计指导书20221课程设计目标课程设计的目的和要求:1.使学生巩固和加强《C语言程序设计》课程的理论知识。
2.使学生掌握C语言的基本概念、语法、语义和数据类型的使用特点。
3.使学生掌握C语言程序设计的方法及编程技巧,能正确使用C语言编写程序。
8.初步掌握开发一个小型实用系统的基本方法:结合实际应用的要求,使课程设计既覆盖知识点,又接近工程实际需要。
通过激发学习兴趣,调动学生主动学习的积极性,并引导他们根据实际编程要求,训练自己实际分析问题的能力及编程能力,并养成良好的编程习惯。
9.培养学生的创新能力和创新思维。
学生可以根据指导书和相关文献上的参考算法,自己设计出相应的应用程序。
10.培养学生良好的程序设计风格。
在实际编程中,为了提高编程质量,对空行、空格和注释均有要求。
学生在课程设计书写代码时,应该严格按要求处理,以便建立良好的程序设计风格。
2课程设计内容2.1设计环境1、硬件:PC机。
2、软件:操作系统为Win7或Window某p,设计语言为ViualC++6.0或TurboC2.0。
2.2基本要求1.课程设计采取每两人一组,体现团队合作精神,要求选定一人为组长。
2.可以选择老师提供的参考选题(选题方法另行公布),也可以自选,如果自选,需要将自选题目的详细内容以及实现要求提供给老师,老师批准后方可采用(和网上1雷同的一律不批准)。
3.要求有欢迎界面、菜单、数据使用数组、结构体、链表等均可,键盘操作或鼠标操作均可;可以加以其他功能或修饰,使程序更加完善、合理;4.模块化程序设计:要求在设计的过程中,按功能定义函数或书写多个文件,进行模块化设计,各个功能模块用函数的形式来实现;5.学生所选课题必须上机通过,并获得满意的结果;6.设计上交内容:设计报告每组一份(按附件1的格式书写);源程序文件;7.流程图要采用N-S流程图;10.源程序书写风格:锯齿型书写格式。
2.3设计过程1.根据问题描述,设计数据存储方式;2.分析系统功能,划分功能模块,确定各模块函数名称;3.主程序算法设计和各模块算法设计;4.编程实现;5.调试和测试;6.完成设计文档和课程设计说明书。
c语言程序设计课程设计
c语言程序设计课程设计一、教学目标本课程的教学目标是使学生掌握C语言程序设计的基本概念、语法和编程技巧,培养学生独立思考、解决问题的能力,并培养学生的逻辑思维和团队合作精神。
具体分为以下三个维度:知识目标:学生需要掌握C语言的基本语法、数据类型、运算符、控制结构、函数、数组、指针等概念,理解程序设计的基本原理和方法。
技能目标:学生能够运用C语言独立编写和调试程序,解决实际问题,具备一定的程序设计能力和创新思维。
情感态度价值观目标:学生通过课程学习,培养对计算机科学和程序设计的兴趣和热情,增强自主学习意识和团队合作精神,树立正确的创新观念和职业道德。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据类型、运算符、控制结构、函数、数组、指针等知识点,具体涵盖如下:1.C语言概述:介绍C语言的历史、特点和应用领域。
2.基本语法:变量、常量、数据类型、运算符、表达式等。
3.控制结构:顺序结构、选择结构、循环结构等。
4.函数:函数的定义、声明、调用、返回值等。
5.数组和指针:一维、二维数组,指针的概念、运算、应用等。
6.字符串:字符串的基本操作、常用函数等。
7.结构体和联合:结构体的定义、使用,联合的概念等。
8.文件操作:文件的打开、关闭、读写等。
三、教学方法本课程采用多种教学方法,以激发学生的学习兴趣和主动性,包括:1.讲授法:教师讲解基本概念、语法和编程技巧,引导学生理解并掌握知识。
2.案例分析法:通过分析实际案例,让学生学会将理论知识应用于实际问题。
3.实验法:学生动手编写和调试程序,培养实际编程能力和创新思维。
4.小组讨论法:学生分组讨论问题,培养团队合作精神和沟通能力。
四、教学资源本课程的教学资源包括以下几个方面:1.教材:《C语言程序设计》(简称教材),为学生提供系统、全面的知识体系。
2.参考书:提供拓展阅读资料,帮助学生深入理解C语言及相关技术。
3.多媒体资料:包括课件、教学视频等,辅助学生更好地学习课程内容。
c语言课程设计毕业论文课程设计
c语言课程设计毕业论文课程设计一、课程目标知识目标:1. 学生能理解C语言在毕业论文课程设计中的应用和重要性。
2. 学生能掌握C语言的基本语法、数据类型、运算符和控制结构等核心知识。
3. 学生能运用C语言编写简单的程序,实现对毕业论文相关数据的处理和分析。
技能目标:1. 学生能够运用C语言编写具有实际意义的程序,解决毕业论文中遇到的问题。
2. 学生能够熟练使用C语言的调试工具,对程序进行调试和优化。
3. 学生能够撰写规范的程序文档,为毕业论文的撰写打下基础。
情感态度价值观目标:1. 学生通过学习C语言课程设计,培养对计算机编程的兴趣和热情。
2. 学生在课程设计中学会合作与交流,培养团队精神和解决问题的能力。
3. 学生能够认识到编程在解决实际问题中的价值,增强学以致用的意识。
课程性质:本课程为实践性较强的课程,旨在培养学生的编程能力和实际应用能力。
学生特点:学生已具备一定的C语言基础,但实际应用能力有待提高。
教学要求:教师需结合实际案例,引导学生运用所学知识解决问题,注重培养学生的动手能力和创新意识。
教学过程中,将课程目标分解为具体的学习成果,便于后续教学设计和评估。
二、教学内容本课程教学内容主要包括以下几部分:1. C语言基础知识回顾:数据类型、变量、常量、运算符、表达式等,对应教材第1-3章。
2. 控制结构:顺序结构、分支结构、循环结构,对应教材第4-6章。
3. 函数:函数定义、调用、参数传递、递归,对应教材第7章。
4. 数组与字符串:一维数组、二维数组、字符串操作,对应教材第8-9章。
5. 指针:指针概念、指针与数组、指针与函数、指针与字符串,对应教材第10章。
6. 结构体与文件:结构体定义、结构体数组、结构体与函数、文件操作,对应教材第11-12章。
7. 课程设计实践:结合毕业论文课题,运用所学知识进行程序设计和实现。
教学内容安排和进度如下:1. 第1-2周:C语言基础知识回顾,着重强化数据类型和运算符的应用。
大一c语言课程设计
大一c 语言课程设计一、课程目标知识目标:1. 理解C语言的基本语法和结构,掌握变量声明、数据类型、运算符和表达式等基础知识;2. 学会使用控制结构(如顺序、选择、循环)进行程序设计,培养逻辑思维能力;3. 熟悉函数的定义和调用,掌握模块化编程方法,提高代码复用性;4. 了解数组、指针和字符串的使用,为后续数据结构学习打下基础。
技能目标:1. 能够运用C语言编写简单的程序,解决实际问题;2. 学会使用调试工具,具备调试程序的能力;3. 掌握基本的编程规范和技巧,提高编程质量;4. 培养良好的编程习惯,如注重代码可读性和维护性。
情感态度价值观目标:1. 激发学生对计算机编程的兴趣,培养主动学习和探究的精神;2. 培养学生的团队协作意识,学会与他人分享和交流编程经验;3. 增强学生的自信心,勇于面对编程过程中的困难和挑战;4. 强调编程在现实生活中的应用价值,提高学生对社会责任的认识。
本课程针对大一学生,结合C语言课程性质,注重理论与实践相结合,旨在培养学生具备初步的编程能力和逻辑思维能力。
课程目标明确,分解为具体的学习成果,以便于教学设计和评估。
在教学过程中,教师将关注学生的个体差异,提供有针对性的指导,帮助学生达成课程目标。
二、教学内容1. C语言概述:介绍C语言的发展历程、特点和应用领域,引导学生了解C语言的重要性。
教材章节:第一章 C语言概述2. 基本语法:讲解变量声明、数据类型、常量和变量、运算符和表达式等基本概念。
教材章节:第二章 基本语法3. 控制结构:阐述顺序结构、选择结构(if-else、switch)和循环结构(for、while、do-while)的使用方法。
教材章节:第三章 控制结构4. 函数:介绍函数的定义、声明、调用和返回值,重点讲解模块化编程思想。
教材章节:第四章 函数5. 数组与字符串:讲解一维数组、二维数组的定义和使用,以及字符串的基本操作。
教材章节:第五章 数组与字符串6. 指针:介绍指针的概念、指针与变量的关系、指针运算和指针数组等。
C语言课程设计报告
课程设计报告课程设计名称:C语言课程设计课程设计题目:猜数游戏院(系):计算机与信息工程学院专业:计算机科学与技术班级:学号:姓名:指导教师:完成日期:年月日《程序设计基础》课程设计报告目录第1章概要设计 (2)1.1题目的内容与要求 (2)1.2总体结构 (2)第2章详细设计 (3)2.1主模块 (3)2.2显示模块 (4)2.3分词模块 (5)2.4替换模块 (5)第3章调试分析 (6)第4章使用说明与执行结果 (7)参考文献 (9)附录(程序清单) .................................................................. 错误!未定义书签。
第1章概要设计1.1题目的内容与要求内容:由计算机产生一个一定范围内随机数,用户输入数据去猜,猜中即胜;猜不中,提示是大了还是小了,继续猜,直至猜中为止,要求给出所用时间和评语。
应用程序操作界面应简单、直观、大方。
要求:本节内容参照任务书,但是不要照抄,用自己的话描述1)独立完成系统的设计、编码和调试;2)系统利用C语言实现;3)按照课程设计规范书写课程设计报告;4)熟练掌握基本的调试方法,并将程序调试通过。
1.2总体结构本程序主要分为四个模块(功能模块图见图1.1):主模块,判断模块,时间模块,显示模块。
判断模块:判断是否有返回值及所猜数值与随机产生数的大小比对,进行及时提示。
时间模块:建立一个时间模块,为游戏记录猜对所用时间。
替换模块:对指定的单词进行替换。
显示模块:输入所猜数值,显示猜的是否正确,及提示和评语。
图1.1 功能模块图第2章详细设计2.1主模块控制整个程序的运行,通过主函数模块分别调用各个模块,实现各项功能,流程如图2.1所示。
注释:1.X=1的判断是一个人while循环,用来判断是否有返回值,若无返回值(x=0),即说明已答对即说明已答对2.输入所猜数guss与系统随机生成数index进行比对,根据大小进行提示,循环进行,直至猜对2.2判断模块输入所猜数值,与系统随机产生的数进行比较,并将比较结果输出,提示游戏者重新猜数,流程如图2.2所示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数值分析上机实验报告东北大学软件2011年姓名闫三木学号20093514 班级软件工程0908 指导教师邵新慧实验名称曲线拟合最小二乘法线性方程组迭代法开设学期2010 – 2011第二学期评定成绩评定人签字评定日期课题三 解线性方程组的迭代法一. 实验内容1、设线性方程组⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡--------------------------136824381004120291372642212341791110161035243120536217758683233761624491131512013012312240010563568000121324⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡10987654321x x x x x x x x x x =⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡-2119381346323125x *= ( 1, -1, 0, 1, 2, 0, 3, 1, -1, 2 )T 2、设对称正定阵系数阵线方程组⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡----------------------19243360021411035204111443343104221812334161206538114140231212200420424⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡87654321x x x x x x x x = ⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡---4515229232060x * = ( 1, -1, 0, 2, 1, -1, 0, 2 )T 3、三对角形线性方程组⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡------------------4100000000141000000001410000000014100000000141000000001410000000014100000000141000000001410000000014⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡10987654321x x x x x x x x x x = ⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡----5541412621357x *= ( 2, 1, -3, 0, 1, -2, 3, 0, 1, -1 )T试分别选用Jacobi 迭代法,Gauss-Seidol 迭代法和SOR 方法计算其解。
二. 实验要求1、体会迭代法求解线性方程组,并能与消去法做以比较;2、分别对不同精度要求,由迭代次数体会该迭代法的收敛快慢;3、对方程组2,3使用SOR 方法时,选取松弛因子ω=0.8,0.9,1,1.1,1.2等,试看对算法收敛性的影响,并能找出你所选用的松弛因子的最佳者;4、给出各种算法的设计程序和计算结果。
三. 目的和意义1、通过上机计算体会迭代法求解线性方程组的特点,并能和消去法比较;2、运用所学的迭代法算法,解决各类线性方程组,编出算法程序;3、体会上机计算时,终止步骤∞+-)()1(k k x x < ε 或k >(予给的迭代次数),对迭代法敛散性的意义;4、体会初始解 x )0(,松弛因子的选取,对计算结果的影响。
四. 流程图设计 1.主要部分流程2.Jacobi 算法流程3.GS 算法流程图4.SOR算法流程五.结构程序设计#include<iostream>using namespace std;#define N 40const int n=10;int jacobi(fl oat *p,float b[],fl oat X[],fl oat x[],int n); int GS(float *p,fl oat b[],float X[],float x[],int n); int SOR(float *p,fl oat b[],float X[],float x[],int n); void print(fl oat *a,int r);void main(){fl oat A[10][10]={4,2,-3,-1,2,1,0,0,0,0,8,6,-5,-3,6,5,0,1,0,0,4,2,-2,-1,3,2,-1,1,9,4,0,-2,1,5,-1,3,-1,1,9,4,-4,2,6,-1,6,7,-3,3,2,3,0,2,-1,3,-4,2,5,3,0,1,16,10,-11,-9,17,34,2,-1,2,2,4,6,2,-7,13,9,2,0,12,4,0,0,-1,8,-3,-24,-8,6,3,-1};fl oat a[10]={7,5,-13,2,6,-12,14,-4,5,-5};fl oat X1[10]={0,0,0,0,0,0,0,0,0,0};fl oat x1[10];fl oat B[8][8]={4,2,-4,0,2,4,0,0,2,2,-1,-2,1,3,2,0,-4,-1,14,1,-8,-3,5,6,0,-2,1,6,-1,-4,-3,3,2,1,-8,-1,22,4,-10,-3,4,3,-3,-4,4,11,1,-4,0,2,5,-3,-10,1,14,2,0,0,6,3,-3,-4,2,19};fl oat b[8]={0,-6,6,23,11,-22,-15,45};fl oat X2[8]={0,0,0,0,0,0,0,0};fl oat x2[8];fl oat C[10][10]={4,-1,0,0,0,0,0,0,0,0,-1,4,-1,0,0,0,0,0,0,0,0,-1,4,-1,0,0,0,0,0,0,0,0,-1,4,-1,0,0,0,0,0,0,0,0,-1,4,-1,0,0,0,0,0,0,0,0,-1,4,-1,0,0,0,0,0,0,0,0,-1,4,-1,0,0,0,0,0,0,0,0,-1,4,-1,0,0,0,0,0,0,0,0,-1,4,-1,0,0,0,0,0,0,0,0,-1,4};fl oat c[10]={7,5,-13,2,6,-12,14,-4,5,-5};fl oat x3[10];fl oat X3[10]={0,0,0,0,0,0,0,0,0,0};fl oat *p[3];p[0]=&A[0][0];p[1]=&B[0][0];p[2]=&C[0][0];cout<<"Jacobi迭代法解第1个方程:"<<endl; jacobi(p[0],a,X1,x1,10);cout<<"Jacobi迭代法解第2个方程:"<<endl; jacobi(p[1],b,X2,x2,8);cout<<"Jacobi迭代法解第3个方程:"<<endl; jacobi(p[2],c,X3,x3,10);cout<<"Gauss-Seidel迭代法解第1个方程:"<<endl; GS(p[0],a,X1,x1,10);cout<<"Gauss-Seidel迭代法解第2个方程:"<<endl; GS(p[1],b,X2,x2,8);cout<<"Gauss-Seidel迭代法解第3个方程:"<<endl; GS(p[2],c,X3,x3,10);cout<<"SOR迭代法解第1个方程:"<<endl;SOR(p[0],a,X1,x1,10);cout<<"SOR迭代法解第2个方程:"<<endl;SOR(p[1],b,X2,x2,8);cout<<"SOR迭代法解第3个方程:"<<endl;SOR(p[2],c,X3,x3,10);}int jacobi(fl oat *p,float b[],fl oat X[],fl oat x[],int n) {int k,i,j;fl oat m,R,r,e;cout<<"请输入精度e:";cin>>e;for(k=0;k<N;k++){R=0;for(i=0;i<n;i++){m=0;for(j=0;j<n;j++){m=m+(*(p+i*n+j))*X[j];}x[i]=X[i]+(b[i]-m)/(*(p+i*n+i));r=x[i]-X[i];if(r<0)r=X[i]-x[i];if(r>R)R=r;}print(x,n);cout<<"迭代次数为:"<<k+1<<endl;return k;}for(j=0;j<10;j++)X[j]=x[j];}print(x,n);cout<<"迭代次数为:"<<k<<endl;cout<<"方程解发散,无法用Jacobi方法解此方程!"<<endl; return 0;}int GS(float *p,fl oat b[],float X[],float x[],int n){int i,j,k;fl oat t,R,r,e;cout<<"请输入精度e:";cin>>e;for(k=0;k<N;k++){for(i=0;i<n;i++){t=0;for(j=0;j<n;j++){if(j<i)t+=(*(p+i*n+j))*x[j];if(j>i)t+=(*(p+i*n+j))*X[j];}x[i]=(b[i]-t)/(*(p+i*n+i));}for(i=0;i<10;i++){r=x[i]-X[i];if(r<0)r=X[i]-x[i];}if(R<=e&&R>0){print(x,n);cout<<"迭代次数为:"<<k+1<<endl;return k;}for(j=0;j<8;j++)X[j]=x[j];}print(x,n);cout<<"迭代次数为:"<<k<<endl;cout<<"方程解发散,无法用Gauss-Seidel方法解此方程!"<<endl; return 0;}int SOR(float *p,fl oat b[],float X[],float x[],int n){int i,j,k;fl oat t,R,r,e,w;cout<<"请输入松弛因子w(0<w<2):";cin>>w;cout<<"请输入精度e:";cin>>e;for(i=0;i<n;i++)x[i]=X[i];for(k=0;k<N;k++){R=0;for(i=0;i<n;i++){t=0;for(j=0;j<n;j++)t+=(*(p+i*n+j))*x[j];r=w*(b[i]-t)/(*(p+i*n+i));x[i]+=r;if(r<0)r=-r;R=r;}if(R<=e&&R>0){print(x,n);cout<<"迭代次数:"<<k+1<<endl;return k;}}print(x,n);cout<<"迭代次数:"<<k<<endl;cout<<"方程解发散,无法使用SOR方法解此方程!!!!"<<endl; return 0;}void print(fl oat *a,int n){int j;fl oat *t=a;cout<<"x=( ";for(j=0;j<n-1;j++)cout<<*(t+j)<<",";cout<<*(t+j)<<")"<<endl;}六.结果讨论和分析程序运行截图:七.小结和体会通过这次实验,我对线性方程组的迭代算法有了更深的理解。