c语言程序设计心得

c语言程序设计心得,第1张

C语言程序设计课程是高等院校计算机专业基础课程之一,其教学效果直接影响学生在计算机方面的应用。C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。那么要如何写关于c语言程序设计心得呢?本文是c语言程序设计的心得,仅供参考。局键派

c语言程序设计心得一

在这为期半个月的时间内,通过我们小组各成员之间的相互讨论和合作,我们完成了学生信息管理系统的程序设计,更值得高兴的是我们的程序得到了大家的喜爱,在每次的简报中都得到了较好的成绩。

虽然在上个学期中,我们已经学习了《C 语言程序设计》这门课,但是我所学的知识最多也就是在做作业的时候才会用到,平时没有什么练习的机会,这次的课程设计是我第一次通过自己构思,和同学讨论并且不断查阅资料来设计一项程序。这次设计,不仅巩固了我以前所学的知识,还让我对c语言有了更深一步的了解,掌握了更多的技巧和技能。

C语言是计算机程序设计的重要理论基础,在我们以后的学习和工作中都有着十分重要的地位。要学好这种语言,仅仅学习课本上的知识是不够的,还要经常自己动手,有较强的实践能力。只有多动手,经常编写程序,才能发现我们学习上的漏洞和自己的不足,并在实践中解决这些问题,不断提高自己转化知识的能力。

在我们小组有解决不了的问题时,我们会主动查阅相关的资料,或向其他同学询问,这不仅丰富了我们的知识,还增进了我们同学之间的友谊。为了增大信息的安全性,需要用文件来存储信息,由于我们在上课时不注重对文件的运用,所以在这方面有较大的困难。我先将书本认认真真地看了一遍,又做了一下课后习题来验证和增进自己的理解,终于,经过我们的不懈努力,我们小组的程序有了突破,成功地实现了用文件来保存并查看学生的信息。

这次设计中,我的收获还有就是学会了用流程图来表达自己的想法,并根据亮乱流程图来逐步实现程序的功能。开始的时候,我画流程图很是困难,需要一个多小时才能清楚的根据自己的想法画出图来,后来画多了,就更加了解它的功能,十分得心应手,能够比较快而准确的画出来。

在这次课程设计中,我们首先对系统的整体功能进行了构思,然后用结构化分析 方法 进行分析,将整个系统清楚的划分为几个模块,再根据每个模块的功能编写代码。而且尽可能的将模块细分,最后在进行函数的调用。我们在函数的编写过程中,我们不仅用到了for循环、while循环和switch语句,还用到了函数之间的调用(包括递归调用)。由于我们是分工编写代码,最后需要将每个人的代码放到一起进行调试。因为我们每个人写的函数的思想不都一样,所以在调试的过程中也遇到了困难,但经桐贺过我们耐心的修改,终于功夫不负有心人,我们成功了!

在参考书上,我们不仅参考了曾经学过的高敬阳主编的《c语言程序设计》,还找到了由谭浩强主编的第三版《c语言》进行参考。

当然,我们的程序还有一些不完善的地方,比如说,当输入的数据不符合我们定义的数据的格式的时候,程序会出现一些错误,有时会出现主菜单的死循环在一次程序运行中,只能行使一种权限,要想再行使另一种权限,就只能退出程序,然后再运行程序。

三周的小学期即将结束,时间虽短,但是我收获了很多。最后,谢谢老师和同学们的指导,更要感谢我们小组成员之间的合作与交流。

c语言程序设计心得二

通过本次教师发展在线的C语程培训中,我受益匪浅,几位教授的精彩演讲,让我找到了自己的不足和日后教学中的改革方向和内容。同时,也让我感觉到了,有今天各位教授的良好教学效果,这其中包含了他们的艰辛、背后的大量付出和无私奉献。

我是一直从事C类语言的教学工作,对C语言的教学已有5年教龄,在这几年的教学过程中,我们也一直在寻找好的 教学方法 和新的教学理念。通过本次学习,我 总结 要教好《C语言程序设计》这门课,最基本要把握好以下几个方面:

(一)要重视实践环节,上机调试成绩非常重要。

学习一门语言,就是要按照它的语法来编程。要编程,当然就要上机 *** 作来验证你程序的正确性。所以上机非常重要,通过执行你所写的程序,完成你所写程序的目标,最终达到你的目的。而且通过执行程序,你会发现程序中的错误,从而使你了解你所学知识中的不足,同时,要学会根据编译时提示的错误来改正程序中发生的错误,以便下次不会再犯同样的错误。

(二)基本语法学习虽然枯草乏味,但是它相当于高楼大厦的一砖一瓦,一定要下硬功夫让学生掌握熟练。

C语言的语法部分。这部分内容是学好C语言的基础,只有学好了这些语法,才会写程序,看程序。所以对一个初学者来说,这部分内容是非常重要的,所以要扎实地熟悉每一个语法,并能根据这些语法来编程。

(三)学习要抓住重点,难点部分要多讲、多学、多练。

通过这次学习使得我对C语言的重点,难点,以及易出错的地方把握的更精准了。当然,这只是针对我个人而言。在C语言学习过程,重点就是数组,指针,以及结构体了。难点也是它们了,不过数组和结构体还是挺简单,所以在此主要就指针方面谈谈自己的看法。

下面谈谈通过这次学习,结合我们学校的教学情况,打算对该课程的教学进行如下几个方面的改革:

(一)理论教学内容的组织

C语言的重点知识包括:结构化程序设计方法、流程图的组织、三种程序设计结构、三种基本数据类型和三种自定义数据类型难点包括:结构程序设计方法、算法的分析、流程图的组织与设计、函数、指针等。

根据知识内容和每年的新学时安排,我们将理论教学内容分为授课内容和自学内容两 大模块。

(1)授课内容

C语言的授课内容分为两阶段:①基础准备阶段 这部分内容确保学生“实用、够用”,主要包括三种基本数据类型(只要求掌握常用的int,float,char)三种常用运算符及其表达式(赋值、算术、逻辑(包括关系))三种程序设计结构(顺序、选择、循环)。②实训项目驱动阶段 这部分内容主要是“实训实战”,主要包括数组、函数、指针和结构体。通过第一阶段的学习,学生已经具备了一些程序设计的基础知识,在这一阶段将通过一个实训项目的完成来熟悉主要内容,同时巩固第一阶段的成果。

(2)自学内容

课本中的内容上课没重点介绍或者说就是没提到的,划为自学内容。但这些内容,我们并不是在课堂要求学生回去自学:要求过高,规矩过多,这样效果不佳。而是让学生在实验中发现问题后,带着问题去学习,去找答案。

例:整型 我们只介绍int基本类型,当学生想计算n!时,学生测试5!=120时,他可能会去测试20!、50!,这时,存放阶乘的变量Factorial再定义为int,结果就是0了,这时问题就来了,他就会去寻找正确的处理方法(long int)。

(二)实验教学的安排与设计

教学改革方案确定后,我们对本课程实验教学上从多方面进行了教学更新。我们考虑到学生处于了解计算机语言及编程的初级阶段,有许多最基础的内容有待掌握,所以本课程的实验教学不太适合完全以项目开发的形式进行,注重的是加强模块化实训。

(1)上好第一节实验课

我们常说“上好第一节课”,那么第一节实验节的重要性也不言而喻。这节课对培养学生的学习兴趣、增强学生的学习信心、锻炼学生的自主学习等多方面影响很大。

第一次实验项目是&mdash熟悉Turbo C的运行环境,主要是掌握一些在TC中的一些键盘 *** 作方式。一般是教师给学生提供程序代码(三个),但我们在学生不知情的情况下,给学生两个有语法错误的和一个正确的程序。这样,当学生运行正确的程序时,知道计算机可以帮我们处理问题,原来程序就是这样写的当学生运行错误的程序,首先他会诧异(老师给的程序原来是错的),于是要求他们自己修改,尤其是有时一个致命错误导致的10多个errors,被学生修改后,没有了errors或所剩无几,这时学生表现的很兴奋、很有成就感,从而加强了本课程的学习兴趣和信心。

(2)分两阶段进行

实验内容与理论教学内容相互应,在基础准备阶段,这方面教学方法上主要是加强 *** 练。通过各种大小程序、多重训练和一个问题的多种解法来加强语法知识点的掌握和训练,开阔学生编程的思路,掌握编程基础。同时,在这过程中我们严格把关,让学生课后认真准备,每次进实验室时,应有写好的完整代码,上机调试,发现问题同时解决问题,要求认真完成实验内容,并在课后书写实验 报告 。鼓励学生多写程序,要加强实践环节,首先要从量上有个划分。在实训项目驱动阶段。本阶段实训项目的设计非常重要,原则是既要使学生有切入点能够动手又要使各章的内容之间有联系点。

(三)案例教学法

C语言的教学,教师一般受传统应试 教育 的影响,狠抓理论考试,忽略了程序设计能力的培养,把授课重点放在程序设计语言的基本语法的讲授和掌握上,所选的编程实例大多用于语法规则的验证和说明,仅从程序设计语言的使用这个单一的角度进行教学,而使得大多数学生在学完本课程后,“吃不透、用不活”,表现为学生在程序调试时,对程序中出现的逻辑错误经常不知所措,在开发较大的应用程序时,不知道如何入手。

采用案例教学法,以程序设计为主线,以编程应用为驱动,通过案例和问题引出教材内容,重点讲解程序设计的思想和方法,穿插讲解相关的语言知识。使教学效果既有深度又有广度,学生实际动手能力大为增强。

以上是我个人结合我院C语言程序设计的教学情况,自己总结了几点看法和一些改革 措施 ,拿出来和大家一起分享,请大家多提宝贵意见。通过这次学习,我将会灵活运用几位教授的教学 经验 ,根据我院的教学对象,调整一些上课方法和措施,望能更好的提高教学质量。

c语言程序设计心得三

通过此次C语言程序设计实践,本人实在是获益不浅!C语言是上个学期开的课程,所以这个学期并没怎么看过,当要开始设计的时候,还真不知从哪下手!结果,第一次的上机,我傻坐着不知道该做什么,后来就写了几个预处理命令。回去以后,我想,这样不行,这样下去还得了!我就重新复习了一遍我们上个学期学习的内容,发觉自已有许多都遗忘了!特别是有文件的 *** 作,几乎是一遍空白!温习过后,开始做题!

一开始做题,也是有点模糊,在指导老师的指导下,我们慢慢的进入状态,我们做的是一个通讯录,内容包括很多。运用的函数也是非常的复杂,我们一组有七个人,我分工合作,首先我一起完成了结构题,然后我们一人各负责一个函数程序的设计,经过几星期的努力,我们完成了大半个程序,但是总是有很多错误出现,有好多是些小问题,这都是我们粗心大意造成的,所以设计程序一定要仔细,不容一点的马虎。当然也有大问题,关于文件的 *** 作,是我们最大的问题,不过,我们做好后,经过老师的讲解和改错,我们也懂得设计和运用了。同时,也让我知道了,合作的力量,如果是孤军奋战的话,我也不能在规定时间内完成,当然,也多亏老师的指导。

这次设计,让我重新掌握了C语言,而且还得到了用C语言解决实际问题的宝贵经验!

↓↓↓点击下一页还有更多精彩的C语言编程 学习心得 ↓↓↓

     由于自学ks的社会性,为了体现公正和公平,试题不能像本科院校中常见的那样重复使用。自学ks的试卷内容有广泛且分散的特点,这要求考生必须全面地复习教材的内容。

   1.单项选择题

试题中的单项选择题中的多数试题涉及整本教材介绍的概念和知识点。为解答这类试题,要求考生要熟练地掌握和熟记大纲中指出的“识记”和“领会”的内容。考生应摘出教材中有关c语言的重要概念、定义、有关语言成分性质的叙述,对它们深入的理解和熟记,并对语言的一些基本规定能作简单的应用。清考生注意,理解、熟记和大段地背诵的区别。由于考题表现形式的多样性,理解是最重要的,仅对关键性的概念才有准确熟记的必要,多数的概念因是理解,并要求能熟练应用。试题通常要求对某个概念、术语或计算结果作出判断,或对一些规定作简单的应用等。由于计算机科学是一门新兴学科,许多概念还没有唯一性的定义,不同书籍由于出发点或论述领域不同,同一概念会有不同的说法,为此考生在复习迎考时,不要脱离指定自学ks教材,而从其它教材出发进行复习。

「例1」设有以下代码定义字符数组c和字符指针变量pc:

char c[10]=“abed”,*pc=c;

问*(pc+4)的值。供选择的答案有:

①“abcd‘   ②'\0'    ③ ' d'         ④不能确定

上述代码使字符数组c的前5个元素依次为:c[0]=‘a’c[1]=‘b’, c[2]=‘c’, c[3]= ‘d',c[4]=’\0‘。初始化pc=c使字符指针变量pc指向c数组的首元素c[0].而表达式pc+4的值是c[4]的指针。因此,表达式*(pc+4)就是引用c[4].所以问题的解答为②。

「例2」指出下列说法中错误的叙述。

①构成数组的所有元素的数据类型必须是相同的

②用指针法引用数组元素允许数组元素的下标越界

③一维数组元素的下标为1,2,3,……

④定义数组时的长度可以是整型常量表达式

由数组的概念知,数组的全部元素有相同的数据类型,另在定义数组时,需指出数组的元素个数,指定数组元素个数的表达式必须在编译时可计算的,即只允许是常量表达式,不可以含有变量。所以①和④是正确的叙述,不是问题要求的解答。在c语言中,当指针指向辩好肆数组的某元素(不一定是数组的首元素)时,可利用该指针加减一个携轿整表达式,构成指针表达式指向数组的某元素,然后用取内容运算符。间接引用指针表达式所指的数组元素。如有代码:

int a[100],* p;

表达式p=&a「20]使p指向a[20],,通过p引用数组a[l],可用表达式*(p-19)。由c语言的约定,当指针指向数组某元素时,用指针表达式引用它所指的数组的某元素也可写成等价的下标引用形式,如表达式*(p-9)可以等价地写成p[-19].这里-19是一个负整数,所以叙述②也是一个正确叙述。这种表示方法是借用下标表示法,与指针加减的整表达式引用数组元素,其中加减的整数实际不是数组元素的下标。还需要指出一点,指针与整表达式和的新指针不应该指向数组之外的别的地址。如前述的例子中指针变量p指向a[20],表达式*(p+n)中的 n要求不能小于 20,也不能大于 79.最后,c语言规定数组元素的下标从0开始顺序编号,所以选择③才是错误的叙述。

2.填充题

填充题要考核的内容与选择题的考核内容基本相同,但考核的形式不同。填充题的试题多数是从基本概念儿语言关于数据类型、程序对象、程序结构等的规定、c程序设计基本技巧等引伸的具体应用。如c语言规定每个字符占一个字节,每个字符串除存储它所包含的字符外,在字符串最后一个字符之后还存有一个字符串结束符。对于这样两个基本概念和规定,填充题可能是问具体的一个字符和一个字符串各占多少个字节等。因填充题是概念或规定的具体应用,解答袜消的难度也就比选择题的要大,不可能有猜得分的机会。

「例3」下列函数的功能是统计并返回形参指针s所指向的字符串所含字符‘a’的个数。试完成程序,写出应填写在程序空框中的代码。

int counts(char *s)

{ int n;

for( n=0;。 ; s++)

if(*s==‘a’)n++;

return n;

}

为统计字符指针s所指字符串包含的某字符的出现次数,必须用一个循环顺序考察整个字符串。由从指针s所指字符串的首字符开始,每考察一个字符后,指针s后移一个字符位置,考察循环直至字符率结束终止。所以填写在空框中的正确代码可写成* s! =‘\ 0’。由于字符串束符‘\ 0’的代码为 8位全0,其值为 0,正确解答也可写成* s!= 0,或更简洁地写成*s.

「例4」在内存中存储‘a’要占用____字节,存储“a”又要占用____字节。

由于c语言规定字符只占1个字节,一个具体的字符当然也只占1个字节。字符串“a”要有1个字节用于存储字符‘a’,另需要1个字节存储字符串的结束符,所以它要占用连续的2个字节。

「例5」设整型变量a、b的值均为3,执行语句:

b= a++, b++, ++a;

后,a的值为____,b的值为____.

该试题的表达式书写形式一般不会直接出现在实际应用程序中,但作为考核考生对有关表达式的计算规则,也不失为是一个很有意义的试题。赋值表达式自右至左计算,而逗号运算符的优先级最低,并且逗号表达式自左至右逐一计算,并以最后子表达式的值为逗号表达式的结果。上述表达式的计算顺序可用以下3个表达式语句等价表示:

b=a++;b++;++a;

由以上一系列表达式知,变量b的最终值与其原来值无关,表达式b= a+十是先计算a++。表达式a+十的值是变量a的原先值3,但又让变量a增1后变为4.然后表达式b++又使变量b增1,变成4.而计算++a的值,是让a增1,使a的值变为5.所以上述表达式使变量a的值变为5,b的值变为4.

如上述表达式改写为:

b+=(a++,b++,++a);

请读者回答执行该表达式后,变量a和b的值又分别为多少。

3.程序分析题

程序分析题要求考生阅读程序,回答程序的输出结果,或指出程序的功能。回答这类问题,要求考生将自己当作一台假想的计算机,模拟执行序。

对于这类试题常有两种可用的方法。一是从程序的初值、循环结构、条件等发现程序的规律厂是完全从模拟执行出发读程序,求出程序的输出结果。如采用后一种方法,由于程序执行的动态性,程序中的有关变量,随着程序的执行,变量的值就会不断变化。一般来说,随时记住全部变量的当前值是非常困难的。一个行之有效的方法是用一个变量表,将程序中的全部变量罗列在该表中,某个变量值的变化记录在该变量当前值的栏中,这样就能方便地列出各个变量的动态变化过程。在这里,考生要当心函数形参及函数的局部变量与实参变量及程序的外部全局变量同名的情况。为了区别它们,对于函数形参和局部变量可以标上它所属的函数名,以与同名的实参变量及外部全局变量相区别。由于试题程序总是完成某种有一定意义的计算工作。一般来说,程序的执行过程舍有某种规律存在。如能找出程序的规律,就不需要逐句阅读程序的语句,能直接导出程序的结果。程序的规律从以下几个方面着手:有关变量的初值,特别是数组的初值;程序的循环控制结构,特别是遍历数组的循环,它的循环控制变量将控制数组元素下标的变化;循环体中的语句的条件,一般条件有两种形式,一种是由数组元素值的大小描述,另一种是由元素的下标值描述,前者用于对其值满足某种条件的元素进行指定的计算,后者用于对满足条件的某些位置上的元素进行指定的计算。

最容易出题,变化也最多的是数组(包括字符串)处理程序,正确解答这类试题要熟练掌握两点:一是引用数组元素的两个等价方法,即用数组首元素指针(数组名)和下标引用数组元素,及通过指向数组元素的指针间接引用数组的元素;二是一些常用的简单算法,如数组或字符串遍历、插入元素或删除元素,以及常用的排序方法等。对于文件处理程序,要注意文件当前的读/写位置,即对于读文件,注意当前读人的数据及前读头位置;对于写文件,要注意当前写入的数据。另外要特别指出的是,通过读程序,能发现程序执行的规律是非常有用的技术。但这个技术的掌握是建立在熟读大量的程序和自己编写过大量程序的基础上的。如一个程序是对数组的前n个元素执行某种 *** 作。考生在阅读这种程序时,不妨假定输入的n值为4或5,将n等于4或5的结果类推到任意的n.

「例6」阅读下列程序,写出程序运行后的输出结果。

# include <stdio.h>

main()

{int a[][3]={1,2,3,4,5,6,7,8,9};

int i,j,s1= 0,s2= 0;

for(i= 0;i<3, i++)

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

if(i==j)sl+=a[i][j];

if(i+j==2) s2+=a[i][j];

}

printf(“sl=%ds2=%d\n”, sl,sz);

}

首先将二维数组a的初值写成每行3个元素,由于程序只提供9个初值,a只有3行:

1 2 3

4 5 6

7 8 9

程序用a[i][j]引用a的元素,所以外循环i是控制行的循环,内循环j是控制列的循环,这两重循环控制遍历整个数组 a的全部元素。条件 i==j表示当行下标与列下标相等时,即是 a的主对角钱上的元素时,将它们累计到变量s1,所以s1的值为15.条件i+j==2用于控制行下标与列下标之和为行列下标之和为某个常数的元素是同在某条右高左低斜线上的元素。对于3行3列的二维数组来说,就是副对角线上的元素。将这些元素累计于变量s2,所以s2的值也是15.

「例7」阅读下列程序,简述程序的主要功能。

main()

{ int i,s[10],*p=&s[9];

for(i=0;i<10;i++) scanf(“%d”,&s[i]);

for(;p>=s;p——) print(“%d”,*p);

printf(“\n );

}

程序中定义的变量i用于循环控制,数组s用于存储读人的整数,指针变量p的初值指向数组s的末元素。程序的第一个循环用于顺序输入数组s的10个元素的情。从程序的第二个循环代码知,每循环一次,指针p减1,即指向数组的前一个元素,循环条件直至循环处理了数组的首元素后结束,循环体只是简单地输出指针当前所指的数组元素。所以该循环实现从数组的末元素开始逆序遍历数组输出。这样程序的功能可简述如下:

“顺序输入10个整数,并逆序输出它们的值。”

4.程序设计题

程序设计题是给出问题,要求考生自己独立编写程序。考生平时认真参加上机实习,自己编写程序,是能解答这类试题的基本条件。多数考生学了程序设计以后,能基本了解教材的内容,能解答大部分前述三种类型的试题,平时还能指出别人程序的错误,但由于很少自己动手,或不知道从何着手编写程序等原因,自己还一直不会编程序。简单程序的设计通常要包含两个步骤:首先是设想计算方法,即用什么方法来解决给定的计算问题;其次是将求解方法告诉计算机,命令计算机怎么做。第一步工作人们采用常人的思维习惯,而第二步工作必须采用计算机的思维习惯。对于程序设计的初学者来说,最困难的可能还是很难适应计算机程序的思维习惯,人们几乎无法承受程序必须将要计算机完成的计算过程描述得几乎绝对的精细和精确。但对计算机来说,这又是非常必要的。编写程序就是在向计算机讲话,非常精确地告诉计算机怎么做。

「例8」编一个程序,从名为“text.txt”的文本文件中读取一个字符显示在屏幕上。

本例题要求实现最简单的文件处理。如考生知道文件处理程序的编写要点,就能方便地写出程序。

文件处理程序有以下几个要点:

(l)在程序的开始处,用包含预处理命令,包含标准文件stdio.h.定义文件指针变量和存储文件名的字符数组。如以下代码所示:

# include<stdio.h>

file *fp  /* 定义文件指针变量 fp*/

char fname「40」=“某文件名”;

(2)如文件名在程序执行时输入,可用以下代码:

prinif(“请输入文件名(包括文件的目录路径、文件的扩展名)\n);

scanf(“%s%*c”,fname);/*输入文件名及其随后的回车符。/

(3)使用文件前,必须先打开文件,常用的有两种打开方式:

老文件打开为了让程序从正文文件输入数据,用读方式打开,则用以下代码:

if((fp=fopen(fname,“r‘’))== null) {/* 为读打开*/

printf(“%s文件不能打开,结束程序的执行\n”,fname);

return;

}

若文件打开为了让程序向正文文件输出数据,则用以下代码:

fp=fopen(fname,“w”);/*为写打开*/

读打开时,要求被打开文件已存在。写打开时,若被打开文件不存在,则建立一个以fname内容命名的新文件;若被打开文件已存在,则该文件上的数据被删除。

(4)文件使用结束后,要及时关闭,如以下代码所示:

fclose(fp);/* 以后中又可用于打开文件。/

(5)调用有关文件输入输出库函数。最经常使用的有:

调用函数 fgetc()从文件输入下一个字符,如:

ch= fgetc(fp);/*将输入字符存于变量 ch*/

调用函数fscanf()从文件按指定格式输入数据,如:

fscanf(fp,“%d%d”,&k,&j);/*从文件输入两个整数分别存于k和j*/除在第一位置增加一个文件指针变量实参外,其余与函数scanf()的用法全相同。

调用函数fputc()向文件输出一个字符,如:

fputc(ch,fp);/*将变量ch中的字符输出到文件。/

调用函数fprintf()向文件按指定格式输出数据,如:

fprintf(fp,“%d%d\n”,k,j);

该函数调用是按格式要求将k和j的值输出到文件。除在第一位置增加一个文件指针变量实参外,其余与函数prinif()的用法全相同。

(6)从正文文件逐一输入字符,作某种处理的程序结构为:

int c;/*若要用eof测试文件结束,则不能为char类型*/

file *fp;

……/*说明有关变量和设置初值等*/

if((fp=fopen文件名,“r”))==null){/*以输入方式打开*/

printf(“不能打开文件%s./n”,“文件名字符列”);

return;

}

while((c=fgetc(fp))!= eof){

……/* 这里对刚读人的字符信息c作某种处理*/

}

fclose(fp);

……/* 输出处理结果*/

(7)字符逐一生成输出,形成新文件程序的一般结构形式有:

int c;/*也可以是 char类型*/

对于本例题,只要包含上述(1)、(3)、(5)和(4)即可,写成完整程序如下:

# include<stdio.h>

file*fp;/*定义文件指针变量 fp*/

char fname[40]=“text.txt”;

main()

{char c;/*或 int c*/

if((fp= fopen(fname,“r”))== null){ /*为读打开*/

printf(“%s文件不能打开,结束程序的执行\n”,fname);

return;

}

c=fgetc(fp);/*将从文件输入的字符存于变量c*/

printf(“%c\n”, c);

fclose(fp);/*中所指文件关闭*/

}

「例9」编写函数f,该函数没有浮点型数组形参float[]和整型形参n,函数的功能是计算并返回p[]中前n个元素的平均值。由于函数返回已知数组的平均值,函数的头有以下形式:

float f( float p[], int n)

函数为了计算平均值,需要两个计算步骤,首先是求出数组元素之和,然后将求得的和除以元素个数。严格地说,函数还因防止形参n小于等于0的情况,假定当n小等于0时,函数返回0值。为求数组元素和,需要一个存储和的变量(例如说s)。求和通过遗历数组实现,有两种实现方法:

一是引入一个循环控制变量(例如说i),并让 i作为弓佣数组元素的下标(如 p[i])。所以有以下代码:

float f(float p[], int n)

{ int i; float s;

if(n<=0)return 0.0;

for( s=0.0, i=0; i<n; i++) s+= p[i];

return s/n;

}

二是由于函数的数组形参实际是一个指针变量,遍历数组直接可用指针形参p实现。循环次数可让变量 j控制, j的初值为 n,每次循环后让 j减 1,循环直至 j为 0结束。写成 c代码如下:

float f( float p[], int n)

{ floa s; int j=n;

if( n<=0) return 0.0;

for( s=0.0; j>0; j——) s+=*p++;

return s/n;

}

windows程序设计也就是基于微软的windows *** 作系统而进行的程序设计。

(这是一句废话,但不要小看废话阿!真理往往就在其中)你有没有想过,为

什么是基于windows *** 作系统呢?下面就来解答:windows应用程序需要利用

由windows *** 作系统开放出来公用用程序使用的应用程序接口“滑迹迹API”(说道

重点了)windows提供了上千种API函数供应用程序使用。

上面说了,windows程序其实就是在非逻辑的使用这些API函数,我这里

提到了“非逻辑”三个字(这是本人的看法),这正是windows程序的精髓,这

是一切windows程序运行的方式(可能严重了点)。非逻辑也就是指程序不是

按照事先安排好的顺序来进行的,是根据用户的不同 *** 作或者是其他某些原因

一步一步进行的。这种运行方式就叫做“消息驱动”

简单一点来解释一下何谓消息驱动,就是指应用程序始终在等待(等待

一词也许不他恰当,但可能好理解),它绝对不是在等待谁会给它爱(本人

爱开玩笑请别见怪!)它是在等待用户或者是系统的消息(也就是命令),

当接到消息后呢,它会把消息通过DispatchMessage(&msg)传递给窗口函数

(窗口函数就是一个应用程序的核心)窗口函数就会对照事先由程序编写好

的消息对照表调用对应的方法来处理消息。这样就完成一个消息的处理,接

下来准备处理下一个消息。

你也许会问那不是无休止的运行下去了吗?当然不会,下面我用程序

本身来说明这个问题:

//消息循环,通过此处来不断的取得消息。

while(GetMessage(&msg,NULL,0,0))

//消息进行一些转换

TranslateMessage(&msg)

/州缺/把消息传向窗口函数

DispatchMessage(&msg)

}

return msg.wParam

就是这样了:当我们点击窗口右上角的小叉或者点击退出按钮时,

windows就会自动在我们的消息队列中加入一条消息“WM_DESTROY”,这

时呢窗口程序有这么一部分:

switch(message)

{

//其它代码

.........

//

case WM_DESTROY:

PostQuitMessage(0)

return 0

相信一般的朋友都会明白吧,它的作用的就是在接收到WM_DESTROY时呢,

通过调用PostQuitMessage(0)让windows在消息列表中呢在加入另一条消

息“WM_QUIT".

当GetMessage函数抓取到WM_QUIT时返回0,其余返回非0值,懂了吧,

这下可以退出消息循环了。

这就是windows程序设计信并最基础的部分了,可以说是核心。

该说一些心得了,我认为学习windows程序设计不要基于某一部分,

而要把握住其大局,要有整体观,有了整体观对windows程序设计有了

一定的了解后在对其各部分下功夫(这下可不是照顾全局了,要静下

心来细心的咀嚼,要不然你会咽到的。)这样才不会走火入魔(嘿嘿)

就写到这吧,以后等我水平高些了再写(还早着呢,嘿嘿),希望

我没白费功夫,也希望对你有用,88。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12556052.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存