c语言课程设计说明

2024-06-19

c语言课程设计说明(共9篇)

篇1:c语言课程设计说明

一 问题描述与分析

假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开学学期等信息,学生可按要求(如总学分不得少于60)自由选课。试设计学生选修课程系统,使之能提供以下功能:

1.课程信息录入功能(课程信息用文件保存)2.课程信息浏览功能 3.排序:按总学时排序

4.查询功能:按开学学期查询 5.课程修改,删除(可选项)

二 总体设计

根据题目要求,定义结构体类型如下: struct subjects { char no[10];char name[20];char kind[20];int stime;

/*总学时*/ int ttime;

/*授课学时*/ int etime;

/*实验或上机学时*/ float score;int term;}sub[N];

三 详细设计

1)存储结构的选择

在这个程序中,我们选择用结构体数组来存储课程,即顺序存储结构 Struct subjects sub[N] 2)系统初始化

这个模块的主要功能是得到初始的课程。为了实现“一次输入,多次使用”,我们用文件来保存课程。第一次运行本程序需从键盘输入所有课程并保存到文件中,以后运行就可以从文件中读取数据,直接使用了。这样既可以减少输入的麻烦,更重要的是使本程序可以连续运行,每次运行都可以使用上一次保存的结果。void newfile(){ int i;FILE *fp;if((fp=fopen(“sub.dat”,“wb”))==NULL){

printf(“文件建立失败!请重新运行程序。n”);

exit(0);

} } printf(“请输入课程门数”);scanf(“%d”,&num);for(i=0;i

3)课程浏览功能 按课程编号进行浏览 void read1(){ FILE *fp;num=0;fp=fopen(“sub.dat”,“r”);if(fp==NULL){

printf(“文件打开失败!请重新运行程序。n”);

exit(0);} while(!feof(fp)){

fread(&sub[num],1,sizeof(struct subjects),fp);

num++;} num--;fclose(fp);printf(“现在共有%d门课程,初始数据为:n”,num);output();} 3

4)排序

按总学时排序:使用改进的起泡法排序。void sortstime(){ int i,j,flag;struct subjects temp;for(i=0;i

flag=0;

for(j=0;j

if(sub[j].stime

{

temp=sub[j];

sub[j]=sub[j+1];

sub[j+1]=temp;

flag=1;

}

if(flag==0)

break;}printf(“排序后的课程为:n”);output();} 4

5)查找(总学时)

按开学学期查询,查找用顺序查找法。void find(){ int i,cterm;printf(“请输入要查找课程的开学学期:n”);getchar();scanf(“%d”,&cterm);i=findterm(cterm);if(i==-1)

printf(“要查找的学期不存在:n”);else {

printf(“查找到的课程信息为:n”);

printf(“课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,总学分,开学学期:n”);

printf(“===================================n”);

printf(“%st%-10st%st%dt%dt%dt%.1ft%dt”,sub[i].no,sub[i].name,sub[i].kind,sub[i].stime,sub[i].ttime,sub[i].etime,sub[i].score,sub[i].term);

printf(“n”);} } int findterm(int cterm[]){

} int i;for(i=0;i<=num;i++)if(cterm-sub[i].term==0)

return i;return-1;

6)参考文献

C语言指导书。7)心得体会

通过对课程精心设计,我从中获得了不少东西:

1.我知道一些自己不太熟悉的知识,比如文件系统中的好多知识; 2.从中懂得了合作的重要性,这是以前没注意的;

3.也锻炼了自己的思维能力,可以把一整块东西分成若干个小块来处理; 4.在锻炼的同时,自己得到了一种满足感。

篇2:c语言课程设计说明

课程设计说明书

学 院、系: 专

业: 学 生 姓 名:

设 计 题 目: 班

软件学院 软件工程 学 号:

C语言关键字中英翻译机

起 迄 日 期: 2013年10月11日~2013年11月16日 指 导 教 师:

日期: 2013年11月16日

何志英

设计目的

在尽可能大的词库下通过简易的程序快速的运行出来结果。任务概述

要求输入中文的名词和关键字,可以将其翻译成英语,如输入“基本整型”+回车,得到int;输入英文的单词int,则可以翻译成中文“基本整型”。若输入的不是关键字则要求继续输入,可以多次查询。输入bye时退出程序。模块划分

a)主函数main()

b)函数Yinghan()c)函数Hanying()主要函数说明及其N-S图

a)主函数main()

图4.1

函数实现功能:该函数功能是判断用户是进入英汉函数查找中文关键字还是进入汉英函数查找英文关键字以及通过strcmp语句实现返回主菜单和退出程序的功能。

参数意义:定义字符数组k[m]用来存放用户输入的内容e(进入英汉函数)或c(进入汉英函数)或u(返回上一级)或bye(退出程序)。而x[n][m]和y[n][m]这两个二维数组是用来做词库用的。

b)函数Yinghan()

图4.2 函数实现功能:输入中文关键字就可以通过在词库中查找相应的英文释意,如果词库中无用户输入的中文关键词的释意的话则输出“查找不到该单词”,如果用户输入“u”的话,则会返回主菜单。参数意义:x[n][m]和y[n][m]这两个二维数组是从主函数main调用的。而k[m]则是存放用户输入的中文关键字。

c)函数Hanying()

图4.3 函数实现功能:输入英文关键字就可以通过在词库中查找相应的中文释意,如果词库中无用户输入的英文关键词的释意的话则输出“查找不到该单词”,如果用户输入“u”的话,则会返回主菜单。参数意义:x[n][m]和y[n][m]这两个二维数组是从主函数main调用的。而k[m]则是存放用户输入的 英文关键字。程序运行数据及其结果

1)进入程序后显示主菜单界面

2)输入“e+回车”进入英汉词典,用来查找中文释意。

3)输入“c+回车”进入汉英词典,用来查找英文释意。

4)翻译

5)按“u+回车”返回主菜单

6)找不到关键字:输入词库中没有的关键字

7)按“bye+回车”退出程序,要在主菜单中退出。

课程设计心得

A.发现问题和解决方法:

a)在程序调试的过程中,一开始没有用二维数组存放词库,而是用一维数组,结果发现一维数组并不能很好的运行“在词库中找不到单词”这个语句,后来改用二维数组,不仅可以存放更多的单词以及解决了“找不到单词”这个语句。b)第二个困扰我的问题就是“按u返回主菜单这个语句”,一开始这个功能是我在网上搜集资料时看到的,但要把这个功能加入我的函数就要进行改进了,因为我使用的是调用函数,所以我利用两个while语句,外围的while语句实现了返回主函数的功能,而回到主函数就回到了主界面。

c)调试过程中还会出现一些零零总总的语法错误,这些语法错误是容易纠正的,就像有时会漏掉“;”“}”这些符号。

B.心得:

课程设计是锻炼我们实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程,在当今这个信息时代,拥有计算机开发实践能力十分重要。通过这次的课程设计,我对C语言这门课程又有了更深的了解。自从拿到题目到完成整个编程,从理论到实践,我觉得我学到很多很多的的东西,同时不仅巩固了以前所学过的知识,并且学习到了一些在书本上所没有的知识。我觉得这是一场理论和实践的相结合的实战,光有理论知识而没有实践动手能力是无法完成任务的,我们要从理论中得出结论,在实践中应用。从而提高自身的综合能力。在设计的过程中,我们能及时发现自己的不足,进而查缺补漏,温故知新。

附录:

#include #include #include #define n 10 #define m 100 void yinghan(char x[n][m],char y[n][m])//该函数的作用是:英汉词典 { char k[m],k1[m]={“u”};//字符数组k[m]的作用是:保存输入的单词

int i;printf(“如果要返回主菜单,输入u n”);while(1){

while(1)

{

printf(“请输入英语单词: ”);

gets(k);

if(strcmp(k,k1)==0)break;//如果输入的单词为u则退出该循环

for(i=0;i

if(strcmp(k,x[i])==0)break;//如果数组x[n][m]中的一个单词与输入的单词相同时则退出循环

if(i>=n)printf(“抱歉,查找不到该单词n”);

else printf(“%s的意思为:%s n”,k,y[i]);

}

if(strcmp(k,k1)==0)break;//入输入的单词为u则退出该循环返回主菜单

} }

void hanying(char x[n][m],char y[n][m])//该函数的作用是:汉英词典 { char k[m],k1[m]={“u”};int i;printf(“如果要返回主菜单,输入u n”);while(1){

while(1)

{

printf(“请输入汉语: ”);

gets(k);

if(strcmp(k,k1)==0)break;//如果输入的单词为u则退出该循环

for(i=0;i

if(strcmp(k,y[i])==0)break;//如果数组y[n][m]中的一个汉语词与输入的单词相同时则退出循环

if(i>=n)printf(“抱歉,查找不到该单词n”);

else printf(“%s的意思为:%s n”,k,x[i]);

}

if(strcmp(k,k1)==0)break;//入输入的单词为u则退出该循环返回主菜单

} } void main(){

char k[m];char x[n][m]={“auto”,“break”,“do”,“else”,“float”,“double”,“if”,“switch”,“register”,“int”};char y[n][m]={“自动”,“中断”,“循环体”,“否则”,“单精度”,“双精度”,“如果”,“开关”,“寄存器”,“整形”};while(1){

printf(“t|*********************电子词典模拟软件*********************|n”);printf(“t 1.先选择词典:输入字母e/c选择英汉还是汉英词典n”);printf(“t 2.输入要查询的词,回车结束输入n”);printf(“t 3.输入字母u返回主菜单,重新选择词典n”);printf(“t 4.退出:主菜单下输入字母 bye 退出此此电子词典程序n”);printf(“t|******************** All rights reserved******************|n”);

printf(“输入字母e/c选择英汉还是汉英词典 n”);

gets(k);

if(strcmp(k,“e”)==0)yinghan(x,y);//如果输入的字符数组等于e则执行英汉词典

else if(strcmp(k,“c”)==0)hanying(x,y);//如果输入的字符数组等于c则执行汉英词典

else if(strcmp(k,“u”)==0);//如果输入的字符数组等于u则返回主菜单

else if(strcmp(k,“bye”)==0)break;//如果输入的字符数组等于bye则退出程序

篇3:C语言程序设计课程教学探析

一、影响教学效果的关键问题及相应对策

1. 学生学习兴趣不高。

学生对难以理解的概念、术语及语法规则、枯燥无味的例题感觉找不到头绪,认为C语言枯燥、难学,有厌倦心理。部分学生不知学为何用而不感兴趣,部分学生觉得它难学而厌学,还有部分学生学而不得法,不知如何学,教学效果和学习效果均不甚理想。

如何激发学习兴趣,增强学生信心,成为该课程教学设计的关键。首先用应用程序展示C语言的结构、特点,讲明学习C语言是掌握编程能力的必由之路。授课过程中应采用互动式教学,多举一些有趣、实际的例题,每一个例题都与新知识、新概念相关联,完成一个任务也就学到了新知识、新概念。这种“练——学——练一—学”的循环过程让学生学得轻松、学得愉快,使枯燥乏味的理论在生动多样的实际问题中逐步为学生理解、接受和掌握。

2. 传统教学方法的局限性。

计算机语言课一直是“讲概念——分析概念——例题讲解——上机操作”的教学模式。以教师“教”为中心,学生处于被动的接受状态,这种“填鸭式”使师生之间交互少,学生“做”得更少,理论与实践脱节,表现于学生“听得懂,不会编”的现象。“很难培养学生在程序设计上的创新能力和逻辑思维能力,这就给后续课程的教学、毕业设计乃至学生日后从事的工作留下了隐患。”

要突出对学生编程能力的培养,应把解题思路当作授课重点,理解如何用程序设计方法分析、解决问题,建立正确的思维模式。教学内容的组织形式应该是“提出问题——介绍解决问题的方法——归纳出概念或一般规律”,教会学生如何运用C语言编写程序,一些细节、具体规则可以让学生自学,结合提问将问题层层剖析、逐步深入,达到师生互动的效果,充分发挥学生的想象力,以学生自学为主,以教师指导为辅。

3. 实验、考核环节。

不重视实验、考试环节,会使实验只是走过场,无人监管,达不到实验的目的;而单一的考试形式,无法真正测评出学生对所学知识的掌握,二者都影响对学生编程能力的培养。

该课程实践性强,只靠听讲,难以记住,必须多阅读、编写、调试程序才能自然地、熟练地掌握。实验可设计为例题验证、程序修改、独立编程三个层次。例题验证使学生进一步理解基本概念和语法,并树立信心;程序修改是让学生根据课堂中讲过的知识点填充,给予学生发挥的余地;独立编程则要求学生阅读教材和相关资料掌握实验所涉及到的知识,独立完成实验项目。教师只起答疑、解惑的作用,引导和激发学生程序设计欲望和创新动力。

考试应采用机考,以综合性、应用型题目为主,并应增加学生平时实践操作能力所占分值的比例。

二、将软件工程思想、项目驱动教学法融入教学中

1. 注重程序设计风格的培养。

编写程序只有正确性远远不够,必须是可维护的、健壮的、并具有良好的界面风格,要求代码简单、清晰、添加适当的注释,使程序具有可读性;用缩进、空行增加层次感,使程序逻辑清晰,好理解,可维护。现在的程序都是程式化、团队式的开发,每个程序员都按照统一的要求编写程序,保证程序清晰、易维护。学习C语言也是一个养成书写程序习惯的过程,在这个阶段如果养成了不好的习惯,以后将很难改掉,教学中要特别予以重视。

2. 教学中期采用项目驱动教学法。

项目驱动教学法是指在教学过程中以一个项目为主线来展开教学,把相关的知识点融入到项目的各个环节中去,层层推进项目。通过对问题的深化或功能的扩充,来拓宽知识的广度和深度,直至得到一个完整的项目解决方法,从而达到学习知识、培养能力的目的。

学生初步掌握了C语言的数据类型、运算符、表达式三种基本结构后,引入一个精心选择的项目,如学生成绩管理系统。先对项目进行需求分析、设计,而不是急于编代码,避免一边想,一边修改;用流程图、N-S图、PAD图等工具描述模块算法,然后编码。采用项目驱动教学法,把课程的主要知识点分解到各个具体模块,例如,项目初期采用一维数组存放学生成绩,用数组名调用排序函数,随着教学的深入,采用结构数组存储信息,用结构指针调用函数,使教学内容前后衔接,运用自如;随着函数定义、调用、参数传递、变量作用域等概念的学习,运用指针、数组、结构体、文件读写等操作完成项目各个任务,并将软件生命周期各个阶段的任务穿插到教学中,循序渐进、潜移默化地把软件工程思想贯穿教学全过程,使学生在学习程序设计的同时,也掌握了软件工程思想,对培养和提高学生编程能力有极其重要的作用。

3. 培养学生程序调试、测试的能力。

在测试项目各个模块功能时,介绍白盒测试和黑盒测试的概念,使学生懂得测试用例设计不仅要有合理的输入数据,还要有不合理的输入数据;随着教学的不断深入,将各个模块逐个添加到系统中,符合自顶向下增量集成的测试方式,减少了错误数量和测试难度,可向学生灌输集成测试、确认测试的概念,这是完成大型项目开发的必要环节;引导学有余力的学生编写新的模块来完善系统功能,发挥他们的想象力和创造力,使学生始终保持浓厚的学习兴趣。完成一个相对完整的应用程序开发,会有一种“从一盘散沙到一串珍珠”的感觉,既培养了学生自学能力和独立分析、解决问题的能力,又使其了解了软件工程思想,在其后续学习中达到事半功倍的效果。

对于综合型项目,将学生每3-5人分为一组,从需求分析、系统设计、代码编写到程序调试、运行,整个过程都在小组内协作完成,他们一起研究、探讨、设计,再经过思考、改进,不断完善,教师只起一个点拨和指导作用,选出成功的小组经验在全班讲评,促进整体编程能力提高。

三、结束语

篇4:c语言课程设计说明

关键词数据要求说明表C语言程序设计

C语言程序设计是电子信息类专业学习程序设计的入门课程,通过这门课程的学习,期望学生一方面掌握C语言的基本语法和算法。具有运用C编写小程序的能力;另一方面为后续软件系统开发课程的学习打下基础。

在C语言的教学过程中,以往都是要求学生按以下步骤解题:首先分析题意,找出算法;其次根据算法画出流程图;然后依据流程图编写程序;最后上机调试运行程序,分析结果。但是有很多学生在完成了前两步后,进行依据流程图编写程序步骤时,却不知道程序怎么编写了,问其原因。主要是不知道定义哪些数据,定义的数据又应该是什么数据类型。

一、数据要求说明表的引出

计算机程序的实质就是对特定数据进行特定操作。在算法和流程图中解决的是怎样实现对数据进行特定操作的问题,而对于操作的数据并没有说明,但是数据的名称、类型、初值、范围等情况却又是在程序编写过程中首先面对的问题,这就是学生在编写程序时突然卡壳的原因。

实际上,在各种C语言程序设计教材中,都没有对数据进行说明,包括谭浩强教授编写的也没有。为什么会出现这种情况呢?可能是C语言程序设计课程中所出现的问题,都是比较初级的,而对于具有C语言丰富编程经验的教材编写者,当然不会把数据的说明当做一个问题,就是出现数据定义遗漏和类型错误的问题,在程序调试阶段也可以轻松解决。因此,大家都想当然地认为初学者不会出现处理数据情况不明的问题。在这里,我们没有充分考虑学生的认知规律,结果造成了学生对数据的定义和使用的困惑。

根据软件工程的观点,在软件生命周期的需求分析阶段就要求编写《数据要求说明书》的软件文档。在该文档的“数据的逻辑描述”部分列出了静态数据、动态输入数据、动态输出数据、内部生成数据和以上数据的约定。在软件技术专业《程序设计逻辑》课程中,项目首先分析数据,然后绘制一个数据要求说明表。对所有数据进行标识名称、数据类型、使用意义的说明。学生在绘制流程图和编写程序时,数据的定义与使用都依据数据要求说明表进行。效果很好。

如果在C语言程序设计中引入数据要求说明,是否可以解决以上问题呢?

二、数据要求说明表在C语言程序设计中的实战应用

笔者设计的数据要求说明表是一个二维表。每条记录有五个说明字段:标识名称、数据类型、含义、初值、取值范围,前两项对数据定义有帮助,后三项有利于数据的使用,具体见表一。

例1:求两个正整数的最大公约数和最小公倍数。

本题有一个著名的解题算法——欧几里德算法(辗转相除法),但对于高职学生来说,该算法既不容易理解原理,又不容易记忆具体步骤。笔者提出了一种算法效率不高但容易实现的方法:在最大公约数和最小公倍数可以估计的取值范围内逐一判断。

在表1中,m和n是输入求解最大公约数、最小公倍数的两个数,i和j是起辅助作用的两个数据。i是求解最大公约数的循环控制变量,因而初值从取值范围的上界开始;j是求解最小公倍数的循环控制变量,因而初值从取值范围的下界开始。Min(m,n)是m和n的小者;mar(m,n)是m和n的大者,详情见表1。

有了上表,大部分学生很容易地想出算法,并绘制出流程图。在编程过程中,定义和使用数据也心知肚明。

例2:用以下公式求圆周率的近似值(圆周率pi表示)。

Pi14=1-1/3+115-117+……直到最后一项的绝对值小于10-6为止。

这是一道典型累加求和题,该类问题主要关心两个数据:和以及加数。和的表示比较简单,定义为单精度实型变量,初值为零;加数就复杂一点,它由符号、分子、分母三部分组成。有了这些认识,我们可以绘制表2,即求圆周率数据要求说明表。

注意:8、p和q三个变量中至少有一个定义为float型,如果都是int型,结果一定是零。本题各数据变量的取值范围没有讨论,其实在具体应用中,数据的标识名称、数据类型、含义是必填项,初值和取值范围根据实际情况选择填写。

笔者近几年在高职C语言程序设计课程教学过程中,引人数据要求说明的知识,取得了良好的教学效果,一方面帮助学生在定义和使用数据方面掌握了可操作性强的方法,另一方面培养学生形成了良好的编程习惯。

篇5:C语言课程设计

让自己所学的知识应用于实际生活中,理论联系生活,学以致用,我们将更好服务于民。我们是新一代的年轻人,要想将来在社会上更好的立足,就必须让自己强大起来,努力的学习新东西,了解新事物,跟上时代的步伐,这样我们才能与时俱进,不被社会所淘汰。C语言在大学里是一门很重要的课程,也是一门很实用的课程,学好C语言在当今的信息时代是一个很好的敲门砖。而且,我们是电子信息工程专业的,更应该学好C语言,这对我们以后走向社会有很大的帮助,为我们以后大学毕业去求职提升竞争力。从C语言产生到现在,它已经成为最重要和最流行的编程语言之一。在各种流行编程语言中,都能看到C语言的影子,如Java的语法与C语言基本相同。学习、掌握C语言是每一个计算机技术人员的基本功之一。C语言具有高级语言的强大功能,却又有很多直接操作计算机硬件的功能(这些都是汇编语言的功能),因此,C语言通常又被称为中级语言。学习和掌握C语言,既可以增进对于计算机底层工作机制的了解,又为进一步学习其他高级语言打下了坚实的基础。需求分析

当今社会是信息社会,谁的信息越快速越准确,谁就会更好的生活在这个社会上,他的人生也将走向成功。信息业正在21世纪扮演着越来越重要的角色,也是中国十二五规划中的重要一环,因此,我们应该努力的去学习好这门课程,力争在以后的生活工作中大展身手。现在的社会日新月异,各种信息在不断的传递交流,谁最先获取了信息谁就会成功。所以,作为我们这类专业的人才,在毕业以后一定会大显身手,实现自己的人生价值。

2.1 课程设计目的

本课程设计为信息类公共课《计算方法与程序设计》配套的课程设计。是该课程的理论学习的延伸。通过本课程设计有助于锻炼综合运用C语言相关知识设

为1;若n大于1,则开始循环运算(见图3.22流程图),直到i小于n不成立时结束循环。在循环运算的过程中,要调用两个函数即函数pit1和函数pit2(见图3.23流程图)。在调用函数pit1和函数pit2中,这两个函数进行相互递归调用。最后将调用函数pit1和pit2的值返回主函数main函数中,再输出高能质子数目t3和低能质子数目t4。

3.1 系统流程图

程序一系统流程图(如图3.11所示):

开始输入nt1=3,t2=1,i=1否n==0否是n==1是否i

3.2主要模块的流程图

程序一模块流程图如图3.21所示:

否i

图3.21流程图

程序二模块流程图如图3.22和图3.23所示:

i=1否i

图3.22流程图

} {t3=3*t1+2*t2;t4=t1+t2;t1=t3;t2=t4;} printf(“n the high=%d the low=%dn”,t3,t4);

程序代码4.1

程序二代码如下所示:

#include “stdio.h” int pit1(int a){ if(a==1)

} int pit2(int b){ if(b==1)

} main(){ int n,i,t3,t4;printf(“n input n”);scanf(“%d”,&n);if(n==0){ return(1);return(pit1(b-1)+pit2(b-1));else return(3);return(3*pit1(a-1)+2*pit2(a-1));else

图5.11 程序二运行结果:如图5.12(程序运行时,当输入时间变量n是3时,输出高能粒子是41,低能粒子是15。)

图5.12

参考文献

[1 ]张福祥.C语言程序设计[M].辽宁大学出版社,2008.[2] 张福祥,王萌.C语言程序设计习题解答与实验实训.沈阳:辽宁大学出版社,2008. [3] 牛莉,刘远军等.计算机等级考试辅导教程[M].北京:中国铁道出版社,2008. [4]李勇帆,谢兵.大学计算机应用教程.北京:中国铁道出版社,2009. [5]田淑清.全国计算机等级考试二级教程.北京:高等教育出版社,2011. [6]杨振山,龚沛曾.大学计算机基础.北京:高等教育出版社,2006. [7]卢湘鸿.信息技术应用基础.北京:高等教育出版社,2004.

致 谢

篇6:c语言课程设计说明

功能:假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息。试设计一选修课程系统。

分步实施:

1、初步完成总体设计,搭好框架,确定人机对话界面,确定函数个数;

2、建立一个文件,将每条记录信息写入文件中并能显示于屏幕上

3、完成上述添加、查找(课程编号、课程名称、课程性质等)、修改等功能。

4、进一步要求:学生选修课程(可选项)

要求:

1、用C语言实现程序设计;

2、利用结构体数组实现信息的数据结构设计;

3、系统的各个功能模块要求用函数的形式实现;

4、界面友好(良好的人机交互),程序加必要的注释。

课程设计实验报告要求:

1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分。

篇7:c语言课程设计总结

同时,本次课程设计也锻炼了学生利用图书馆和互联网查阅资料的潜力;培养了学生不怕困难、勇于克服困难的精神和耐心细致、严谨的工作作风;提高了他们撰写文档资料的潜力。

一、本次课程设计,我们主要按照以下步骤完成:

1、课程设计动员,布置设计任务,提出要求,给出参考思路,并给出大部分程序代码;

2、学生查阅资料,分析、讨论设计方案;

3、画出系统总体功能框图及各模块的流程图;

4、编写各模块程序;

5、进行模块调试;

6、完成模块联调,进行测试;

7、成果验收,完成设计报告。

二、课程设计过程综述:

1、大部分同学,态度十分认真,对课程设计的各个环节,都很感兴趣,用心性很高,创新性地进行编程和调试,任务完成相当出色,值得学习和表扬。例如:张燕龙、唐晓彤、徐怀刚、王泽连、武蒙蒙等同学。

2、有少部分同学对课程设计的目的和好处认识不足,设计不够认真。主要表此刻设计不能独立思考,编程、调试不能主动用心思考、解决问题等,个别学生甚至在课程设计没有进行任何实质性的工作。

3、也有一部分同学,对所学理论知识掌握不够扎实,不能灵活运用,自己基本上不进行设计,仅仅依靠于同组者。

4、大部分同学的程序调试潜力需要进一步锻炼和提高,这也给我们以后讲授本课程、进行课程设计提出了更高的要求。

三、体会和设想

1、对《C语言》课程的学习,课程设计是十分重要的环节,它对巩固所学理论知识,灵活运用所学知识解决实际问题、锻炼和提高学生的操作和调试技能、学生将来能否尽快适应工作都具有十分重要的实际好处。所以,从校园到老师到每一位学生都应认真对待和珍惜这个机会,严肃认真做好每一步工作,使课程设计圆满完成。

2、透过课程设计,也反映出对C语言中的一些难点资料,如指针、结构体等,大部分学生掌握得不够好,在平时授课中需进一步深入讲解、多加练习,以使学生在本课程学完后对其能有一个全面、熟练的掌握。

3、要使课程设计到达锻炼提高学生技能的目的,还应注意以下几点:

(1)提前布置课程设计任务,可在学期开始就布置下去,使学生在整个学期的C语言学习中都有一个明确的目标和足够的压力,并将课程设计中的资料和出现的有关问题渗透于教学过程中。

(2)务必从思想上使学生对课程设计有足够的重视,并在设计过程中严肃认真检查、督促;

(3)注意课程设计的指导方法,加强预设计过程的检查和指导,不能只给他们“鱼”,而应授之以“渔”;

篇8:《C语言程序设计》课程教学探索

1 培养学生的学习兴趣

由于我院开设的《C语言程序设计》面向的主要是大一的学生, 这些学生中的大部分都对计算机的程序设计语言一无所知, 没有接受过系统的学习, 所以, 一开始接触这门课程, 可能会觉得非常茫然, 感觉无从下手, 因此, 必须在第一次上课时就充分调动起学生的积极性, 培养他们的兴趣和信心。

所以, 老师在上第一次课的时候, 可以先不要着急去介绍C语言的一些比较专业的基本概念和语法规则, 而是从C语言出现的历史背景、C语言的优点以及本课程的开设原因, 给学生们做一个全面的介绍。在介绍C语言的开设原因时, 应该结合学生的具体专业来介绍, 解释C语言与前面课程以及后续课程的关系, 比如C语言和数据结构, C语言和算法的关系等。让学生了解本课程的重要性, 引起学生对本课程的足够重视。通过这样的教学安排, 第一次课基本上可以达到提高学生学习C语言的兴趣, 认识到C语言的重要性, 树立学习C语言的信心的目的。在第一次课激发了学生学习C语言的兴趣和积极性后, 一定不能让学生的热情冷却, 而应该以此为契机, 现场给学生编写一个短小精悍的程序, 运行输出结果, 让学生看到C语言的神奇效果, 激发学生的学习欲望, 积极主动的进入C语言的学习世界。在后续的课堂教学过程中, 采用提出问题分析问题解决问题的方法, 从具体问题入手, 引导学生找出解决问题的方法, 每次介绍新的知识之前, 都应该先精心设计一个或几个包含了新的知识点的实例, 先给学生演示一下程序的运行效果, 让学生先对这些例子产生兴趣, 这对于提高学生学习的自觉性, 活跃课堂气氛可以起到积极的促进作用。最后总结所用的语法和规则, 使得学生对语法的理解更为容易。

2 采用启发、引导的教学方法

《C语言程序设计》本身是一门非常灵活的课程, 任何问题都没有唯一的答案, 也没有最好的答案。因此, 老师在课堂上可以先给出一种程序解答方法, 然后留出一些时间让学生思考, 还有没有其他更好的程序设计方法和思路。比如在讲判断一个数n是不是素数的问题时, 我们可以先从最传统、最容易理解的思路入手, 看看n能不能被2到n-1中的任何一个数整除, 接着我们可以在这个地方稍微停顿一下, 让学生思考一下能不能对这个算法做一下改进, 这时, 有的学生可能会提出把除数的范围缩小到2到n/2, 最后再缩小到2到, 利用这种方法会比老师直接给出用n去除以2到中数的方法让学生印象更加深刻。这样不仅可以巩固学习成果, 提高解决问题的能力, 也可以丰富课堂内容, 起到教学相长的效果。

3 有选择地运用多媒体教学

以前由于教学条件的限制, 教师上课时只能采用传统的黑板教学, 在黑板上面写出程序代码, 说出运行结果, 这样很难让学生对程序运行的过程、函数的调用、参数的传递、变量值的变化认识清楚, 将多媒体教学引入课堂后, 可以在课堂上利用教师机现场演示, 利用VC++的设置断点, 单步跟踪等方法, 一步步演示, 这样学生一看就清楚了。例如在给学生讲数组的时候, 通过下标的方式来访问数组元素, C语言规定, 数组元素的下标是从0到n-1 (n是数组的长度) , 但很多学生在写程序的时候, 往往忽略这一点, 在访问数组元素的时候使用n, 出现下标越界的错误, 这时, 老师便可以在VC的调试环境中, 结合变量的地址或指针的概念, 给学生解释越界出现的原因, 这样才能让学生理解深刻。又例如, 在讲“冒泡”排序算法时, 教师可以用多媒体课件给学生演示排序的经过, 既形象又生动。因此, 在《C语言程序设计》课程教学过程中, 将传统的教学方法和现代多媒体教学相结合, 将大大提高学生的综合思维能力, 达到最佳的教学效果。

4 强化实验环节

《C语言程序设计》是一门实践性很强的课程, 如果只是单纯地在课堂教学, 而没有实验教学, 仍然只是纸上谈兵, 无法真正让学生掌握知识的应用。所以实验环节是整个学习过程中不可缺少的一个重要组成部分。只有让学生动手编写程序, 运行出来结果, 学生才会有成就感, 才会对这门课产生兴趣。但是, 教材上面的题目往往比较注重语法的训练, 而离实际应用较远, 所以, 大部分学生在完成书上题目时比较顺利, 可以一遇到利用C语言来解决实际问题时, 便束手无策, 无从下手了。所以, 为了锻炼学生解决较大型复杂问题的能力, 老师在安排实验课内容时, 可以布置一个大题目作为长期任务, 再按不同功能模块分解开来, 形成一个个短期任务。每次实验课要求学生完成其中一个或几个简单的功能模块, 这样, 每次实验课就好像一条铁链上的一个个铁环, 紧密联系。以“学生信息管理系统”为例, 把这个系统作为一个长期任务, 然后把这个系统划分为若干个小的模块。比如输入输出学生信息、添加学生信息、修改学生信息、查询学生信息等模块。这样, 当学生完成每一个功能模块后, 便发现原来自己实现的是一个复杂的程序。通过这种方法, 一方面可以大大降低学生对大型复杂程序的惧怕心理, 另一方面也可以培养学生结构化程序设计方法的思想。

5 综合考核法

目前, 大部分课程最后的考核方式都是通过考试进行的。但是这种方式不适用于《C语言程序设计》, 这是由课程本身的特点决定的。一方面, 该课程包含了课内实验, 另一方面, C语言是一门实践操作性很强的课程, 光通过选择题、填空题不能真正检验出学生的学习水平, 而应该把考核的重点放在程序的编写和调试上。

所以, 建议本课程最后采用综合考核的方式。考试的方式分为笔试和上机考试。理论考试主要考核学生对理论知识的掌握程度, 上机考试则主要考核学生的动手能力。。最后的总评成绩中还应该包含学生的实验课成绩, 以及课堂表现成绩。这种考核方式增加了对学生学习过程的测评, 这种方法不但能更客观地反映学生的学习情况, 同时也能促进学生自主学习, 起到很好的教学效果。

6 结语

以上是作者在近几年的C语言课程教学过程中总结出来的几点教学经验, 通过上述方法, 在实际的教学过程中取得了良好的教学效果。

摘要:C语言程序设计是理工科学生的必修课, 也是学习计算机语言的入门语言, 本文对C语言程序设计的教学方法进行了探讨, 在提高学生学习兴趣、加强实验环节、改进考核方式等方面提出了几点意见。

关键词:C语言,教学

参考文献

篇9:《C语言程序设计》课程教学研究

随着计算机的日益普及和互联网的飞速发展,以信息产业发展水平为主要特征的综合国力竞争日趋激烈,软件产业作为信息产业的核心和国民经济信息化的基础,越来越受到世界各国的高度重视。软件技术已成为信息社会的运行平台和实施载体,软件技术应用的全面延伸对用于信息处理的软件技术的发展提出了更高要求,同时促进了软件技术和软件行业的飞速发展,软件技术已经成为人们公认的当今发展最为迅速的技术之一。

《C语言程序设计》是软件工程专业的核心基础课程,其教学效果的好坏,对整个专业教学计划能否顺利完成和专业培养目标能否实现有着重要的作用。本文针对软件工程专业的特点,从培养工程应用型人才的实际需求入手,结合笔者自身的教学实践,对《C语言程序设计》课程教学中的问题进行了分析,从课程教学设计与课程实践教学方面提出软件工程专业《C语言程序设计》课程教学的一系列改进措施。

一、课程教学现状

笔者结合多年的教学实践,并通过调查在校往届学生的学习情况发现,《C语言程序设计》课程教学存在一些问题。

(一)教材内容与实践脱节

教师教授理论课时,大多依据教学大纲指定的配套教材进行讲授,实验课的编程题目多数是验证课本上的例程或者理论课教材后的作业。目前,软件工程专业理论课使用的教材大多以傳授基础理论知识为主,虽然一些知识点后给出了相应的实例,但是这些案例比较孤立,缺乏与工程实践的联系,导致学生觉得日常练习的例程枯燥无味,而且不知道如何将基础理论知识应用于工程实践,使自己具备一定的解决问题能力。由于学生所学知识及其方法与工程实践没有有机结合起来,学以致用的工程意识缺乏日积月累的养成土壤,学习的兴趣和动力不知不觉地消失在盲目与盲从之中。

(二)课程考试与实际应用相关性差

《C语言程序设计》是计算机专业学生学习各类专业课程的重要工具性课程,主要培养学生的工程实践能力。通过调查发现,目前该课程考核仍然以闭卷笔试的形式为主,考试内容主要为基础知识点。这样,学生在面对课程考核时,出于应对考试的需要,知识点背一背、记一记,复习课程和政治课、历史课类似。课程考试方式和内容与实际应用较差的相关性导致学生学习动力不足。

二、课程教学设计

事实上,尽管学习动机不尽相同,学生层次有差异,但绝大多数学生能够认识到自己的需要,希望通过学习提高自己的能力。结合学生特点,笔者认为“做中学”和“基于项目教与学”能够较好地提高《C语言程序设计》课程教学质量。

(一)“做中学”统一知与行

“做中学”是比从“听中学”更好的学习方法,符合人类对客观事物规律的认识,能够把书本上的知识与工作生活联系起来,充分结合了学与做。因此,在设计组织教学活动时应注重实践活动的设计,把教学活动与工作生活实际相结合,鼓励学生在实际活动中学习,并将实践中获得的知识与技能有效运用于解决学习、生活和今后工作中的实际问题,即在实践中学习,在学习中实践。

(二)“做中学”最有效的方法就是进行基于项目的学习

一个完整的项目是从分析开始,经历构思、设计、实现和运作的一个完整过程,在学习学科知识的同时能够提高个人产品过程的认知能力和系统建造的能力。在课程的设计过程中,始终强调以项目为导向,以任务为驱动,以一个具体项目为依托来学习相关的内容,在具体实施中分级设置项目,先易后难、循序渐进地将相关的知识点融入项目的任务之中,通过完成任务掌握相应的知识点,提高相关技能和操作的应用能力。在此过程中,学生不断进行实践、总结、反思,将琐碎的知识点串联起来,逐步培养学生的综合能力。

三、课程教学实施

(一)多方面积极引导,激发学生学习兴趣

学生在学习《C语言程序设计》设计之前,可能通过新生入学教育或从高年级学生中知道这是一门专业必修课程而兴致勃勃,但到真正学习时,如果一直都是面对一堆单调而且枯煤无味的语法知识,则容易使学生产生厌学心理从而逐渐失去学习的兴趣。因此,要改进教学方法。首先,通过展示学校近几年来在各种比赛中获得的好成绩,让学生观看比赛的图片,让学生知道只要努力,在各种竞赛中都可以占有一席之地,这样学生就有可达到的奋斗目标从而消除他们的畏难情绪,激发学生的学习兴趣。

其次,在课堂讲授时尽可能找一些趣味性较强的例子讲解,除布置基本的训练学生掌握语法或者算法的题目外,设计1—2个有趣味性的游戏程序设计,如在选择结构编程练习中简易计算器的开发,在循环结构编程练习中加入猜数字游戏设计,在一维数组编程练习中加入猜牌术游戏等,这些游戏程序设计的开发有一定的难度,鼓励学生结成兴趣小组,互帮互助共同完成,在此过程中,学生的学习自主性和团队协作精神都得到大幅提高。

(二)精心设计实验教学

要根据《C语言程序设计》实验的教学大纲制定实验计划,精心设计每一次实验内容,要综合考虑学生编程能力上的差异,不要把题目设计得太深或者太简单,可以设计必做题和选做题,对基础较差的学生,最低要完成必做题;对能力较强的学生,在完成必做题的基础上,鼓励他们去完成选做题。同时,在实验的编排上,注意验证性、设计性和综合性实验的比例,对验证性实验进行精选,即使是验证性实验,也不要简单验证程序的运行结果,而是首先要求学生阅读程序,写出运行结果或程序实现的功能,然后再上机运行,同时可以设计一些问题让学生思考并对程序进行进一步修改,然后再分析运行结果。减少验证性实验项目,增加设计性和综合性实验项目,由浅入深、由易到难,加强学生动手能力、分析问题和解决问题能力的培养,最终提高学生的编程能力。

(三)灵活运用多种教学手段

在做题过程中,教师的主要任务是及时发现问题,回答学生的疑难问题。但是,在实验练习的过程中,学生主要依靠自己讨论或者上网寻求思路来解决问题。这是一个值得鼓励的好现象,能够充分体现学生独立自主学习的能力,在课堂教学中应当鼓励学生互相讨论,互相交换思想共同解决问题。但是,在教学中教师的作用体现不够充分,不愿意寻求帮助的学生会因为一道题目没有解决而无法正常进行实验练习,教师的作用应该是在学生自主解决问题的同时,能够及时提供帮助,尽量统一实验进度。在上机指导学生实验时,要以问题为中心,广泛采用启发式、参与式和讨论式等教学手段,要打破学生对教师的依赖性,让学生自己去思考如何编程,如果较难的题目允许学生讨论,鼓励学生去查阅相关资料,也可以适当给学生一些提示,但一定不要给学生源代码,重点给出解题的思路与建议性方法,给学生留下足够的独立思考和设计的空间,使学生在实验过程中亲自体会并掌握程序设计思想,提高实验的教学效果。

(四)利用网络教学平台让学生主动学习

充分利用校园网内建立的《C语言程序设计》网络教学平台,在该平台上共享本课程部分教学视频、相关课件、经典算法资料、ACM大赛历年题目,可以让学生通过此网络教学平台更加自主地选择性学习,更重要的是利用此平台与学生进行互动交流,在答疑区对学生提出的问题,老师与学生都可以及时解答,同时其他学生也可以分享交流过程,随时再提出新问题,更好地激发学生的学习兴趣,增强教师与学生、学生与学生之间的互动。通过多种教学方式的结合,不仅加深了学生对所讲知识点的理解,而且激发了学生的学习兴趣,提高了学生学习的自觉性,同时通过互动交流式学习增强了学生的自信心。

参考文献:

[1]张红军.C语言程序设计教学改革初探[J],信息与电脑,2015 (9):140-142.

[2]刘红霞,张永恒.CDIO工程教育模式下的C程序设计教学改革研究[J],榆林学院学报,2015 (4):83-86.

[3]李文锦,游戏化学习在C语言程序设计的应用与实践[J],新课程研究,2015 (7):76-77.

上一篇:人教七年级英语教案下一篇:服装商品企划试卷二