c语言源程序结构

2024-08-03

c语言源程序结构(精选9篇)

1.c语言源程序结构 篇一

预处理命令 #include 子函数 void delay(void){ 函数体...} 主函数 void main(void){ 函数体...whlie(1){ 函数体...} }

2、c语言是由函数构成的,一个c语言程序可以包含多个函数,但是有且只能有一个主函数(函数名为main),主函数没有返回值和参数(void main(void))。c语言程序的执行总是从主函数main开始执行的,在主函数中,对各种子函数进行调用。

3、C语言中的函数必须遵循先声明后调用的方式。具体实现有两种方法:

  在主函数之前先声明一个函数,然后在主函数之后定义该函数的具体内容 在主函数之前直接定义函数。

4、文件包含处理

#include 这是一个预处理命令,在所有51单片机的C语言程序里都可以看到这个语句。这个预处理命令实现的功能是:把reg51.h这个文件里面的全部内容复制并包含到这个C语言程序中。所以这里的预处理命令虽然只是简单的一行,但C编译器在处理的时候却可能要处理几十乃至上百行的代码。头文件reg51.h文件里定义了各种端口、寄存器的符号,这样包含了该文件后,我们就可以直接使用P0这样的符号了(我们可以试着不包含这个文件,则编译的时候,会提示我们P0这些符号未被定义)。

该文件可以在kei c51的安装目录下的KeilC51INC文件夹里可以找到,用记事本或写字板可以打开该文件)。

5、在上一个实例中,在程序文件中,我们使用的程序结构并不是标准的程序结构。标准的程序结构应该如下:

预处理命令 #include

子函数声明 void delay(void);

主函数 void main(void){ 函数体...whlie(1){ 函数体...} }

子函数 void delay(void); { 函数体...}

2.c语言源程序结构 篇二

关键词:C语言,程序设计,教学方法

C语言以其功能丰富、表达能力强、使用灵活、应用面广、目标程序效率高,可移植性好等优点,广泛应用于数据处理、科学计算、系统软件设计和计算机控制等领域。C语言也是一门典型的结构化程序设计语言,既适合编写应用程序,又适合编写系统程序,实用性很强。通过学习C语言,学生不仅能学习有关程序设计的知识,为以后的学习和工作打好基础,而且还能够逐渐培养缜密的思考能力和细致的观察能力,提高整体的工作、学习及生活能力。在学习C语言时,随着开始几堂课大量难以理解和记忆的新概念、新名词、新术语、新规则的介绍,以及枯燥乏味的例题分析后,学生普遍认为这门课难度大、抽象、不太容易学习;而且C语言规则繁多,使用灵活,在实际应用中,常常出错而不知其所以然,使不少学生在学习时感到困难。在教学过程中,作为教师需要加大教学研究力度,应该根据C语言的特点,把握C语言的重点和难点,深入浅出,把课程内容介绍得通俗易懂,以便学生更好地掌握C语言。本人就近年来对C语言程序设计教学的体会进行交流探讨,以抛砖引玉。

1 结合现实生活,激发学习兴趣

为了激发学生对C语言的学习兴趣,通常教师首先会找一些已学课程如数学方面的问题,通过编写C语言程序来实现求解,使学生体会程序设计的用途和一种全新的解决问题的方法。有些教师还会介绍一些趣味性算例,如“鸡兔同笼”、“水仙花数”等,以培养学生的学习兴趣,让大家积极主动、自觉地获取知识,打好学习程序设计语言的基础。整个教学过程中把解题思路、方法和步骤(即“算法”)当作授课的重点,从而让学生明白如何分析并解决实际问题,逐渐培养学生进行程序设计的正确思维模式。

这种教学模式是目前许多教师所采取的一种教学方式,也体现出很多的优点。但是由于学生初次学这门课程,这种方法也使得他们的思维受到制约,产生一种印象,即编程就是为了解决某些数学模型。虽然是一些简单的数学问题,但很多学生会联想到数学的其它难题,这使数学基础差的学生产生一种畏惧感,反而会收到不好的教学效果。大量实践证明,学生的确有如此感受,他们需要简单易懂的程序示例。那么,结合现实生活和学习中的简单且常用的实例来说明C语言程序的应用是非常可行的。

本人注意采用大家平时用得较多的软件如Word中的一个应用(英文字母大小写的自动转换)作为教学引入首例,使用C程序实现。通过运行的效果,使学生对C语言有初步的了解;并一直注意采用一些比较常用的软件功能设计如加密、猜拳、图形设计等作为案例来进行教学示例,从而进一步说明学习C语言后能在平时常用的一些应用软件、以后的课程学习及工作应用中做些什么事情,来激发学生的学习兴趣。

2 注重编程细节,培养缜密的思考能力和细致的观察能力

C语言的规则颇多,编写C程序应该严格按照其规则进行程序设计,对初学者而言,常常马虎大意,所编写的程序不能正常编译和执行结果。因此在教学初期,教师必须强调C语言的许多细节问题,让学生的诸多不良习惯扼杀于“萌芽”状态。如学生常常在写程序时出现以下问题:

2.1 标点符号问题

学生在编写程序时,往往忽视标点符号。问题主要表现在:

1)忘记录入标点。C语言中,经常用到各种括号,括号要求成对出现的,并且一条语句的结束需要用分号与另一语句隔开。对初学的学生,他们通常会忽略掉这个细节问题,这需要教师在讲授中明确地指出,让学生弄清楚。特别是括号太多时,一定要养成缩进书写的良好习惯,以减少错误的发生。

2)标点录入错误。要强调不同标点符号的作用和区别,如分号和逗号,“{}”与“[]”,“()”与“<>”等等。在录入程序时,很多学生录入的标点是不正确的。如分号“;”和“;”是有区别的,前者为中文下的标点符号,而后者才是程序中需要的。必须给学生强调程序中所需要的标点符号都应该是英文状态下的。

2.2 字母大小写问题

C语言程序中大小写字母是不同的,所以应严格区分字母的大、小写,一般情况下字母都有小写。此规则一定要讲清楚,让学生记住那些使用大写字母的特例。如符号常量一般都用大写,在用科学计数法表示浮点数中的“E”,弄清该计数法的规则,其中的字母“E”可以不区分大、小写;再如表示16进制数的符号“0x”,其中字母“x”也可不区分大小写等等。在教学过程中,对该类问题应该进行总结、归纳以方便学生掌握。

2.3 容易混淆的符号

C语言中有一些符号很容易混淆,如字母“o”、“O”与数字符号“0”,字母“l”与数字符号“1”,字母“z”与数字符号“2”的区别等等,需要特别提出。

2.4 运算符问题

C语言的一个显著特点是它的运算符丰富,利用这一点可以巧妙地解决许多在其他语言中难以解决的问题,但另一方面,有时也会出现令人混淆的问题,是许多学生在学习C语言时感到比较头疼的,同样需要教师在教学中重点突出讲授。下面就其中几种有代表性的运算符的运算做一些举例说明。

除(/)、求余(%)这两种运算符进行的都是除法运算,但前者结果是取商,而且结果可为整型亦可为实型,且当被除数和除数都为整型时其取整型(相当多的学生在教师讲授时明白,而一旦自己应用于程序编写时就忘记了),当被除数和除数有任何一个为实型则结果取实型;而后者取余运算的结果是取余数,要求被除数和除数必须都为整型,结果也只能取整型。

自增(++)和自减(--)运算,运算量必须是变量(错误:一些学生将符号常量、表达式也用于自增和自减),结合方式都是右结合性(错误:习惯性左结合),区别只在于一个是使变量自增1,一个是使变量自减1,关于它们的用法在此以自增(++)为例。自增形式有两种:1)i++;2)++i。而对于运算规则建议不要急于在此就先说明它们的区别,最好分为两种情况来讲。

第一种情况,当这两种形式中的任何一种单独作为一个C语句存在时,两者可以看作没有差别,都等价于i=i+1;。如:

这三个程序段的分别运行结果是一样的,i的值都为2。

第二种情况,当这两种形式中任何一种和其他的运算符相结合,一起构成一个复合表达式时,两者的运算规则就有很大的差别。而这个很大的差别可归纳为一口决:“名前先取,名后先增”,理解并记住这口诀就用不怕出错了。无论是i++还是++i在此时的操作都可分解为两步:1)取变量i的值参加其他运算;2)变量i自身的值增1;问题就在于这两步谁先执行谁后执行,而口诀的前半句“名前先取”就是指变量名在前就先作第一步,后半句“名后先增”是指变量名在后就先作第二步。

关系运算(或比较运算)表达式求值,表面上运算规则与数学中的比较运算相同,但是有一点要特别注意的是:关系运算表达式在数学中的值是一个逻辑值,“真”或“假”,“成立”或“不成立”,而在C语言中它的值是算术值,当表达式成立时其值为“1”,不成立时其值为“0”,这样就造成了某个表达式在数学上是成立的、合理的,而在C语言中它变成了非法的、不合理的。如表达式88&&x<10,而不能是8

3 因材施教,任务驱动学习

在C语言的教学中,不可避免地会用到大量的数学知识。教师在教学过程中要针对学生的数学知识基础,将教材中涉及到的学生未掌握的数学知识类例题进行更换,避免因数学方面的问题形成教学障碍。

如在设计“循环语句”教学时,可以先给学生讲清楚学习循环语句的用处及优点,介绍学习重点、难点,要求掌握一些程序设计的算法,让他们明确该语句的重要性。如实现求等差数列s=1+2+3+…+n的和时,主要介绍使用循环语句求解,并要求学生掌握其求解方法,并按照此方法推广,以掌握算法思想,然后再通过作业的形式编写累加算法的相关程序,如求s=1!+2!+3!+…+n!等。

在下面这个图形的输出设计教学中,

本人先比较详细地介绍程序的实现方法,然后要求学生在掌握的基础上自行编写这个图形经过变形后得到的图形的程序代码,图形的变形包括颠倒、塔状、旗状、倒三角等,让学生带着任务学习,在总结中提高编程水平。

学生通过自己的练习不断总结编写循环程序的经验,体会循环的思想,使得他们对循环语句有更深的理解和认识,从而达到较好的教学效果。

4 注重实践教学,提高动手能力

C语言的学习,不仅要掌握理论知识,而且实践操作的经验积累也是非常重要的。教师在讲授C语言时,不能忽视学生上机实践课的教学。

有些教师认为,上机课就是让学生自由练习,及时为有疑问的学生解决问题。实际上这种教学辅导方式是不合理的,应该在以下方面进行改进:

(1)学生上机应有明确的练习目标,提高编程效率。教师要结合上课的理论知识,确定上机课要完成的目标,有目的地给学生安排上机实验的任务;并且引入相关的程序实例,逐步分析解决该程序的思路和相关的程序代码,让学生了解如何下手去编写程序。

(2)根据引入的程序实例再扩展开,让同学们自己动手完成相关的程序代码。

(3)鼓励学生相互讨论、共同完成,鼓励公开自己的程序设计,评讲相关的程序代码,并引出新的程序,引导学生自己独立完成。

(4)整个上机课堂中教师随时走动,进行课堂答疑,并敦促学生完成相关程序编写。

C语言具有许多的优点,是使用性很强的程序设计语言之一,它的知识点比较多,初学的学生不好掌握。这就要求教师在教学过程中,注重条理性,多从技巧性入手,把一些琐碎复杂的规则用一些简洁、形象的语言来描述代替,提高教学效率,降低学生学习难度,激发他们的学习兴趣,这样才有可能达到良好的教学效果。

参考文献

[1]谭浩强.C语言程序设计[M].2版.北京:清华大学出版社,1998.

[2]李凤霞.C语言程序设计[M].北京:北京理工大学出版社,2001.

[3]谭浩强,张基温,唐永兴.C语言程序设计教程[M].北京:高等教育出版社,1992.

3.浅探《C语言程序设计》教学 篇三

关键词:C语言;项目化教学;教学方法

中图分类号:TP312.1-4 文献标识码:A 文章编号:1674-7712 (2014) 18-0000-01

《C语言程序设计》作为计算机专业的基础课,在整个课程体系中占有重要地位。在C语言教学过程中,教师的教学方法和学生的理解接受能力的差异,对教学效果都会产生直接的影响。总结多年来的教学经验和教学体会,结合学生在学习程序设计类课程的思维规律和模式,把一些经验和方法总结出来,希望能对C语言教学有所帮助。

一、现行教学和学习中存在的问题

现行教学中理论课与实践课相对分离,不能相互促进。理论课中往往只注重对教材知识的分析和灌输,而在实践课程中,老师很难监控到每个学生,了解他们是否都在认真编写、调试程序。这就造成理论课没有起到为实践课打基础的作用,实践课也没有起到巩固、应用理论课的作用。《C语言程序设计》是一个逻辑性很强的课程。学生在面对具体的程序设计时遇到的问题与教材中的内容相距甚远,这使大多数同学感到无从下手。这其中的原因可以分成两类:一方面目前高校使用的大多数教材中,结构都基本相同。在每一章介绍完了概念之后,提供一些例题解释相关概念的使用方法,并在章节结束后针对本章中出现的内容提供一些练习题。考试也主要是测试学生对于教材内容的掌握程度,而与实际应用相距较大。这种考试实际上主要是测试学生对书本中的基本知识的掌握程度,而忽略了对学生解决实际问题的能力的培养。另一方面为了应付考试,学生更多注意的是教材中的典型例题与老师指定的重点内容,对于程序的系统概念没有真正理解,特别是没有程序整体设计的概念。这样做的结果就是学生在学习时一切围绕老师讲课的内容,特别是老师讲授的例题。学生在学习的过程中,没有注意如何综合运用相关内容来解决具体问题,导致学生在学完程序设计课程进入应用阶段时,面对具体的专业设计要求无从下手。

二、提高教学效果的方法和途径

(一)明确课程目标。本课程的目标主要是提高学生解决实际问题的能力,适应社会需求。对C语言程序设计课程的教学而言,强调实践性是在教学中特别重要的问题。老师的教学不应仅仅是传授知识,应该以培养学生的实际应用能力为主。C语言的内容繁多,在有限的课时内不可能也不必要面面俱到,所以必须突出重点,突出实用性,关键在于教会学生正确运用C语言编写程序,一些细节、具体规则和进一步的知识可以让学生在今后的应用中来不断学习和掌握。教师应始终坚持以应用为中心,以算法为基础,以培养学生的实践能力为核心,突出技术实用性和再学习能力的培养。

(二)进行教学改革。1.教学内容改革。高职学校学生的培养就是要直接面对社会需求,招之即能用。因此,程序设计课程要以社会对编程能力的需求和技术发展为依据,调整教学大纲和教学内容,以适应技术岗位能力要求,设计课程体系。在课程设置与建设中,要充分体现教学内容在训练和提高学生实践能力方面的要求,强化学生的实际开发和应用能力。总结本人多年的教学经验,结合其他老师成功的教学方法,采用项目化教学方法可以达到很好的效果。这个项目应具有以下几个特点:(1)实用性。本项目就是一个具体的实际需求,是解决现实性中一个实际问题而设计,这样也能提高学生的兴趣和热情;(2)完整性。本项目的程序设计是系统的、完整的,要能全面运用整个课程学习的知识,案例的设计贯穿整个课程的学习,随着课程的学习不断完善。

2.改变教学思想和方法。培养学生对C语言的兴趣及正确的思维模式。《C语言程序设计》注重由设计算法到书写程序并进行调试的整个过程,显得抽象、复杂,这也是大多数学生抱怨程序设计太难、太深奥、不好学的主要原因。在教学过程中,先介绍项目的整个程序设计框架,目的是使学生先对程序有个初步的印象,再结合教材,简单介绍该例子中用到的语句,让学生对该语言的学习有一个大概的了解,避免学生对学习语言望而生畏。整个教学过程中应该把“解题思路、方法和步骤”当作授课的重点,从而让学生明白如何分析、解决实际问题,逐渐培养学生进行程序设计的正确思维模式。计算机语言程序设计中算法是其灵魂,是教学重点,也是教学难点,而语言只是表示形式。没有正确的算法,计算机将解决不了任何问题。对于C语言所涉及到的算法,应进行部分精讲多练。通过案例分析,重点讲解程序设计的思想和方法,辅以語言知识的介绍,将课程内容分为若干个主题,以项目程序设计为贯穿各主题的主线。每个主题的教学过程由“要点讲解”、“练习/上机实践”和“疑难解答”三个阶段组成,然后提出项目中的问题,以学生独立完成为主,教师只提供必要的辅导,培养学生探索问题和解决问题的能力,更有利于创新能力的培养。整个课程教学围绕一个工程项目进行,通过逐步拓展的实训项目和设计,将每一阶段的学习进行小结性的贯穿与能力提高。将C的知识点都溶化到项目的程序编写中。

3.改革课程考核方式。(1)平时上机训练时给学生留一些编程习题,每次根据学生编写情况进行测评并占据期末总成绩30%;(2)期末前,要求学生完成本课程项目的整体设计,考核学生综合解决问题的能力,占据期末总成绩30%;(3)期末进行理论考试,占期末总成绩的40%。

(三)展示学生作品,激发学生的学习欲望。计算机软件课程具有多样性、复杂性和求异性特点,我们要针对每个学生任务完成的情况,让同学们展示自己的学生成果,及时肯定学生的成绩,这样会有利于激发学生的学习热情,保持学生的学习兴趣,对学生的后续学习将产生强大的动力和自信心。

(四)培养学生的自学能力和创造性。学生学习计算机语言的最终目的是编写满足实际需求的程序,所以在教学中教授的不仅仅是具体语言的语法知识,更重要的是通过这门语言学习,培养学生遇到实际问题自己分析问题、解决问题的能力。我们可以通过给学生布置作业的形式让同学们自学,老师既要要求学生独立思考、自主学习,又要鼓励学生间进行协作学习。教师可以分配一些比较复杂的问题,由几个学生组成一个小组合作解决,这样同学们可以互相探讨学习方法,协作解决一些遇到的问题。通过解决问题,锻炼学生综合应用知识的能力、培养其创造性和合作精神。

参考文献:

4.C语言编程 “画圆”源程序 篇四

void main()

{

int driver,mode;

driver=DETECT;

mode=0;

initgraph(&driver,&mode,“");

setcolor(15);

line(66,66,88,88);

lineto(100,100);

linerel(36,64);

getch();

restorecrtmode();

}

--------------

#include

#include /*预定义库函数*/

void circlePoint(int x,int y)/*八分法画圆程序*/

{

circle(320 x*20,240 y*20,3);

circle(320 y*20,240 x*20,3);

circle(320-y*20,240 x*20,3);

circle(320-x*20,240 y*20,3);

circle(320-x*20,240 y*20,3);

circle(320-x*20,240-y*20,3);

circle(320-y*20,240-x*20,3);

circle(320 y*20,240-x*20,3);

circle(320 x*20,240-y*20,3);

}

void MidBresenhamcircle(int r)/* 中点Bresenham算法画圆的程序 */

{

int x,y,d;

x=0;y=r;d=1-r;/* 计算初始值 */

while(x

{ circlePoint(x,y);/* 绘制点(x,y)及其在八分圆中的另外7个对称点 */

if(d<0)d =2*x 3;/* 根据误差项d的判断,决定非最大位移方向上是走还是不走 */ else

{ d =2*(x-y)5;

y--;

}

x;

delay(900000);

} /* while */

}

main()

{

int i,j,r,graphmode,graphdriver;

detectgraph(&graphdriver,&graphmode);

initgraph(&graphdriver,&graphmode,” “);

printf(”中点Bresenhamcircle算法画圆的程序n“);/*提示信息*/

printf(”注意 |r|<=11“);

printf(”n输入半径值 r:“);

scanf(”%d“,&r);

printf(”按任意键显示图形...“);

getch();

cleardevice();

setbkcolor(BLACK);

for(i=20;i<=620;i =20)/*使用双循环画点函数画出表格中的纵坐标*/

for(j=20;j<=460;j)

putpixel(i,j,2);

for(j=20;j<=460;j =20)/*使用双循环画点函数画出表格中的横坐标*/

for(i=20;i<=620;i)

putpixel(i,j,2);

outtextxy(320,245,”0“);/*原点坐标*/

outtextxy(320-5*20,245,”-5“);circle(320-5*20,240,2);/*横坐标值*/

outtextxy(320 5*20,245,”5“);circle(320 5*20,240,2);

outtextxy(320-10*20,245,”-10“);circle(320-10*20,240,2);

outtextxy(320 10*20,245,”10“);circle(320 10*20,240,2);

outtextxy(320-15*20,245,”-15“);circle(320-15*20,240,2);

outtextxy(320 15*20,245,”15“);circle(320 15*20,240,2);

outtextxy(320,240-5*20,”-5“);circle(320,240-5*20,2);/*纵坐标值*/

outtextxy(320,240 5*20,”5“);circle(320,240 5*20,2);

outtextxy(320,240-10*20,”-10“);circle(320,240-10*20,2);

outtextxy(320,240 10*20,”10“);circle(320,240 10*20,2);

outtextxy(20,10,”The center of the circle is(0,0)“);/*坐标轴左上角显示提示信息*/ setcolor(RED);/*标记坐标轴*/

line(20,240,620,240);outtextxy(320 15*20,230,”X“);

line(320,20,320,460);outtextxy(330,20,”Y“);

setcolor(YELLOW);

MidBresenhamcircle(r);

setcolor(BLUE);/*绘制圆*/

circle(320,240,r*20);

setcolor(2);

getch();

closegraph();

}

-------------------------#include

void main()

{

int driver,mode;

driver=DETECT;

mode=0;

initgraph(&driver,&mode,”");

setcolor(15);

circle(20,20,20);

getch();

5.C语言课程设计程序 篇五

//定义学生结构体,st数组。

int score[5];float jqave;int rank;}st[27];

struct kecheng { int num;char kcname[20];

//定义课程结构体,course数组.float xuefen;float biaozhuncha;int youxiu;int lianghao;int zhongdeng;int jige;int bujige;

}course[5];

void readdata1(){

int i,j;

char str1[100];

FILE *f1;

f1=fopen(“c:xinji110213.txt”,“r”);

fgets(str1,100,f1);// printf(“%-s”,str1);

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

{

fscanf(f1,“%d%s”,&st[i].num,st[i].name);

// printf(“%-4d%-10s”,st[i].num,st[i].name);

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

{

fscanf(f1,“%d”,&st[i].score[j]);// printf(“%-9d”,st[i].score[j]);}

// printf(“n”);}

fclose(f1);}

void readdata2(){

int k;

char str2[100];

FILE *f2;

f2=fopen(“c:xj02kc.txt”,“r”);

fgets(str2,100,f2);// puts(str2);

for(k=0;k<5;k++)

{

fscanf(f2,“%d%s%f”,&course[k].num,course[k].kcname,&course[k].xuefen);

// printf(“%-8d%-10s%2.1fn”,course[k].num,course[k].kcname,course[k].xuefen);

}

fclose(f2);} void jqave(){ int i,j;float s=0,sum=0;for(i=0;i<27;i++)

{

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

{

s+=course[j].xuefen;

sum+=st[i].score[j]*course[j].xuefen;

}

st[i].jqave =sum/s;

} }

void ranking()

{ int i,j;

for(i=0;i<27;i++){

st[i].rank=1;

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

if(st[i].jqave

st[i].rank=st[i].rank+1;} }

void paiminghoudechengji(){ int i,j;FILE *fp;fp=fopen(“c:MC110213.txt”,“w”);printf(“ 名次 学号

姓名

数学分析

高等代数

C语言

大学物理

大学艺术

加权平均分 n”);fprintf(fp,“ 名次 学号

姓名

数学分析

高等代数

C语言

大学物理

大学艺术

加权平均分 n”);

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

{

printf(“%3d%5d%8s”,st[i].rank,st[i].num,st[i].name);

fprintf(fp,“%3d%5d%8s”,st[i].rank,st[i].num,st[i].name);

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

{

printf(“%10d”,st[i].score[j]);

fprintf(fp,“%10d”,st[i].score[j]);

}

printf(“%12.2fn”,st[i].jqave);

fprintf(fp,“%12.2fn”,st[i].jqave);} fclose(fp);}

void xiechengji(){ int j;FILE *fp;fp=fopen(“c:xj1110213.txt”,“w”);fprintf(fp,“ 编号

课程名称

课程学分

标准差

优秀

良好

中等

及格

不及格

n”);printf(“ 编号

课程名称

课程学分

标准差

优秀

良好

中等

及格

不及格

n”);for(j=0;j<5;j++)

{

printf(“%3d%15s%10.2f”,course[j].num,course[j].kcname,course[j].xuefen);fprintf(fp,“%3d%15s%10.2f”,course[j].num,course[j].kcname,course[j].xuefen);

printf(“%10.1f%8d%8d%8d%8d%6dn”,course[j].biaozhuncha,course[j].youxiu,course[j].lianghao,course[j].zhongdeng,course[j].jige,course[j].bujige);

fprintf(fp,“%10.1f%8d%8d%8d%8d%6dn”,course[j].biaozhuncha,course[j].youxiu,course[j].lianghao,course[j].zhongdeng,course[j].jige,course[j].bujige);

} fclose(fp);}

void pingjunfen(){ int i,j;

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

{

float zongfen=0,pingjunfen=0;

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

zongfen+=st[i].score[j];

pingjunfen=zongfen/27;

} }

void biaozhuncha(){

int i,j;

for(j=0;j<5;j++){

float zongfen=0,pingjunfen=0,x=0;

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

zongfen+=st[i].score[j];

pingjunfen=zongfen/27;

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

x+=(st[i].score[j]-pingjunfen)*(st[i].score[j]-pingjunfen);

course[j].biaozhuncha=(float)sqrt((x/27));

} }

void count(){

int i,j;

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

{

course[i].youxiu=0,course[i].lianghao=0,course[i].zhongdeng=0,course[i].jige=0,course[i].bujige=0;

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

{

if(st[j].score[i]<60)

course[i].bujige++;

else if(st[j].score[i]<=69)

course[i].jige++;

else if(st[j].score[i]<=79)

course[i].zhongdeng++;

else if(st[j].score[i]<=89)

course[i].lianghao++;

else

course[i].youxiu++;

} } }

void chengjitiao(){

int i,j;FILE *fp;fp=fopen(“c:cjt110213.txt”,“w”);do

{ printf(“请输入你要查询的编号

退出请按零”);

scanf(“%d”,&i);

fprintf(fp,“ 编号

姓名

数学分析

高等代数

C语言

大学物理

大学艺术

加权平均分

名次n”);printf(“ 编号

姓名

数学分析

高等代数

C语言

大学物理

大学艺术

加权平均分

名次n”);if(i>=0&&i<=26)fprintf(fp,“%3d%10s”,st[i-1].num,st[i-1].name);

printf(“%3d%10s”,st[i-1].num,st[i-1].name);for(j=0;j<5;j++){

printf(“%9d”,st[i-1].score[j]);

fprintf(fp,“%9d”,st[i-1].score[j]);} printf(“%12.2f%8dn”,st[i-1].jqave,st[i-1].rank);fprintf(fp,“%12.2f%8dn”,st[i-1].jqave,st[i-1].rank);fclose(fp);} while(i>0&&i<28);

}

void bujigexueshengmingdan(){

int i,j;

printf(“不及格学生名单如下:n”);printf(“ 学号

姓名

不及格课程

分数

n”);for(i=0;i<27;i++){

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

if(st[i].score[j]<60)

{printf(“%3d%12s”,st[i].num,st[i].name);

printf(“%15s%8dn”,course[j].kcname,st[i].score[j]);

// printf(“

平均分”);

// printf(“%10.2f

名次%8dn”,st[i].jqave,st[i].rank);

}

} }

void youdeng(){ int i,k;printf(“ 优等生名单如下n”);printf(“编号

姓名

数学分析

高等代数

C语言 大学物理 大学艺术 加权平均分

名次n”);for(i=0;i<27;i++){ // for(j=0;j<5;j++)

if(st[i].jqave>=90||st[i].rank<=3)

{

printf(“%2d%10s”,st[i].num,st[i].name);

for(k=0;k<5;k++)

printf(“%9d”,st[i].score[k]);

printf(“%10.2f%8dn”,st[i].jqave,st[i].rank);

}

else;

} }

void caidan()

{ loop: printf(“

&&简易教学管理系统&&n”);

printf(“press 1 for

排名后的成绩表

!n”);

printf(“press 2 for

各科成绩情况!n”);

printf(“press 3 for

成绩条!n”);

printf(“press 4 for

不及格学生名单!n”);

printf(“press 5 for

优等生名单!n”);

printf(“press 0 for

退出n”);

int t;

scanf(“%d”,&t);

switch(t)

{

case 1:

paiminghoudechengji();break;

case 2:

xiechengji();break;

case 3:

chengjitiao();break;

case 4:

bujigexueshengmingdan();break;

case 5:

youdeng();break;

case 0:

exit(0);

}

goto loop;

}

void main(){

readdata1();

readdata2();

jqave();

ranking();

pingjunfen();

biaozhuncha();count();

6.c语言源程序结构 篇六

实验目的:

1、初步了解vc++6.0环境;

2、熟悉掌握调试C程序的步骤。

实验内容:

1、如何进入vc++6.0环境?如何新建一C程序文件并进行调试?

2、对教材中例1.1至例1.3在vc++6.0环境中进行调试。

3、上机调试教材课后习题4、5题。

实验原理、步骤与分析:

7.C语言程序设计课程教学探析 篇七

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

1. 学生学习兴趣不高。

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

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

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

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

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

3. 实验、考核环节。

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

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

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

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

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

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

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

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

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

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

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

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

三、结束语

8.C语言程序设计教学方法探讨 篇八

关键词 C语言 程序设计 教学方法

中图分类号:G648.2文献标识码:A文章编号:1002-7661(2011)09-0028-02

C语言是计算机专业和相关专业一门很重要的专业基础课,学好C语言为数据结构等后继课程有很大帮助。但是对于高职学生,数学、英语等基础知识较差,而C语言又作为他们面临的第一门语言类课程,因而学习C语言具有很大的难度。本文结合本人几年来的教学经验,对怎样提高C语言教学质量,如何让学生掌握好C语言基础知识点提出几点看法。

一、创设情境,激发学生学习兴趣

大多数学生对新课程都很感兴趣,都很想学好这门课,所以上好第一节C语言课是一个很好的开始。C语言有很多语法和知识点需要掌握,但是如果第一节课就开始介绍C语言的知识点,不但得不到好的收效,还会让学生因为知识枯燥,不易理解而失去学习本课程的兴趣。上第一节课,先讲授C语言这门课程的重要性以及在计算机课程中的地位,然后给学生演示几个简单的游戏,比如:小型运算器,俄罗斯方块,贪吃蛇等,告诉他们这些都可以用C语言来编写。通过这些实例的引入,可以让学生了解到C语言的实用性,激起学生学习的兴趣。

二、注重教学过程,采用多种教学手段

在教学过程中,把知识点融合在实例中,加强学生对知识点的理解,本人在教学过程中采用以下相应方法:

1.深入浅出

C语言主要包括C语言语法、结构化程序设计、数组、函数、指针、文件等。教材一般都会归纳,但是如果把每一块放在一起讲,难点就比较多。比如,C语言的数据类型很丰富,如果全部放一起讲,学生肯定很难记住,所以可以先讲3种基本数据类型、运算符及相关表达式,再通过一个简单程序,输入输出数据。这样子,学生就逐渐掌握了基本数据类型、定义变量,以及输入输出函数的基本使用。对于一些比较难以理解的概念,可以借用比喻来解释,比如在讲到变量的时候,包括变量的地址、变量名、变量值,在课堂上借用教室打个比方:10网构班(变量名)在实验楼302(变量地址)有45个学生(变量值)。这样学生在定义变量的时候就不会那么抽象了。

2.画出流程图

做任何事情都有一定的步骤,这些步骤是按一定的顺序进行的,缺一不可,如果你对一个问题没有任何思路的话,那肯定编不出程序。在解题的时候,可以先画出流程图,再编程序。如:将50名学生中成绩高于80分的成绩打印出来,可画出流程图如下:

3.先复习旧知识,再导入新课

新内容的导入方法很重要,新课前先回顾复习学过的知识点,从旧知识的某一个点出发,提出和新内容相关的问题,让学生思考,并可适当提问,这样可激发学生思考的积极性。在课堂气氛活跃的情况下,教师适当引导,导入新的知识,这样的讲法可以激发学生的兴趣,使学生更容易接受和理解新知识。

4.任务驱动

每节课开始的时候,可以根据需要布置一些问题,让学生带着相关的问题听课,也可让学生自己思考、归纳,或者互相讨论,这样学生会更有目的性和方向性地听讲。

如:在循环结构for语句中,可以设置三个驱动任务:(1)for语句的一般形式;(2)for语句的执行过程;(3)for语句三个表达式代表的含义,三个表达式能否省略?

5.讲解实例,举一反三

对于C语言程序设计这门课来说,精心设计一些实例,用实例来使概念形象化,深化理解 ,通过教师的分析讲解,使学生更容易入手。然后我们可以对这个简单实例提出新的问题、新的改善方案,引导学生参与对现有程序的修改中来。对于学生的改进方案,教师可引导全体学生来评价优劣,找出其优点,修改其错误,逐步完善,不断优化。这样可以调动学生自主学习积极性,用实例教学加强师生互动。

比如可以在平常写的实例中设置一些待解决的错误,如:故意将赋值符号“=”和等号“= =”互换,漏写分号“;”和大括号“{ }”,引导学生在编程和调试过程中逐一发现并解决这些问题,不仅能够巩固理论知识、养成编程的好习惯,更能调动学生思考问题和解决问题的积极性。同时在解决问题的过程中使学生有一种成就感,这对学习能力的提高和积极性的培养有很好的作用。

6.总结知识点

在课堂讲解过程中,知识点是比较零散的,学生对每个知识点理解了,但对各个知识点之间的联系并不一定理解,缺少一种知识的连贯性,不利于理解和记忆。所以,在每次课结束之前,用几分钟的时间把本次课内容所涉及的知识点回顾一遍,这种回顾既以复习知识点为主,又要讲解其间的联系。当课堂教学内容以一个整体的形式被串联起来后,学生的理解就会加深。如:在讲运算符的时候,每类运算符都有自己的优先级和结合方向,一个一个比较零散,所以在讲完运算符后,可以归纳所有运算符间的优先级和结合方向。

三、引导学生自主学习,培养学生实践能力

程序设计是一门实践性很强的课程,既要掌握概念,又要动手编程,还要上机调试运行。对于学生来说,一定要重视实践环节,包括编程和上机。对于教师来说,一定要引导学生自主学习,做好课程设计。

1.上机准备

教师要事先设计好实验内容,内容要尽量引用之前所讲的知识点,避免涉及后续章节的知识,难易适中,由浅入深。课前可先给学生演示一下实验的最终效果,概括本实验包括的知识点,提醒学生对每一个操作的结果仔细观察和详细记录。学生在操作中遇到问题,教师应启发学生独立思考,引导学生去发现问题、分析问题和解决问题,培养学生的动手能力,让学生亲自观察和体验程序设计的成功感受,加深对知识的理解。最后,学生要书写实验报告。上机结束后,教师要督促学生及时总结实践经验,将实验中碰到的问题及解决的方法记录在实验报告上。教师根据每一次上机的整体情况,对学生中出现的共性问题进行讲解。

2.课程设计

可以让学生分组实现一个具体课程设计,在本课程结束的前几周完成课程设计,加深学生对本课程的总体理解。本人认为,在学校中学习程序设计的目的是进行程序设计及基本训练,而不是要求学生立即编写大型程序,或今后一辈子只用这门语言。所以,布置课程设计时,要把精力放在本课程最基本、最常用的内容上,开始时,不要在每个细节上死背死抠,在有一定基础后,再通过实践熟练掌握。

教好C语言是一项艰巨的任务,在教学过程中,要深入浅出,以学生为主体,以教促学,学以致用,引导学生在学习过程中掌握编程技巧,调动学生学习的主动性和积极性。

参考文献:

[1]唐淑玲.高职C语言程序设计教学效果探析[J].中国校园导刊,2011,(1).

[2]由杨.高校计算机C语言实验教学方法初探[J].中国期刊,2009,(1).

9.求闰年C语言程序 篇九

地球绕太阳转一周的实际时间是365天5时48分46秒。

如果一年只有365天,那么每年就多出5个小时。

4年多出的23小时15分4秒,差不多就等于1天。于是决定每四年增加1天。但是,它比一天24小时又少了约45分钟,如果每100年有25个闰年的话,就少了18时43分20秒,这就差不多等于1天了,这显然不合适。

可以算出,每年多出5小时48分46秒,100年就多出581小时16分40秒。

而25个闰年需要25*24=600小时。

581小时16分40秒只够24个闰年(24*24=576小时),于是决定每100年只安排24个闰年(世纪年不作闰年)。

但是这样每100年又多出了5小时16分40秒(581小时16分40秒-576小时),于是又决定每400年增加一个闰年。这样就比较接近实际情况了。

根据以上的,决定闰年按照以下的计算规则:

闰年应能被4整除(如2004年是闰年,而2001年不是闰年),但不是所有被4整除的年份都是闰年。在能被100整除的年份中,又同时能被400整除的年份才是闰年(如2000年是闰年),能被100整除而不能被400整除的年份(如1800、1900、2100)不是闰年。

这是国际公认的规则。只说“能被4整除的年份就是闰年”是不准确的(复制直接使用)*/

#include

int main()

{

int a;

printf(“请输入年份n”);

scanf(“%d”,&a);

if(a%100==0&&a%400==0)//如果判断是百年,则判断年份能否被400整除printf(“%d年是闰年n”,a);

else if(a%100!=0&&a%4==0)//如果判断不是百年,则判断年份能否被4整除printf(“%d年是闰年n”,a);

else

printf(“%d年不是闰年n”,a);

system(“pause”);

return 0;

上一篇:金融市场基础知识精讲下一篇:我心爱的百科全书四年级作文