c程序设计程序改错题

2024-06-17

c程序设计程序改错题(共8篇)

c程序设计程序改错题 篇1

若high的值为:100,则函数的值为:732。

请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

#include #include #include #include int fun(int high){int sum=0,n=0,j,yes;/************found************/ while((high>=2)&&(n<10){ yes=1;

for(j=2;j<=high/2;j++)/************found************/

if(high%j==0){yes=0;break}

if(yes){sum+=high;n++;}

high--;} return sum;}

main(){system(“cls”);printf(“%dn”,fun(100));} 第1 处内容填写有误

第[1]处操作错误

题面要求操作:内容为[while((high>=2)&&(n<10))] 实际操作结果:内容为[while((high>=2)&&(n<10)] 第2 处内容填写有误

第[2]处操作错误

题面要求操作:内容为[if(high%j==0){yes=0;break;}] 实际操作结果:内容为[if(high%j==0){yes=0;break}]

本题的考核点是C语言中一些规定的应用。

本题中的第一处错误是:在C语言中,“{”和“}”应成对出现,所以程序中的语句“ while((high>=2)&&(n<10)”应改为“while((high>=2)&&(n<10))”或相同作用的语句。

本题中的第二处错误是:C语言中,“;”是语句的一部分,是语句结束的标志,不可缺少,所以,“ if(high%j==0){yes=0;break}”应改为“if(high%j==0){yes=0;break;}”或相同作用的语句。

本评析仅作参考。

学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:按分数的高低排列学生的记录,高分在前。

注意:部分源程序存在考生文件夹下的文件prog91.c中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include #define N 16 typedef struct {

char num[10];

int s;} STREC;int fun(STREC a[]){

}

main(){ STREC s[N]={{“GA05”,85},{“GA03”,76},{“GA02”,69},{“GA04”,85},{“GA01”,91},{“GA07”,72},{“GA08”,64},{“GA06”,87},{“GA015”,85},{“GA013”,91},{“GA012”,64},{“GA014”,91},{“GA011”,91},{“GA017”,64},{“GA018”,64},{“GA016”,72}};

int i,n;FILE *out;

fun(s);

printf(“The data after sorted:n”);

for(i=0;i

{ if((i)%4==0)printf(“n”);

printf(“%s %4d”,s[i].num,s[i].s);

}

printf(“n”);

out=fopen(“out16.dat”,“w”);

for(i=0;i

{ if((i)%4==0 && i)fprintf(out,“n”);

fprintf(out,“%s

%4d”,s[i].num,s[i].s);

}

fprintf(out,“n”);

fclose(out);}生成的结果文件的内容有误

文件[out16.dat]未创建

本题的考核点是按分数的高低排列学生记录的算法。

解题思路:通过选择法或其它的方法对学生记录按分数从高到低进行排序。

本评析仅供参考。

c程序设计程序改错题 篇2

关键词:C语言,MFC,C/S架构,程序练习

C语言是一门非常重要的专业基础课, 对于后续课程的学习有着重要的影响, 许多学生在学习C语言之前, 有着浓厚的学习兴趣, 想对照原始程序录入代码后运行, 从而了解C语言。针对此问题设计开发了一个基于C/S模式的练习系统, 为初学者练习C语言程序使用。系统采用MFC技术和SQL Server数据库系统实现。

1 系统简介

如何提高C语言的编程能力, 不但是老师关心的课题, 也是广大学生面临的一个问题。在学习C语言时, 虽然老师在课堂上讲了许多的语法, 讲的也很清楚, 但是一到下课, 好像又全都忘记了。究其原因还是学生在课余时间对C语言编程练习的太少了。尤其是对于初学者, 由于程序的概念比较抽象, 一下很难掌握其中的语法, 也很难适应使用非常严谨的形式化语言思考、解决问题。因此, 学好C语言的最好途径就是大量的练习编写程序, 通过输入源代码后运行程序, 观察程序运行结果, 体会程序的本质, 在练习的过程中掌握程序的概念, 提高程序技能。

对于一些刚开始学习写C语言的学生来说, 在练习程序时往往会找一些参考书, 把参考书上的例子输入进开发环境, 例如VC6.0等, 然后编译运行, 查看运行结果。这虽然是一个比较好的练习途径, 但是它存在三个问题:

第一:是学生在对照参考资料输入程序时, 由于一面要看书, 一面要敲键盘。由于对程序本身不熟悉, 很有可能将程序中的字母敲错, 例如大小写的问题, 中英文的问题、字母漏写的问题等。对于初学者, 他自己由于不懂其中的语法, 也很难找出其中的错误, 如果没有老师指导可能就不知所措了, 久而久之就失去了信心和兴趣。

第二:很多学生由于不熟悉开发环境, 在练习程序时由于不会操作开发环境, 而不知道如何练习, 有时由于操作不当而导致了一些莫名其妙的错误, 而不知道如何处理。

第三:有些参考书的例子, 由于这样那样的原因, 可能本身就存在错误, 这样例子给学生练习可能会适得其反。

因此本项目针对初学者在练习编写C语言时出现的问题, 研究开发C/C++编程练习系统。在学生登陆后本系统后, 从数据库服务器中下载样例程序库, 供学生选择练习。练习时, 可以从样例程序库中选择程序练习, 并将选择的程序代码逐行显示在屏幕上, 供练习者参阅。练习者根据样例程序将程序代码输入到练习框中, 在输入时, 系统能自动检查输入的程序是否和原始程序一致, 如果输入的和原始程序不符, 系统自动提示其输入错误的位置。在学生输入完毕后, 系统可以记录输入程序所花费的时间和正确率, 供任课教师查询。系统能将学生输入的代码, 编译、连接、生成一个EXE程序, 并调用该程序, 供练习者运行使用。

2系统设计与分析

2.1 系统体系结构

系统开发采用VC6.0作为开发平台, 采用客户端/服务器 (Client/Server) 的模式。

C/S模式的优点:

1) C/S架构的界面和操作可以很丰富。

2) 安全性能可以很容易保证, 实现多层认证也不难。

3) 由于只有一层交互, 因此响应速度较快。

客户端提供用户界面, 完成用户的输入操作和业务逻辑处理操作, 采用VC6.0开发。客户端处理后的数据保存在数据库服务中。

2.2 系统流程设计

系统流程如图2所示。

在练习者登陆系统时, 将其用户名和密码在数据库服务器中的用户表查找, 如果存在, 登陆成功并确定用户的类型是学生还是管理员, 从而给用户分配相应权限。

对于学生用户, 系统从服务器下载管理员已经编辑好的样例程序, 根据选择的程序代号, 将该程序的源代码显示在屏幕上, 等待学生输入。在输入时, 系统实时监听键盘事件, 将所输入的代码与样例程序对比, 对于错误的代码, 将其反色显示。在输入完毕后, 将输入代码保存到临时文件中, 调用C编译器, 对文件进行编译、连接生成EXE程序, 并调用执行。

对于管理用户, 可以增加样例程序、查看学生练习纪录。

2.3 系统功能模块设计

根据系统功能要求, 对系统功能模块进行划分, 将系统分为3个模块:系统管理模块, 学生练习模块, 教师管理模块。系统功能模块图如图3所示。

系统管理模块主要是用于对登录用户的判断。

学生练习模块主要是学生练习和统计学生练习的正确率和练习时间数据。

教师管理模块主要是用于管理练习程序和查询学生练习的成绩。

2.4 数据库设计

1) 数据库分析

在C/C++程序设计练习系统中涉及到用户信息, 代码库信息、学生成绩信息。建立三个表保存对应的信息。

2) 数据库概念设计

用户信息实体

用户信息实体包括用户名, 用户密码, 用户权限。

程序信息实体

程序信息实体包括程序名, 用户ID, 程序代码, 程序简介。

3 系统实现

3.1 学生编程练习功能

该功能主要使学生可以选择相应的程序样例程序, 将其源代码显示在屏幕上。供学生对照练习使用。在练习输入样例程序中某一行代码时, 系统可以将当前行反色, 便于学生对照。学生练习完成后还可以编译运行他们的练习程序。

当学生开始练习时, 可以从数据库中下载样例程序, 也可以从本地导入已经编辑好的样例程序。

学生编程练习功能如图6所示。

学生输入区域是利用系统控件Rich Eidt实现的。当前行的反色显示则是给样例程序的当前行加上了背景色。字体背景色的改变是设置了Rich Edit的字体的样式, 用到了字体结构 (CHARFORMAT) 和设置Rich Edit指定区域的文字背景色 (Send Message (EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM) &cf) ;) 。

函数原型:

typedef struct_charformat{

UINT cb Size;//特殊结构字节大小

DWORD dw Mask;//设置文字属性的有效信息

DWORD dw Effects;//文字效果

LONG y Height;//文字高度

LONG y Offset;//文字的偏移

COLORREF cr Text Color;//文字颜色

BYTE b Char Set;//字符集

BYTE b Pitch And Family;//字体家族和间距

TCHAR sz Face Name[LF_FACESIZE];

//以字符数组指定字体名称

}CHARFORMAT;

设置Rich Edit控件中指定区域的文字的背景色代码示例:

cf.cb Size=sizeof (CHARFORMAT2) ;

cf.dw Mask=CFM_BACKCOLOR;

cf.cr Back Color=RGB (0, 255, 0) ;//背景颜色为绿色

m_richedit.Set Sel (0, 2) ;//设置处理区域

m_richedit.Send Message (EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM) &cf) ;

3.2 正确率统计

学生在编辑框中进行输入的同时, 编辑框内容改变, 触发响应事件, 在响应事件回调函数中读取学生输入的部分程序, 与模板程序进行逐个比对, 正确录入的字母数与模板程序的总长度的比率即为学生录入的正确率。

正确率统计代码如下:

3.3 练习计时

学生在练习时, 会对学生练习的时间有一个记录, 实现思想是当学生的鼠标的焦点落在学生练习的输入区域时开始计时, 当学生练习输入完成时计时结束。这时就采集到了学生练习当前程序所用的时间。实现是采用定时器完成的, 利用WM_TIMER来设置定时器, Set Timer函数原型:

UINT_PTR Set Timer (

HWND h Wnd, //窗口句柄

UINT_PTR n IDEvent, //定时器ID, 多个定时器时, 可以通过该ID判断是哪个定时器UINT n Elapse, //时间间隔, 单位为毫秒TIMERPROC lp Timer Func//回调函数

) ;

在MFC程序中Set Timer被封装在CWnd类中, 调用就不用指定窗口句柄了, 于是Set Timer函数的原型变为:

UINT Set Timer (

UINT n IDEvent,

UINT n Elapse,

void (CALLBACK EXPORT*lpfn Timer) (HWND, UINT, YINT, DWORD)

) ;

当使用Set Timer函数的时候, 就会生成一个定时器, 函数中n IDEvent指的是定时器的标识。n Elapse指的是时间间隔, 也就是每隔多长时间触发一次事件。第三个参数是一个回调函数, 可以将它设定为NULL, 即使用系统默认的回调函数 (On Timer函数) 。

4 结束语

本系统为广大的学生学习C语言编程的基本知识提供了一个学习平台, 方便学生练习与掌握C语言编程的基本语法知识, 通过使用本系统, 增强了学生学习C语言的兴趣, 为后续计算机相关课程的学习打下良好的基础。

参考文献

[1]侯俊杰.深入浅出MFC[M].武汉:华中科技大学出版社, 2001.

[2]孙鑫, 余安萍.VC++深入详解[M].北京:电子工业出版社, 2006.

[3]杨喜林.可视化程序设计Visual C++[M].北京:北京理工大学出版社, 2010.

c程序设计程序改错题 篇3

关键词:C语言 学习兴趣 趣味程序 实例

一、教学过程中存在的问题及产生问题的原因

1.绝大部分学生文化基础差,开始学习时经常会产生厌倦感

C程序设计这门课程,一般在新生入学的第一个学期或第二学期就开设了,是学生接触的计算机编程的入门课程。这门课程结合了语言、算法、数据结构和程序设计方法等方面的知识。学生对着这些知识相当陌生,而且很多内容跟他们所熟悉的知识内容不相同,使他们经常感觉这些内容很难理解,枯燥无味,从而产生厌倦感。

2.对编程语言的学习方法不能适应

大部分学生在开始学习这门编程语言时,还是沿用了之前旧的学习方法,而这门新课程的内容是需要很好去记忆和注意的,他们就没能很好地掌握起来。

3.学生上课注意力不集中,上机实践课缺乏积极主动性

在理论课教学中,学生面对着课本上大量抽象概念的理论内容,就会出现注意力不集中的现象。而到上机操作环节,教师要学生自己编写一道程序,学生往往需要很久才会编出来,并且如果一个小程序由于错误运行不出,就马上放弃编程。有的学生看到编程题,就提不起精神去编写,一旦没有动手解决问题的欲望,就经常偷偷地玩游戏。

二、C语言设计课程教学建议

要解决上面所遇到的三种情况,教师在学生开始学习的时候就要指导他们这是一门新课程,在学习上要用新的学习方式来学习。在教学方式上,教师要尽量降低C语言的难度,在讲解理论知识点的过程中,增加一些趣味性的程序,使学生能从中学到知识。

1.从教学语言上提高趣味性

在课堂教学上,教师要使用趣味幽默的语言,接近生活。这样既激发学生的学习兴趣,又能引发学生积极思考和制造轻松的气氛,也能让学生轻松地接受知识,增强学习的兴趣和学习动机,从而也使学生接受这位老师。

2.增加趣味练习,提高学生的学习兴趣

兴趣是一个人力求认识和趋向某种客体的积极态度的个性倾向。培养学生学习兴趣,是提高课堂教学效果的重要途径。怎么从枯燥的C语言中解脱出来,让学生提高兴趣去学习呢? 我们可通过编写小游戏程序或与生活相关的程序来提高它的趣味性,这样程序设计就像电脑游戏一样充满好奇,富有乐趣。

(1)从简单的单输出语句开始。我们都知道,现在好多课本第一章基础知识里,都有这样一道编程题:“在屏幕上打印出‘Hello, world”,这个是学习编程的第一个程序。我们可以把这个输出改成中文的问候语句,在第一次上课时,让学生感觉到亲切,觉得这门课程可以将日常生活中的一些行为运用进来。

(2)随着学习的深入,我们还可以编写其他有趣的程序。传统的讲授型教学方法是灌输式的,是能较好地保证所讲授知识的系统性,但学生的学习思维和学习的积极性都处在被动状态,达不到理想的教学效果。

为了使学生能够学习掌握课本中相关的知识,对编程产生的兴趣,在教学过程中,教师要先从对学生有意义的问题出发,然后在讲解的过程中,把产生的问题与实际的例子结合起来,让学生能够发现并找到解决的方法。在这种方法中,我们可以将这些现实问题与计算机语言结合到一起,降低问题难度,使得学生对C语言有了印象,从而提高了学习的兴趣,使处于被动状态的学习转为主动的学习。例如我们可以给学生演示一些简单地用C语言编写的图形或让学生利通scanf()和printf()这两个标准输入出函数编写短小的程序。这样可以增强程序的趣味性,同时可以提高学生的兴趣,使学生觉得这种的编程比较有趣。从“简单”开始,慢慢再加大学习难度。

每一个人对一些比较有趣的事情都是非常感兴趣的。在教学讲解实例的时候,我们可以适当地加入一些生活的例子,充分利用学生的好奇心,增强了他们学习程序语言的积极性。比如我们讲解循环语句时可以利用这样的例子。有三对情侣举行婚礼,三个新郎为A,B,C,三个新娘为X,Y,Z。有人不知道他们谁和谁结婚,于是询问了六位新人中的三位,但听到的回答是这样的:A说他将与X结婚;X说她的未婚夫是C;C说他将与Z结婚。这人听后知道他们在开玩笑,全是假话。这里面,他到底谁跟谁结婚呢?

对于这样的问题,我们先把新郎A,B,C用1,2,3来表示。从题目的叙述中,我们可以得出下面的内容,A不与X结婚,即X≠1;X的未婚夫不是C,即X≠3;C不与Z结婚,即Z≠3;同时题意还隐含着X,Y,Z三个新娘不能结为配偶,则有:X≠Y且X≠Z且Y≠Z。

我们把问题变成普通的判断式,将式子写出来以后,可以利用列举法的推理运算列出所有可能出现的情况。

每一个循环表示每一个人都有三种可能性。在这所有的可能中,满足全部条件的两人即为情侣。这个例子既满足学生对问题的好奇心,又贴近生活,还能充分地说明C程序中循环结构,特别是多重循环的使用。这样既可以充分调动学生学习的积极性,将学生的从被动学习方式转换为主动学习方式,同时提高教学的质量,达到预期效果。这样的现象也叫自我效能感,让学生能够意识到计算机的编程语言是可以解决很多生活上的实际问题,因此也激发他们听课的兴趣。当然这样的例子还有很多,教师们要充分利用多媒体的功能,从不同的角度,不同的方面来提高教学的效果。

3.设计不同层次的编程实践环节,培养学生的动手能力

对于学生,要读懂一条程序并不是特别难,但是让他们自己根据问题来编写程序,很多学生就望而却步了。这时,我们就要根本学生的情况,设计编写一些适合他们的编程题目。比如说,我们在讲解条件分支语句时,我们可以利用生活中用来判定闰年的问题,来让学生自己分析判别的计算方法,找出判断方法后,用相应的语句来实现。分阶段地实现编程的内容,使得学生能品尝到阶段性的成功,增强学生攀登知识高峰的信心和勇气。

同时根据对学生知识掌握情况的了解,将学生进行搭配分组。在编写小规模程序时,学生自己可以通过相互间的讨论,对程序的每个部分进行分工,通力合作,最后完成整个程序的编写任务。这样促进不同层次学生的全面提高,也能培养学生如何将所学知识来应用到实际问题上,培养学生的互助互帮,团队合作的精神和集体观念。

教学方法是一门艺术,每个人所用的方法都不尽相同。教师不仅要懂得专业的知识,更重要的是要懂得如何把自己的专业知识传授给学生。C 语言的教学虽有一定难度,但要取得良好的教学效果,就要了解学生的心理,在各种不同教学方法的尝试下,找到符合学生实际的教学方法,采用多种形式与方法去激发学生的学习兴趣与学产动力,提高了教学的趣味性,这样学生才能很好地掌握和运用所学到的知识,就能收到良好的教学效果。

参考文献:

[1]王新萍,郑静.C语言程序设计教程[M].北京:电子工业出版社,2010.

[2]谭浩强.C程序设计(第三版)[M].北京:清华大学出版社,2005.

[3]白炽贵.C语言案例教程(第2版)[M].北京:电子工业出版社,2009.

[4]本书编写组.全国计算机等级考试二级教程C语言程序设计[M].北京:高等教育出版社,2005.

[5]蒋桂梅.提高C语言程序设计的教学趣味性[J].福建电脑,2007(7).

c程序设计程序改错题 篇4

C语言程序设计第01题 设计程序:

将满足条件pow(1.05,n)<1e6

以格式“%d,%.0f”写入到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ float y=1.05;int n=1;FILE *p;

/*

*

*

* 考生在这里添加代码

*

*

*/

fprintf(p,“%d,%.0f”,n,pow(1.05,n));

fclose(p);}

C语言程序设计第02题 设计程序:

将数组a的每1行均除以该行上的主对角元素(第1行同除以a[0][0],第2行同除以a[1][1],...),然后将a数组写入到考生目录中Paper子目录下的新建文件design.dat中。#include void main(){ float a[3][3]={{1.3,2.7,3.6},{2,3,4.7},{3,4,1.27}};

FILE *p;

/*

*

*

* 考生在这里添加代码

*

*

*/

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

for(j=0;j<3;j++)fprintf(p,“%10.6f”,a[i][j]);

fprintf(p,“n”);

}

fclose(p);}

C语言程序设计第03题 设计程序:求解百鸡问题。

已知公鸡每只5元、母鸡每只3元、小鸡1元3只。求出用100元买100只鸡的解。

将得到的解按公鸡、母鸡和小鸡的只数以“%d,%d,%dn”的格式写入到考生目录中Paper子目录下的新建文件design.dat中。#include void main(){ FILE *p;

int cock,hen,chick;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第04题 设计程序:

z=f(x,y)=10*cos(x-4)+5*sin(y-2),若x,y取值为区间[0,10]的整数,找出使z取最小值的x1,y1,并将x1、y1以格式“%d,%d”写入到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){

FILE *p;

int x,y,x1,y1;float z,z1;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第05题 设计程序:

计算字符串s中每个字符的权重值,所谓权重值就是字符在字符串中的位置值与该字符的ASCII码值的乘积。位置值从1开始依此递增。将每个字符的权重值,以格式“%d ”写入到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){

FILE *p;int i,w;

char *s=“we45*&y3r#$1”;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第06题 设计程序:

计算表达式1+2!+3!+...+12!的值,并将计算结果以格式“%ld” 写入到考生目录中Paper子目录下的新建文件design.dat中。#include void main(){ FILE *p;long s=1,k=1;int i;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第07题 设计程序:

统计满足条件x*x+y*y+z*z==2000的所有解的个数,并将统计结果以格式“%d”写入到考生目录中Paper子目录下的新建文件design.dat中。说明:若a、b、c是1个解,则a、c、b也是1个解,等等。#include void main(){ FILE *p;int x,y,z,k=0;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第08题 设计程序:

将字符串s中的所有字符按ASCII值从小到大重新排序后,将排序后的字符串写入到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ FILE *p;char *s=“634,.%@w|SQ2”,c;

int i,j,k,n=strlen(s);

/*

*

*

* 考生在这里添加代码

*

*

*/

for(i=0;i

fclose(p);}

C语言程序设计第09题 设计程序:

对x=1,2,...,10,求函数f(x)=x-10*cos(x)-5*sin(x)的最大值,并将该数以格式“%.3f”写到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ FILE *p;float f(float),max,x;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第10题 设计程序:

x[i],y[i]分别表示平面上1个点的x、y坐标,求下列5点各点间距离总和,并将该数以格式“%.4f”写到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ FILE *p;float s,x[5]={-1.5,2.1,6.3,3.2,-0.7};

float y[5]={7,5.1,3.2,4.5,7.6};int i,j;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第11题 设计程序:

计算数列1,-1/3!,1/5!,-1/7!,1/9!,...的和至某项的绝对值小于1e-5时为止(该项不累加),将求和的结果以格式“%.6”写到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ FILE *p;float s=1,t=1,i=3;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第12题 设计程序:

z=f(x,y)=(3.14*x-y)/(x+y),若x、y取值为区间[1,6]的整数,找出使z取最小值的x1、y1,并将x1、y1以格式“%d,%d”写入到考生目录中Paper子目录下的新建文件design.dat中。#include void main(){ FILE *p;float f(float x,float y),min;

int x,y,x1,y1;

/*

*

*

* 考生在这里添加代码

*

*

*/ } float f(float u,float v){ return(3.14*u-v)/(u+v);}

C语言程序设计第13题 设计程序:

将数组a的每1行均除以该行上绝对值最大的元素,然后将a数组写入到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ float a[3][3]={{1.3,2.7,3.6},{2,3,4.7},{3,4,1.27}};

FILE *p;float x;int i,j;

/*

*

*

* 考生在这里添加代码

*

*

*/

p=fopen(“design.dat”,“w”);

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

for(j=0;j<3;j++)fprintf(p,“%10.6f”,a[i][j]);

fprintf(p,“n”);

}

fclose(p);}

C语言程序设计第14题 设计程序:

在6至5000内找出所有的亲密数对,并将每对亲密数用语句fprintf(p,“%6d,%6dn”,a,b);写到考生目录中Paper子目录下的新建文件design.dat中。

说明:若a、b为1对亲密数,则a的因子和等于b、b的因子和等于a、且a不等于b。如:220、284是1对亲密数,284、220也是1对亲密数。#include void main(){ FILE *p;int a,b,c,k;

p=fopen(“design.dat”,“w”);

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第15题 设计程序:

计算多项式a0+a1*sin(x)+a2*sin(x*x)+a3*sin(x*x*x)+……的值,并将其值以格式“%.6f”写入到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){

FILE *p;

int i;float x=2.345,t=1.0,y=0.0;

float a[10]={1.2,-1.4,-4.0,1.1,2.1,-1.1,3.0,-5.3,6.5,-0.9};

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第16题 设计程序:

a、b、c为区间[1,100]的整数,统计使等式 c/(a*a+b*b)=1成立的所有解的个数,并将统计数以格式“%d”写入到考生目录中Paper子目录下的新建文件design.dat中(若a=

1、b=

3、c=10是1个解,则a=

3、b=

1、c=10 也是解)。

#include void main(){ FILE *p;int n=0,a,b,c;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第17题 设计程序:

数列第1项为81,此后各项均为它前1项的正平方根,统计该数列前30项之和,并以格式“%.3f”写到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ FILE *p;float s=0,a=81,i;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第18题 设计程序:

数组元素x[i]、y[i]表示平面上某点坐标,统计10个点中处在圆(x-1)*(x-1)+(y+0.5)*(y+0.5)=25内的点数k,并将变量k的值以格式“%d”写到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ FILE *p;int i,k=0;

float x[]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65};

float y[]={-6,4.3,4.5,3.67,2.42,2.54,5.6,-0.97,4.65,-3.33};

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第19题 设计程序:

在正整数中找出1个最小的、被3、5、7、9除余数分别为1、3、5、7的数,将该数以格式“%d”写到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第20题 设计程序: 数组元素x[i]、y[i]表示平面上某点坐标,统计所有各点间最短距离,并将其值以格式“%f”写到考生目录中Paper子目录下的新建文件design.dat中。#include #include #define len(x1,y1,x2,y2)sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))void main(){ FILE *p;int i,j;float c,minc;

float x[]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65};

float y[]={-6,4.3,4.5,3.67,2.42,2.54,5.6,-0.97,4.65,-3.33};

minc=len(x[0],y[0],x[1],y[1]);

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第21题 设计程序:

计算多项式a0+a1*x+a2*x*x+a3*x*x*x+...的值,并将其值以格式“%f”写到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ FILE *p;int i;float x=1.279,t=1,y=0;

float a[10]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65};

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第22题 设计程序:

计算多项式a0-a1*x+a2*x*x/2!-a3*x*x*x/3!+...的值,并将其以格式“%f”写到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ FILE *p;int i;float x=1.279,t,y;

float a[10]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65};

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第23题 设计程序:

数列各项为1,1,2,3,5,8,13,21,...,求其前40项之和,并将求和的结果以格式“%d”写到考生目录中Paper子目录下的新建文件design.dat中。#include void main(){ FILE *p;long s=0,i,a[40];

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第24题 设计程序:

累加a字符串中各个字符的ASCII码值,然后将累加和以格式“%d”写到考生目录中Paper子目录下的新建文件design.dat中。#include void main(){ FILE *p;int s=0,i=0;

char *a=“r235%^%34cdDW,.”;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第25题 设计程序:

在数组x的10个数中求平均值v,找出与v相差最小的数组元素并将其以格式“%.5f”写到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ FILE *p;int i,k=0;float x[10]={7.23,-1.5,5.24,2.1,-12.45,6.3,-5,3.2,-0.7,9.81},d,v=0;for(i=0;i<10;i++)v+=x[i];v=v/10;d=fabs(x[0]-v);

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第26题 设计程序:

计算27的小于1.00001的2n次方根(27的2(n-1)次方根不小于1.00001),将n以格式“%d”写到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ FILE *p;float x=27;int n=0;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第27题 设计程序:

计算2的平方根、3的平方根、...、10的的平方根之和,要求计算结果具有小数点后10位有效位数,并以格式“%.10fn”写到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ FILE *p;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第28题 设计程序:

选出5000以下符合条件的自然数。条件是:千位数字与百位数字之和等于十位数字与个位数字之和,且千位数字与百位数字之和等于个位数字与千位数字之差的10倍。计算并输出这些四位自然数的个数cnt及这些数字的和sum到考生目录中Paper子目录下的新建文件design.dat中。#include void main(){

FILE *p;

int cnt,sum;

/*

*

*

* 考生在这里添加代码

*

*

*/

fprintf(p,“%d,%d”,cnt,sum);

fclose(p);}

C语言程序设计第29题 设计程序:

求斐波那契(Fibonacci)数列中大于t的最小的一个数,结果由函数JSValue返回,其中斐波那契数列F(n)的定义为:

F(0)=0,F(1)=1

F(n)=F(N-1)+F(n-2)分别计算当t=1000和t=3000时的结果,将计算结果输出到考生目录中Paper子目录下的新建文件design.dat中。#include int JSValue(int t){

/*

*

*

* 考生在这里添加代码

*

*

*/ } void main(){

FILE *p;

p=fopen(“design.dat”,“w”);

fprintf(p,“%d,%d”,JSValue(1000),JSValue(3000));

fclose(p);}

C语言程序设计第30题 设计程序:

寻找并输出11至999之间的数m,它满足m、m*m、m*m*m均为回文数。

所谓回文数是指各位数字左右对称,例如121、676、94249等。满足上述条件的数如m=11,m^2=121,m^3=1331皆为回文数。

请编制函数int JSValue(long m)实现此功能,如果是回文数,则函数返回1,反之则返回0。最后把结果输出到考生目录中Paper子目录下的新建文件design.dat中。#include #include #include int JSValue(long m){

/*

*

*

* 考生在这里添加代码

*

*

*/ } void main(){

FILE *p;long m;

p=fopen(“design.dat”,“w”);

for(m=11;m<1000;m++)

{

if(JSValue(m)&&JSValue(m*m)&&JSValue(m*m*m))

fprintf(p,“%ld ”,m);

}

fclose(p);}

C语言程序设计第31题 设计程序:

找出1000至9999之间符合条件的自然数。条件是:若一个四位数的千位数字上的值小于等于百位数字上的值,百位数字上的值小于等于十位数字上的值,以及十位数字上的值小于等于个位数字上的值,并且此四位数是偶数,统计出满足此条件的自然数的个数cnt,以格式“%d”写入到考生目录中Paper子目录下的新建文件design.dat中。

#include void main(){

FILE *p;

int cnt=0;

/*

*

*

* 考生在这里添加代码

*

*

*/

fprintf(p,“%d”,cnt);

fclose(p);}

C语言程序设计第32题 设计程序:

计算500~800区间内素数的个数cnt和素数和sum。请编写函数JSValue()实现程序的要求。最后把cnt和sum写入到考生目录中Paper子目录下的新建文件design.dat中。#include int cnt,sum;void JSValue(){

int i,j,half;

/*

*

*

* 考生在这里添加代码

*

*

*/ } void main(){

FILE *p;

p=fopen(“design.dat”,“w”);

JSValue();

fprintf(p,“%d,%d”,cnt,sum);

fclose(p);}

C语言程序设计第33题 设计程序:

有数列:2/1,3/2,5/3,8/5,13/8,21/13,……求出数列的前40项的和。将结果以格式“%.6f”写入到考生目录中Paper子目录下的新建文件design.dat中。#include void main(){

FILE *p;

int i;

float f1=1.0,f2=2.0,t1=2.0,t2=3.0,s;

float f,t;

s=t1/f1+t2/f2;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第34题 设计程序:

x[i],y[i]分别表示平面上一个点的坐标,求下列10个点与点(1.0,1.0)的距离的总和,并将结果以格式“%.6f”写入到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){

FILE *p;

int i;

float x[10]={-1.5,2.1,6.3,3.2,-0.7,7.0,5.1,3.2,4.5,7.6};

float y[10]={3.5,7.6,8.1,4.5,6.0,1.1,1.2,2.1,3.3,4.4};

float s=0.0;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第35题 设计程序:

在数组a的10个数中求平均值v,将大于等于v的数组元素进行求和,并将结果以格式“%.5f”写到考生目录中Paper子目录下的新建文件design.dat中。#include void main(){ FILE *p;

int i;

float a[10]={7.23,1.5,5.24,2.1,2.45,6.3,5,3.2,0.7,9.81},sum,v=0;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第36题 设计程序:

在整数数组a中找出偶数放到b数组中,对b数组按从小到大的顺序进行排序后以格式“%3d”每行3个数写到考生目录中Paper子目录下的新建文件design.dat中。#include void main(){ FILE *p;

int i,j,temp,n=0;

int a[10]={7,6,20,3,14,88,53,62,10,29},b[10];

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第37题 设计程序:

某公司1999年年产量11.5万件,生产能力每年提高9.8%,求出产量能超过x万件的年份,结果由函数Year返回。

分别计算当x=20和x=30时的结果,将计算结果输出到考生目录中Paper子目录下的新建文件design.dat中。#include int Year(int x){

int p=11.5,y=1999;

/*

*

*

* 考生在这里添加代码

*

*

*/ } void main(){

FILE *p;

p=fopen(“design.dat”,“w”);

fprintf(p,“%d,%d”,Year(20),Year(30));

fclose(p);}

C语言程序设计第38题 设计程序:

一个球从100米高度落下,每次落地后都反弹至原高度一半位置,再落下。

计算出第10次落地时小球共经过的距离,并将结果以格式“%.0f”写入到考生目录中Paper子目录下的新建文件design.dat中。#include void main(){

FILE *fp;float s=100,h=100;int i;

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第39题 设计程序:

利用公式π/4≈1-1/3+1/5-1/7+……公式计算π的近似值,直到某一项的绝对值小于1e-6为止。(π/4的结果不包含此项)

将结果以格式“%.6f”写入到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ FILE *fp;float n=1,t=1,pi=0;int i;

/*

*

*

* 考生在这里添加代码

*

*

*/ } C语言程序设计第40题 设计程序:

计算多项式a0+a1*sin(x)+a2*sin(x*x)+a3*sin(x*x*x)+……+a9*sin(x*x*x*x*x*x*x*x*x)的值,并将其值以格式“%.6f”写入到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){

FILE *p;

int i;float x=2.345,t=1.0,y=0.0;

float a[10]={1.2,-1.4,-4.0,1.1,2.1,-1.1,3.0,-5.3,6.5,-0.9};

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第41题 设计程序:

计算多项式a0+a1*x+a2*x*x+a3*x*x*x+...+a9*x*x*x*x*x*x*x*x*x的值,并将其值以格式“%f”写到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ FILE *p;int i;float x=1.279,t=1,y=0;

float a[10]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65};

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第42题 设计程序:

计算多项式a0-a1*x+a2*x*x/2!-a3*x*x*x/3!+...-a9*x*x*x*x*x*x*x*x*x/9!的值,并将其以格式“%f”写到考生目录中Paper子目录下的新建文件design.dat中。#include #include void main(){ FILE *p;int i;float x=1.279,t,y;

float a[10]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65};

/*

*

*

* 考生在这里添加代码

*

*

*/ }

C语言程序设计第43题 设计程序:

求斐波那契(Fibonacci)数列中其前40项之和,其中斐波那契数列的定义为 后一项为前两项之和,并将求和的结果以格式“%d”写到考生目录中Paper子目录下的新建文件design.dat中。#include void main(){ FILE *p;long s=0,i,a[40];

/*

*

*

* 考生在这里添加代码

*

*

c语言程序设计论文 篇5

摘要

该程序编译的是通讯录,可以实现一般主要功能有:有建立通讯录的个人信息功能,如记录该人姓名信息,地址信息,出生日期信息,所在城市信息,以及其城市的邮编信息等,删除个人信息,通讯录个人的信息列表,个人的信息查询,个人的信息保存,以及个人的信息提取的功能,最后可以直接退出通讯录。

当然实行不同的功能需要定义不同的功能函数,在记录个人信息定义不同的结构体,每一个成员的信息可以是一个基本类型或者是一个够造类型,对结构体变量的应用,其中包括赋值,输入,输出,运算等方式来实现结构变量的成员。

当然也可以执行该程序应用了函数的调用,自定义函数以及文件的存储与调用等。个人的信息保存在这个问题上,这信息可以动态的分配到内存空间,每一次分配一块空间用来存放一个人的个人信息的数据,定义两个域,一个是数据域,用来存放各种实际的数据,如个人姓名信息,个人地址信息,出生日期等等数据。在编辑程序,用到了基本的循环、选择、排序的算法,使用数组或数组元素的指针和指针变量,对结构体及其元素用指针或指针变量来指向。并且使用多种预处理功能,如宏定义、文件包含、条件编译等。来进行程序的修改、阅读、移植和调试,也有利于实现模块化程序设计。程序员在程序中用预处理命令来调用这些功能。

通讯录的个人信息数据的编辑、存储、列表、删除、查询、提取等实行运用,在程序中存储二百人的个人信息空间,日期不能超过两个字符。在运行后,程序自动给出提示选择,给出你所需要执行的功能,在选择后会给出相应的显示和下一步的提示,在编辑个人信息时必须有姓名,否者会返回上一选择菜单,有部分信息可以不填。在编辑完后,就可以实行其他功能,将给出其他选择,如将个人信息删除、将个人信息列表、保存个人信息、提取个人信息等等的功能。最后在执行完后就可直接根据提示选择退出。就实现了整个通讯录的流程。

关键词:通讯录、列表、函数、编译

C语言程序设计论文

目录

 题目内容及其功能..........................2  算法原理..................................2  算法流程图................................8  源程序...................................14  运用结果及分析...........................20  设计心得.................................22  参考文献.................................23

C语言程序设计论文

题目内容及其功能

该通讯录主要功能有:有建立通讯录的个人信息,如姓名,地址,出生日期,城市,邮编等。也可以执行删除个人信息,通讯录信息列表,信息查询,信息保存,以及信息提取的功能,最后可以退出通讯录。该程序应用了函数的调用,自定义函数以及文件的存储与调用等,使用数组或数组元素的指针和指针变量,对结构体及其元素用指针或指针变量来指向。

算法原理

(1)通过选择来实现程序的功能: int main(void){ start=last=NULL;for(;;){

switch(menu_select())

{

case 1:enter();

break;

case 2:mldelete(&start,&last);

break;

case 3:list();

break;

case 4:search();

break;

case 5:save();

break;

case 6:load();

break;

case 7:exit(0);

} 输出运行结果并且给出选择: int menu_select(void){ char s[80];int c;printf(“******tongxunlu*******n”);printf(“*1.Enter a name

*n”);printf(“*2.delete a name

*n”);printf(“*3.list the file

*n”);printf(“*4.search

*n”);

printf(“*5.save the file

*n”);printf(“*6.load the file

*n”);printf(“*7.Quit

*n”);

C语言程序设计论文

printf(“**********************n”);do {

printf(“nplease enter your choice:”);

gets(s);

c=atoi(s);}while(c<0||c>7);return c;}

(2)输入个人信息:名字,地址,日期,邮政编码 void enter(void){ struct address *info;for(;;){

info=(struct address *)malloc(sizeof(struct address));

if(!info)

{

printf(“nout of memory”);

return;

}

inputs(“please enter name:”,info->name,30);

if(!info->name[0])break;/*stop entering*/

inputs(“please enter street:”,info->street,40);

inputs(“please enter city:”,info->city,20);

inputs(“please enter state:”,info->state,3);

inputs(“please enter zip:”,info->zip,10);

dls_store(info,&start,&last);}/*entry loop*/ } 如果超过给定内存,将给出提示,输入太长: void inputs(char *prompt,char *s,int count){ char p[225];do {

printf(prompt);

fgets(p,254,stdin);

if(strlen(p)>count)

printf(“nToo Longn”);} while(strlen(p)>count);p[strlen(p)-1]=0;/* remove newline character */ strcpy(s,p);}(3)制作列表,对输入的个人信息进行存储与排列 void dls_store(C语言程序设计论文

struct address *i,/*new element*/ struct address **start,/*first element in list*/ struct address **last/*last element in list*/){ struct address *old,*p;if(*last==NULL){/*first element in list*/

i->next=NULL;

i->prior=NULL;

*last=i;

*start=i;

return;} p=*start;/*start at top of list*/ old=NULL;while(p){

if(strcmp(p->name,i->name)<0){

old=p;

p=p->next;

}

else{

if(p->prior)

{

p->prior->next=i;

i->next=p;

i->prior=p->prior;

p->prior=i;

return;

}

i->next=p;/*new first element*/

i->prior=NULL;

p->prior=i;

*start=i;

return;

} } old->next=i;/*put on end*/ i->next=NULL;i->prior=old;*last=i;}(4)将通讯录中的信息,先进行查找,然后删除个人信息 void mldelete(struct address **start,struct address **last)

C语言程序设计论文

{ struct address *info;char s[80];

inputs(“Enter name:”,s,30);info=find(s);if(info){

if(*start==info){

*start=info->next;

if(*start)(*start)->prior=NULL;

else *last=NULL;

}

else{

info->prior->next=info->next;

if(info!=*last)

info->next->prior=info->prior;

else

*last=info->prior;

}

free(info);/*return memory to system*/ } }(5)从其内存中查找某个名字,并进行输出,如果没有就输出没有发现名字 struct address *find(char *name){ struct address *info;info=start;while(info){

if(!strcmp(name,info->name))return info;

info = info->next;/* get next address */ } printf(“Name not found.n”);return NULL;/*not found*/ }(6)将通讯录中所有个人信息分别列出 void list(void){ struct address *info;info=start;while(info){

display(info);

info = info->next;/* get next address */

C语言程序设计论文

} printf(“nn”);}(7)分别输出个人信息

void display(struct address *info){ printf(“%sn”,info->name);printf(“%sn”,info->street);printf(“%sn”,info->city);printf(“%sn”,info->state);printf(“%sn”,info->zip);printf(“nn”);}(8)根据其个人信息的存储地址来查找个人名字信息 void search(void){ char name[40];struct address *info;printf(“Enter name to find:”);gets(name);info = find(name);if(!info)

printf(“Not Foundn”);else display(info);}(9)保存输入的个人信息 void save(void){ struct address *info;FILE *fp;fp = fopen(“mlist”,“wb”);if(!fp){

printf(“Cannot open file.n”);

exit(1);} printf(“nSaving Filen”);info = start;while(info){

fwrite(info,sizeof(struct address),1,fp);

info = info->next;/* get next address */ } fclose(fp);

C语言程序设计论文

}(10)查找并提取已输入的个人信息 void load(){ struct address *info;FILE *fp;fp=fopen(“mlist”,“rb”);if(!fp){

printf(“Cannot open file.n”);

exit(1);} 释放内存空间:

while(start){

info=start->next;

free(info);

start=info;fclose(fp);}

C语言程序设计论文

算法流程图

图1-1制作列表流程图

C语言程序设计论文

图1-2删除个人信息流程图

C语言程序设计论文

图1-3个人信息-名字的查找流程图

C语言程序设计论文

图1-4查找到个人信息流程图

C语言程序设计论文

图1-5保存个人信息流程图

C语言程序设计论文

图1-6提取下载个人信息流程图

C语言程序设计论文

源程序

#include“stdio.h” #include“stdlib.h” #include“string.h” struct address{ char name[30];char street[40];char city[20];char state[3];char zip[11];struct address *next;struct address *prior;};struct address *start;struct address *last;struct address *find(char *);

void enter(void),search(void),save(void);void load(void),list(void);void mldelete(struct address **,struct address **);void dls_store(struct address *i,struct address **start,struct address **last);void inputs(char *,char*,int),display(struct address *);int menu_select(void);

int main(void){ start=last=NULL;for(;;){

switch(menu_select())

{

case 1:enter();

break;

case 2:mldelete(&start,&last);

break;

case 3:list();

break;

case 4:search();

break;

case 5:save();

break;

case 6:load();

break;

C语言程序设计论文

case 7:exit(0);

} }return 0;}

int menu_select(void){ char s[80];int c;printf(“******tongxunlu*******n”);printf(“*1.Enter a name

*n”);printf(“*2.delete a name

*n”);printf(“*3.list the file

*n”);printf(“*4.search

*n”);

printf(“*5.save the file

*n”);printf(“*6.load the file

*n”);printf(“*7.Quit

*n”);

printf(“**********************n”);do {

printf(“nplease enter your choice:”);

gets(s);

c=atoi(s);}while(c<0||c>7);return c;}

/*Enter names and address.*/ void enter(void){ struct address *info;for(;;){

info=(struct address *)malloc(sizeof(struct address));

if(!info)

{

printf(“nout of memory”);

return;

}

inputs(“please enter name:”,info->name,30);

if(!info->name[0])break;/*stop entering*/

inputs(“please enter street:”,info->street,40);

inputs(“please enter city:”,info->city,20);

inputs(“please enter state:”,info->state,3);

inputs(“please enter zip:”,info->zip,10);

dls_store(info,&start,&last);

C语言程序设计论文

}/*entry loop*/ } /*******************************************/ void inputs(char *prompt,char *s,int count){ char p[225];do {

printf(prompt);

fgets(p,254,stdin);

if(strlen(p)>count)

printf(“nToo Longn”);} while(strlen(p)>count);p[strlen(p)-1]=0;/* remove newline character */ strcpy(s,p);} /*Create a doubly linked list in sorted order */ void dls_store(struct address *i,/*new element*/ struct address **start,/*first element in list*/ struct address **last/*last element in list*/){ struct address *old,*p;if(*last==NULL){/*first element in list*/

i->next=NULL;

i->prior=NULL;

*last=i;

*start=i;

return;} p=*start;/*start at top of list*/ old=NULL;while(p){

if(strcmp(p->name,i->name)<0){

old=p;

p=p->next;

}

else{

if(p->prior)

{

p->prior->next=i;

i->next=p;

i->prior=p->prior;

C语言程序设计论文

p->prior=i;

return;

}

i->next=p;/*new first element*/

i->prior=NULL;

p->prior=i;

*start=i;

return;

} } old->next=i;/*put on end*/ i->next=NULL;i->prior=old;*last=i;} /*Remove an element from the list*/ void mldelete(struct address **start,struct address **last){ struct address *info;char s[80];

inputs(“Enter name:”,s,30);info=find(s);if(info){

if(*start==info){

*start=info->next;

if(*start)(*start)->prior=NULL;

else *last=NULL;

}

else{

info->prior->next=info->next;

if(info!=*last)

info->next->prior=info->prior;

else

*last=info->prior;

}

free(info);/*return memory to system*/ } }

/*Find an address.*/

struct address *find(char *name){

C语言程序设计论文

struct address *info;info=start;while(info){

if(!strcmp(name,info->name))return info;

info = info->next;/* get next address */ } printf(“Name not found.n”);return NULL;/*not found*/ } /* Display the entire list */ void list(void){ struct address *info;info=start;while(info){

display(info);

info = info->next;/* get next address */ } printf(“nn”);} /* this function actually prints the fields in each address.*/ void display(struct address *info){ printf(“%sn”,info->name);printf(“%sn”,info->street);printf(“%sn”,info->city);printf(“%sn”,info->state);printf(“%sn”,info->zip);printf(“nn”);} /* Look for a name in the list */ void search(void){ char name[40];struct address *info;printf(“Enter name to find:”);gets(name);info = find(name);if(!info)

printf(“Not Foundn”);else display(info);}

C语言程序设计论文

/* Save the file to disk */ void save(void){ struct address *info;FILE *fp;fp = fopen(“mlist”,“wb”);if(!fp){

printf(“Cannot open file.n”);

exit(1);} printf(“nSaving Filen”);info = start;while(info){

fwrite(info,sizeof(struct address),1,fp);

info = info->next;/* get next address */ } fclose(fp);} /*

Load the address file.*/ void load(){ struct address *info;FILE *fp;fp=fopen(“mlist”,“rb”);if(!fp){

printf(“Cannot open file.n”);

exit(1);} /* free any previously allocated memory */ while(start){

info=start->next;

free(info);

start=info;} /*

reset top and bottom pointers

*/ start=last=NULL;printf(“nLoading Filen”);while(!feof(fp)){

info=(struct address *)malloc(sizeof(struct address));

C语言程序设计论文

} if(!info){

printf(“Out of Memory”);

return;} if(1!=fread(info,sizeof(struct address),1,fp))break;dls_store(info,&start,&last);}

fclose(fp);运用结果及分析

图1-1 运行结果并且给出选择

图1-2输入个人信息

C语言程序设计论文

图1-3删除个人信息

1-4列出个人信息

C语言程序设计论文 1-5查找个人信息

图1-6保存个人信息

C语言程序设计论文

设计心得

通过进行C语言程序设计,我更加懂得C语言设计不仅仅需要逻辑思维地紧密,更加需要细心,通过两个星期的折腾,总算把课程设计给完成了,这是一个坚苦而又漫长的过程。读了那么多年的书,课程设计可是第一次。看着劳动成果,很欣慰!

刚开始,可以说是没有头绪,于是就去图书馆找资料,找到了一些关于画图方面的,可是这点小进展远远不够,这只是一个小小的开始。下一步是上网查,找到了些与我们题目相似的,那时我很高兴,完成了这个程序。

虽然对着电脑做程序,有点累有点热,可是当看到劳动成果时,真是别有一番滋味在心头啊!世上无难事,只怕有心人,的确如此。

做完这个课程设计,我的自信一下子提高了,我也会写程序了;尽管对于有些人这种程序会很简单,可对我们C语言初学者来说,已经很不容易了。这次体验为以后的学习计算机的我们增强了信心。享受劳动成果的滋味实在很美妙啊!

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

一个多礼拜的挣扎,绞尽脑汁终于带着麻木的手指和大脑脱出那堆“泥潭”。现在的心情是如鱼得水,干涩的眼睛前方是万里晴空。终于,所有的努力即将化成了一个个铅字,打印机“滋滋”的声音仿佛已经宛如天籁般悦耳地在耳畔响起。此时此刻,真想把一切抛上天空。高呼:“出来了!我的成果即将出来了!”,心里也在默默的感慨着:“有志者,事竟成,破釜沉舟,百二秦关终归楚。苦心人,天不负,卧薪尝胆,三千越甲可吞吴。”

当然这次程序设计也让我看到了自己基础的薄弱。古人有诗云:“路漫漫其修远兮,吾将上下而求索”。从今天起我将不断继续求索,学习之路也好,人生之路也罢。

总之我受益匪浅。

C语言程序设计论文

参考文献

C语言程序设计心得 篇6

通过本次教师发展在线的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)上好第一节实验课

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

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

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

(三)案例教学法

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

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

C高效程序设计的技巧 篇7

1 巧妙地利用寄存器变量

使用寄存器变量可以提升程序运行的速度,节约程序运行的时间,因为CPU对寄存器的寻址时间是最短的,可以在一个机器周期内完成。

假设有语句for(i=0;i<10;i++);对变量i的位置的不同申明将会得到不同的结果。

在keil c中作如下定义

unsigned char i;编译产生的汇编语言如下:

unsigned char idata i;编译产生的汇编语言如下:

unsigned char xdata i;编译产生的汇编语言如下:

通用寄存器可用于传送和暂存数据,也可参与算术逻辑运算,并保存运算结果。通过上述分析,可以看见,当编译器将变量i作为寄存器(R7)变量处理的时候,产生的目标代码最小,且可以在一个机器周期内寻址。程序员必须熟悉每个寄存器的一般用途和特殊用途,只有这样,才能在程序中做到正确、合理地使用它们。

但是,由于基于8051核的MCU资源有限,寄存器显得极其宝贵,所以,寄存器变量通常被定义为局部频繁使用的操作,如上例,在一个子函数中操作完了即可被销毁,或者系统频繁使用的全局变量,对其他情况要尽量避免使用。读者在使用的时候可以仔细查阅编译器说明手册。

2 利用移位实现快速乘除操作

大部分MCU都选配一个辅助处理器,该处理器主要完成对数据进行逻辑与、或、非、循环、移位等基本操作,人们将之称为布尔处理功能。巧妙的利用移位寄存器可以实现快速的乘除运算。设有如下代码:

如果将上述程序语句改成等价效果的语句:

可以看出,使用移位操作产生的目标代码明显优于使用乘除产生的目标代码,而且MUL和DIV指令的周期比ADD指令周期长。

如果将上述方法变通一下,对于日常生活中的十进制计算方法迁移到二进制计算方法,利用计算百分比的阀值,利用假设需要计算统计的结果百分比大于80%,可以计算出新的统计阀值为80×128/100≈102。这样就可以用移位元算代替乘除运算。

3 巧妙利用51核的位寻址功能

嵌入式系统是嵌入在一个大系统中执行着特殊任务的专用计算机系统,所以大部分MCU都具有特殊的指令处理能力,8051CPU可以对部分特殊功能寄存器和字节地址20H~2FH进行位寻址。

如有下述代码,程序中需要经常对变量x的最低位和次低位的值进行01判断,可以写代码如下:

如果采用位操作则上述代码只要写成,该段代码由于采用了位寻址,所以在程序中任何其他位置,如果在变量x发生改变的情况下,再次获知最低位和次低位01情况,就不需要再次执行上述程序的计算工作,直接使用即可。

4 结束语

本文结合基于8051核的MCU的内部结构特征,给出了若干C高效编程的技巧,本文的思想也可以应用到其他类型的MCU中去。笔者利用上述方法对一个1000多行C源代码进行优化,编程产生的结果将原5K多的目标代码降低为不足3K的目标代码,几乎减低了一半。

参考文献

[1]LinDen P V D.C程序设计奥秘[M].昆明:云南科技出版社,1998.

《C程序设计》教学经验初探 篇8

关键词:C语言;教学方法;实践;教学过程

中图分类号: G424 文献标识码: A 文章编号: 1673-1069(2016)15-136-2

0 引言

《C程序设计》是一门应用性及实践性都很强的课程,是计算机类学科的一门核心专业基础课程,课程目的是培养学生进行程序设计的基本技能及算法设计的基本思想。课程的内容包括C语言的基本语法、基本概念以及C语言程序设计的设计过程和算法。本课程可以为今后有关课程的学习奠定基础。在教学过程中可以进行案例的分析与讨论,要注重系统理论教学与实践性环节相结合,经过多年的教学,累计了一些经验,我觉得要想教好《C程序设计》这门课程,需要做到以下几点:

1 合理选择教材

教材是实现教学要求重要的保证,是教学改革中的一项重要的基本要求。教材是学生系统学习的依据,是提高教学质量的前提,一本好的教材应该让学生能依据教材理解课堂上老师的教学内容,可以培养学生的自学和独立思考的能力,并通过教材深入了解到本学科各个领域的知识。如果没有一本好的教材,提高教学质量只会是一句空话。选择好一本教材是不容易的,不仅需要掌握好相关的科学技术知识,还要熟悉教授的对象以及他们的知识水平,在教材的难易程度上做好把握。

一般而言,一本好的教材应该具备这些优点:定位准确、内容先进、体系得当、取舍合理。不要求保罗万象、贪多求全,做到“该有的有,不该有的没有”。 职业教育主要面向一线岗位,培养技能型、应用型的人才,而目前职业教育的C语言教材普遍存在的问题主要是技能训练的实践性不够,结合岗位的针对性不强。

在教材选择方面除了考虑上述特点,还要注重以下几点:首先,考虑职业教育的特色,注重理论联系实际,理论知识要够用。其次,语言表达要概念清晰、通俗易懂。在内容排版编辑时尽量考虑初学者的特点和认知规律。最后,注重基础知识与新技术的结合,在当前快速发展的信息时代,新的技术、新的方法、新的编程语言层出不穷,要想跟上信息技术发展的脚步,大力更新教学内容,教材必须及时选择最新版本,让学生接触到最先进的知识。好的教材会将知识点变难为易。

2 明确教学目标,做好课前准备工作

C语言课程的教学目标,主要是使学生初步具备分析问题与解决问题的能力,熟练掌握程序设计的基本语法规则和程序的上机调试方法,培养学生具备逻辑思维能力和进行模块化程序设计。让学生学会读程序、分析程序以及设计算法,独立写简单程序。具体教学目标为:理解模块化程序设计的原则,掌握基本算法分析与程序设计知识,能熟练运用三种基本程序结构解决简单问题,能针对复杂问题合理分解。

对于非计算机专业学生而言,《C程序设计》也是计算机二级考试的课程之一,同时,C语言为用计算机解决实际的问题提供了方法,有较强的工业应用前景,是后期实践教学与理论教学的基础和工具。教学内容应以理论知识为基础,注重培养实践应用能力,加强针对性和实用性。

课前准备工作还需要,备好课,写好教案,分析重难点。好的开始时 成功的一半,课前的准备工作做好,才能上好每节课。除了备好课、写好教案外,我还经常查阅各种资料,在网络上寻找好的教学材料,教学课件,看各大学教授的讲课视频,把这些知识和我所教授的《C程序设计》结合起来,为我所用。

3 提升教师个人素质

教师基本上拥有所有教师的个性特点,个人特征是通过行为表现的,他们只是表现程度不同。比如,一些教师给人的感觉是不热情,这可能是个性的不同,限制或者激发了他们表达热情的能力。像专业性、条理性都是比较容易获得和改变的特征。而另一些教师会很自然地表现出比别人有更大的热情。一些个人的特征,是很难获得的,例如热情,因为它深植于我们的个性之中。此外,你就可以最大程度地发挥你的能力,建立自己独特的教学风格,通过更深入了解那些成功教师所具有的共性,将它们融入到你的个性中去,与学生们建立积极的关系。

一名优秀的教师应该拥有激励,鼓舞性的人格。他们喜欢自己所做的工作,对学生很支持,并值得学生信赖。受欢迎的教师一般具备三个特征:热情、幽默、可信任感。这些特征是与不断提高学生的学习联系在一起的。热情的老师会让学生认为,他们自信,喜欢他们所做的工作,他们信任和尊重学生,所教课程是有趣的。你是否意识到,作为课堂上的权威,你将确定课堂的基调,分配角色,带动学生,促进学生中相互关系的形成。能给学生建立起一个支持性的、轻松的、有教育益处的环境,教师的幽默是一个很重要的因素。教师的可信与否取决于学生。老师的知识,经验、教育水平或专业能力,所有这些都可能保证教师具有可信性。因此好的教学需要教师提高自身的素质和业务水平,及时了解最新的科技成果并掌握C语言应用技术的发展方向,要不断拓宽知识面,具备一定的知识高度,同时不断研究与改进教学方法,理论联系实际,提高自身的教学水平。让学生因为你而喜欢上这门课程。

4 优化教学方法,注重教学过程

在教学过程中要注意的问题有很多:教给学生正确的学法;培养学生对C语言的兴趣;有效地组织程序设计;加强实践教学环节;对学生分析和解决实际问题能力的培养。而C语言课程抽象且复杂,概念性、理论性强,教学过程是学生和教师的双边活动,要想真正做到教为学服务,既要注重教,又要注重学。教师需要开阔学生的思路,调动潜能,激发学生的学习积极性和主动性,在学生遇到问题时给予指导,引导学生讨论,做到授业、传道、解惑,寓教于学。只有把握好教与学的关系,才能提高整个教学质量。课堂上,我一般会这样做:

首先,C语言要理论联系实际,是应用性很强的一门课程,以案例来分析教学知识。既要讲方法,又要讲动手能力。激发学生的学习兴趣,将学生全部调动起来,采用案例分析法可以改变“满堂灌”的教法。本人在上课过程中,将课程内容分为若干个模块,每个模块的教学由“上机实践”、“知识点讲解”和“课后作业”组成。主线使程序设计,重点讲解程序设计的语法和算法,进行案例分析,然后通过上机练习,教师针对学生出现的问题答疑解惑,给予指导,让学生将案例程序和自编程序上机进行调试。结合案例教学,强化学生的读程编程能力,将C语言作为解决实际问题的工具,提高学生分析问题、解决问题的能力,在课堂上让学生真正地成为“主体”,教师则扮演“引导”角色。在这个过程中熟悉语法,语句,由浅入深、由易到难、循序渐进地培养程序设计能力,使学生掌握知识。

其次,在教学中应用多媒体辅助教学手段。在课堂教学中为了提高学生的空间想象力,加强直观教学,可采用多媒体教学课件,利用多元化、现代化的教学手段。上课时,老师先演示,学生再操作,加深学生的理解能力与记忆力,实现师生、生生的互动和交流。让学生检验自己本阶段的学习成果,先从最简单的机调试程序上入手,提出调试要求,演示调试过程,让学生加强对所学知识的吸收和消化。

上一篇:小学大队学习委员竞选稿下一篇:小学二年级写字教案