电脑桌面
添加盘古文库-分享文档发现价值到电脑桌面
安装后可以在桌面快捷访问

c语言五子棋实验报告

来源:漫步者作者:开心麻花2025-11-191

c语言五子棋实验报告(精选9篇)

c语言五子棋实验报告 第1篇

五子棋小游戏

一.需求分析

现在有越来越多的人使用电脑,而且五子棋的受众广泛但实体棋操作较为繁琐且平时较难实现,所以电脑版的五子棋游戏应运而生。大家对于这个小游戏的需求如下:首先,设计这个游戏最基本的就是实现玩家之间对战,玩家可以通过某些操作来实现对战功能;有时候可能由于时间等原因,玩家可能需要保存游戏,此时需要一个“保存”功能;有时候可能玩家由于失误会走错棋,此时就需要“悔棋”功能;有时候玩家可能觉得这局游戏玩的非常不好,这时候就需要“重新开始游戏”功能;玩家在玩过游戏之后有可能想保存游戏记录便于以后分析此时就需要“排行榜”功能;有些玩家在玩游戏时喜欢听音乐,这时候就需要在下棋时可以播放背景音乐的功能;最基本的通过输入坐标来实现落子的操作方式很繁琐而且很不方便,这时候就可以将落子机制改为更直观的光标移动模式。

二.设计思路

1.玩家对战功能:在玩家对战功能中,玩家可以通过按方向键来移动光标、按空格来实现落子,最终在横或竖或斜方向上达成五个相同颜色的棋子来获得胜利。基本思路:

(1)使用二维数组保存棋局。

(2)由于要使用光标,所以使用输出缓冲器。

(3)打印棋盘。

主要使用Print()函数来算出棋盘并将缓冲器内容输出。

其余为其中调用的辅助函数。chessPrint()是打印交点坐标的字符的函数;getCurse()是打印光标的函数;write()函数是用来向缓冲器里面写入字符串的函数;ln()函数是负责将缓冲器写入位置提行的函数;Display()函数是将缓冲器中内容输出到屏幕的函数。

(4)下子,在后文有详细介绍。(5)胜负平判断

调用Check()函数进行四个方向的检查,检查是否有五子连珠。

判断完毕后输出结果(如果存在结果)

2.保存游戏和装载游戏功能:在游戏过程中,只要按“1”键就可以保存游戏到指定名称的文档中;在游戏开始界面,只要按“2”选择“load board”就可以装载指定名称的游戏。基本思路:

调用saveGame()函数将当前棋局的相关信息全部保存到结构体变量saveChess中,并将其中的内容全部保存到文件里。

加载时将结构体变量里的数据全部读出,赋给当前棋局相关信息变量,之后正常运行游戏即可。

3.悔棋功能:在游戏过程中,只要按“2”键就可以返回到上一步的局面。基本思路:

玩家对战时,每个玩家每次成功落子之后,棋盘的相关信息就会被记录到一个结构体数组里。

每次悔棋时,就调用一个函数把储存在结构体数组里的上一回合的信息全部赋给当前棋局信息变量。

4.重新开始游戏功能:在游戏过程中,只要按“3”键就可以初始化棋局,重新开始游戏。基本思路:

玩家对战时每一次重新开始游戏就调用runGame()函数,并返回当前玩家信息。

人机对战时每一重新开始游戏就调用自身,并返回当前玩家信息。

5.排行榜功能:在一局游戏结束时,按照提示输入“1”则可以将自己的名字及成绩保存到排行榜文件中。在游戏开始界面,只要按“3”就可以查看排行榜。(排行榜按照步数由小到大,棋色又白到黑排序)基本思路:

一局游戏结束时调用inList()函数,inList()函数又调用addList()函数,将关于棋局的部分信息保存到文件。

关于排序设置了单独的函数sortList()函数,其在addList()里面被调用。此处使用了结构体数组,按照其中的“步数”成员将结构体数组中的元素进行“冒泡排序”。

这里比较特别的是,每次都是先将要加入的内容写到文件末尾,再将文件中所有内容读出后进行排序,最后再将排好序的内容全部写入文件。

6.背景音乐功能:在游戏过程中会一直循环播放音乐,带给玩家不一样的享受。基本思路:

使用Windows.h头文件,并加上相关指令

再调用PlaySoundA()函数就可以实现循环播放背景音乐。

7.使用光标定位棋子:使用方向键控制光标移动方向,使用空格键来实现落子,带给玩家比坐标落子更高级的体验,更加方便快捷。(此处使用了以前没用到的,调用getch()函数,为了不需要键入回车。)基本思路:

光标实现:使用缓冲器将棋盘交点的间隔都填充内容,光标用制表符表示,其余为空格。方向键移动光标:

防止越界:

空格落子:

8.简单的人机对战:主要防御型的AI,主要针对对手的棋型来安排战术,有时会选择进攻。基本思路:

判断对手是否有2,3,4子连珠,如果有,电脑会在两头下子;如果没有,若己方在一侧存在3子或4子连珠,电脑会在后面补子;如果以上情况均未出现,电脑会随机在对手单子周边落子。其余基本功能同人人对战,但是不支持保存和读取棋局功能。

按照奇偶数来判断是该电脑走子还是玩家走子。电脑执黑则会有不同的初始化方法。

三.用户手册

1.如何运行程序

2.如何开始游戏(包括玩家对战和人机对战)3.如何退出游戏 4.如何进行游戏

5.如何保存当前游戏(仅支持玩家对战)6.如何读取已保存的游戏(仅支持玩家对战)7.如何重新开始游戏(支持人机和玩家对战)

8.如何保存记录(支持人机和玩家对战,不加区分)

9.如何调取记录进行查看(支持人机和玩家对战,不加区分)10.如何查看游戏规则

11.如何了解设计师相关信息

12.如何悔棋(支持人机和玩家对战)

1.如何运行程序 第一步,打开VS2012,点击“打开项目”。

第二步,选择“高级五子棋”项目,点击“打开”

第三步,使用快捷键“Ctrl+F5”,开始运行程序,进入游戏开始界面。

2.如何开始游戏

按照开始界面中的提示操作即可,从键盘输入“1”即可开始玩家对战或人机对战(输入“1”为玩家对战,输入“2”为人机对战,人机对战时可以选择电脑的颜色)。输入“1”之后的效果:

再输入“2”之后的效果:

再输入“1”之后的效果:

再输入“2”之后的效果:

3如何退出游戏

此处分两种情况:第一种是在开始界面,可以通过键盘输入“0”来实现退出游戏(此时会有退出界面);第二种是在游戏过程中,可以通过按“Esc”键来直接退出游戏(此时没有退出界面)。第一种:

输入“0”之后的结果:

第二种:

按“Esc”之后的效果:

4.如何进行游戏

玩家可以通过按“↑”“↓”“←”“→”来实现光标的移动,通过按空格键来在没有棋子的位置实现落子。初始:

按空格之后的效果:

按“→”之后的效果:

5.如何保存当前游戏

在游戏过程中,玩家可以通过按“1”来实现游戏的保存。按“1”之后的效果:

6.如何读取已保存的游戏

在游戏开始界面,可以通过从键盘输入“2”来装载曾经保存过的游戏。输入“2”之后的效果:

7.如何重新开始游戏

在游戏过程中,按“3”可以实现游戏的重新开始。初始:

按“3”之后的效果:

8.如何保存记录

在一局游戏结束后,会有如下文字提示:

输入“1”后的效果:

9.如何调取记录进行查看

在游戏开始界面,可以通过键盘输入“3”来查看排行榜内容。

10.如何查看游戏规则

在游戏开始界面可以通过键盘输入“4”来查看游戏规则。

11.如何了解设计师相关信息

在游戏开始界面输入“5”即可了解设计师相关信息。

12.如何悔棋

在游戏过程中,可以按“2”来实现悔棋,即恢复到上一步的状态。初始:

按“2”之后的效果:

四.总结

通过本次五子棋大作业,我初步掌握了运用之前学过的知识去开拓未知领域的能力、借鉴与发展能力、自学能力等多项技能。总的来说我感觉这次大作业的难度是比较大的,这其中会面临很多选择,这恰恰是考验我们能力的地方。例如,“排行榜”功能就可以选择是使用链表来做还是使用结构体数组来做。我一开始的思路是使用链表来做,但是由于我链表的相关知识掌握的不是很熟练所以屡屡受挫,最终我决定改变思路,使用结构体数组来做,果然要容易一些,我也成功的实现了排行榜功能。再比如,好多同学都是选用EasyX来实现鼠标控制,我本来一开始也想尝试,但是后来经过努力发现这种模式的难度对我来说偏高,所以我借鉴了一下网上的一些五子棋源代码,最终决定使用光标这种比坐标略强、比鼠标略弱的操作模式。这样的例子在开发过程中还有很多,在这里我就不一一列举了。总而言之,我从这次大作业中收获了很多专业知识,更重要的是我掌握很多以前没有的能力。

c语言五子棋实验报告 第2篇

1.扫描整个棋盘,分别扫描四个方向是否有5个连子,网上找了很多五子棋源码都是用此算法,这意味着每下一个棋子都要扫描一遍1919的棋盘,复杂而且低效,代码略。

2.每下一字,从该子开始扫描其四个方向(例如:从该子的(x-4,y)坐标开始扫描横向)是否存在5个连子。此算法较为常用,而且不涉及更为复杂的数据结构。

另外,为解决扫描越界的问题,在声明棋盘棋子位置时,可声明一个(4+19+4)(4+19+4)的棋盘,而让棋子偏移(4,4)个坐标。

算法2源代码如下:

static void IfWin(int x,int y,int color)

{

TCHAR win[20];

int a,b;

if(stone[x][y]==1)

wcscpy_s(win,_T(“黑棋胜利!”));

else

wcscpy_s(win,_T(“白棋胜利!”));

for(a=x-4;a<=x+4;a++)//判断横

if(stone[a][y]==color&&stone[a+1][y]==color&&stone[a+2][y]==color&&stone[a+3][y]==color&&stone[a+4][y]==color)

{MessageBoxW(Xqwl.hWnd,win,TEXT(“”),MB_OK);return;}

for(b=y-4;b<=y+4;b++)//判断竖

if(stone[x][b]==color&&stone[x][b+1]==color&&stone[x][b+2]==color&&stone[x][b+3]==color&&stone[x][b+4]==color)

{MessageBoxW(Xqwl.hWnd,win,TEXT(“”),MB_OK);return;}

for(a=x-4,b=y-4;a<=x+4;a++,b++)//判断右斜

if(stone[a][b]==color&&stone[a+1][b+1]==color&&stone[a+2][b+2]==color&&stone[a+3][b+3]==color&&stone[a+4][b+4]==color)

{MessageBoxW(Xqwl.hWnd,win,TEXT(“”),MB_OK);return;}

for(a=x-4,b=y+4;a<=x+4;a++,b--)//判断左斜

if(stone[a][b]==color&&stone[a+1][b-1]==color&&stone[a+2][b-2]==color&&stone[a+3][b-3]==color&&stone[a+4][b-4]==color)

{MessageBoxW(Xqwl.hWnd,win,TEXT(“”),MB_OK);return;}

}

C语言实验教学改革探析 第3篇

C语言语法知识丰富, 类型较多, 结构层次复杂, 是一门实践操作性非常强的语言。学生必须上机实验才能真正学会如何编写程序和调试程序, 而且通过上机实验能更好地理解、掌握程序设计的理论知识。按照新时期对新型人才培养的要求, 积极探讨C语言实验教学改革, 提高实验教学质量, 已成为C语言实验教学的重要课题。在C语言实验教学中, 主要是激发学生的思维, 理解程序设计的思想, 培养学生编程和程序调试的能力、培养学生分析问题和解决问题的能力, 掌握自主实验的方法技巧等。因此, 我们将从上述几个方面分析、探讨如何加强实验教学环节, 逐步探索出一些行之有效的实验教学改革措施。

二、精心编制实验指导书

根据C语言实验大纲的要求, 精心编制详细规范的实验指导书。C语言实验教学的目的是通过实验让学生增强对理论知识的理解, 学会自己编写、调试程序。因此, 实验指导书的内容要与理论教学配套, 有针对性地设置实验内容。明确实验目的, 明确实验预习内容, 指出实验的重点内容, 程序设计的思想, 不易理解和易出错的环节。

在保证验证原理, 基本技能、基本方法、基本能力训练的基础上, 对验证性实验进行精选、合并, 减少验证性实验项目, 增加综合性实验项目。每一道实验题目都能体现一个或多个知识点, 并根据学生的认知规律和学习特点, 有意地设置障碍, 尽量让学生出错, 给学生留下一定的思考、探索和想象的空间, 调动学生学习的积极性, 引导学生主动学习。在编写实验指导书时要兼顾各个能力层次的学生, 设置基础题、中等难度题和较难的选作题等多个层次, 以满足不同层次学生的需求。

三、改进实验教学方法

1. 采用多种方式教学, 激发学生的学习兴趣

在实验教学过程中, 教师应广泛采用启发式、讨论式、归纳式等教学方法, 活跃课堂学习气氛, 激发学生的学习兴趣。多选择一些趣味性强的例子, 如猴子吃桃等问题, 通过开展师生相互讨论等方式, 激发学生积极思考, 鼓励同学大胆设想, 大胆发表自己的见解, 并对不同学生的设计方法、设计方案的优劣进行比较, 最后获得解决问题的最好方法。

2. 注重算法的讲授, 培养学生的编程能力

算法就是为解决一个问题而采取的方法和步骤, 是C语言程序设计的精髓, 如果没有正确的算法, 计算机将无法解决任何问题。因此, 在C语言实验教学过程中, 要从分析问题入手, 找出解决问题的方法, 再给出设计算法, 同时还应将算法用一系列标准化图形符号正确地表示出来, 使学生能够清晰地了解程序的功能与结构, 并能方便地转换成程序代码。在这个过程中, 重要的是每一步都要让学生一起参与讨论, 让学生在启发下思考在思考中解决问题, 从而掌握独立分析问题、解决问题的方法。

3. 设计综合性的实验, 培养学生解决实际问题的能力

根据学生发展需要和实际水平, 灵活机动地选择、定制合适的综合性实验, 提高应用计算机解决实际问题的能力。以"学生成绩管理系统"为例, 学完每一章学后, 要求学生完成一项或几项编程作业。如学习常用数据类型后, 要求编写一个验证密码输入的函数;学习选择结构后, 要求编写一个菜单选取函数;学习循环控制和数组后, 要求建立班级课程的成绩输入输出函数等。当学完全部课程, 完成了平时要求的各项编程作业之后, 学生就会发现, 原来自己完成的各章的编程作业不是孤立的, 而是相互联系的, 它们都是一个大型复杂程序的组成部分。最后, 让学生对整个程序设计上机进行综合调试, 从而达到提高编程能力的目的。

4. 增加开放式实验, 培养学生的创新能力

开放式实验就是给予学生充分的主动权, 为学生提供宽松的实验条件和环境, 在整个实验过程中, 让学生自主地选择实验题目、设计实验方案和选择实验时间, 使他们在实验过程中学会自己解决问题, 分析实验中出现的各种现象, 以及评价实验结果的正确性, 使他们在失败中寻找解决问题的正确方法, 在成功中获得科学的实验素质和创新能力。

5. 开展形式多样的课外实践活动, 促进学生的个性发展

课外实践是课内实践教学活动的补充、延伸和深化。课外实践活动可在实验老师的指导下进行, 如组织C语言程序设计兴趣小组, 组织C语言程序设计大赛, 组织学生参与老师的科研活动等, 可促进学生个性发展。

6. 强化网络教学, 提高教学效率

一般的多媒体教学软件都有教师演示、学生示范、屏幕监视、文件传输、远程遥控、双向对讲、多人会话、屏幕回放、黑屏肃静、发布作业、收取作业等功能。例如, 教师可以利用演示功能, 实时传送教师或某个学生的电脑画面到某组或全体学生的电脑屏幕上, 演示程序的调试过程, 教学过程中要充分利用多媒体设备各种功能, 以提高教学效率。

利用校园网络建立实验教学网站, 打造师生双向互动的C语言实验教学网络平台, 增强学生学习的自主性。网络平台应具有:老师的实验教学过程和优秀学生的实验操过的音像多媒体课件, 实验指导书, 习题库等多种资源;同时应具有常用程序的演示, 网上答疑与辅导, 课程论坛, 在线测试等功能。

四、规范实验教学全过程

实验教学中要在检查实验预习, 严格考勤, 认真批阅实验报告加强反馈等环节建立有效制度, 规范师生的行为。建立有效的实验教学考核机制, 实验成绩要能全面反映学生的各种能力。不仅要考核实验结果, 还要对实验的过程进行考核, 使实验成绩能够反映学生的学习态度、综合知识运用能力、实际编程能力和实际操作能力、分析和解决问题能力及创新能力等。

五、结束语

C语言实验教学在C语言中占有重要的地位, 我们仅从上述几个方面讨论了C语言实验教学的改革与创新。实验教学的改革工作涉及到很多方面, 我们必须不断探索、总结和完善, 努力实践, 才能走出一条不断提高实验教学质量的新路来。

参考文献

[1].谭浩强.C程序设计题解与上机指导 (第三版) [M].北京:清华大学出版社, 2005.

C语言实验教学方法探讨 第4篇

实验1-C语言实验报告 第5篇

(2011-2012-1)

实验报告1

教学班级: 机械094 学号: 01 姓名:谭亮恩 课程教师:

曹瑛

实验辅导教师:

曹瑛

江西理工大学

P6-4:/*P6-4

表示第6页 第四题*/

int main(){ float r,s;r=15.5;s=2*3.14*r;

printf(“r=%4.2f,s=%f”, r, s);return 0;}

结果是:r=15.5

s=97.34

P32-3-1: /*P32-3-1

表示第6页 第四题 第一小题*/ #include int main(){ printf(“thististcbCtprogram.rTn”);return 0;} 结果是: This is C program.P32-3-2: /*P32-3-2

表示第6页 第四题 第二小题*/ #include int main(){ printf(“*abdbctr*ABCD105x46*”);return 0;}

结果是: *ABCDEF*

c语言实验报告 第6篇

实验一 上机操作初步和简单的C程序设计

一、实验目的1、熟悉C语言运行环境Turbo C++3.02、会简单的程序调试

3、熟悉C语言各种类型数据的输入输出函数的使用方法

4、掌握顺序结构程序设计

二、实验内容

1、上机运行本章3个例题,熟悉所用系统的上机方法与步骤。(习题1.7)

2、编写一个C程序,输入a、b、c 3个值,输出其中最大者。(习题1.6)

3、设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据,输出计算结果,输出时要求有文字说明,取小数点后2位数字。注意:在Trubo C++ 3.0中不能输入汉字,只能输入英文或拼音。(习题4.8)

4、运行如下程序,写出运行结果。第一┆范文网整理该文章,版权归原作者、原出处所有...#include

void main()

{

int a=1,b=2;

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

printf(“%d,%dn”,a,b);

}

三、实验步骤与过程

C语言实验报告 第7篇

第1次实验: 时间 2010-9-15

项目名称:创建第一个C语言程序

仪器设备:电脑一台,操作系统WindowsXP,开发环境Visual C++ 6.0

实验程序:

1、单击“开始”“程序”“Microsoft Visual Studio 6.0”“Microsoft Visual C++ 6.0”,打开VC++。

2、在菜单中选择“文件”“新建”,在“工程”选项卡中选择“Win32 Console Application”,输入一个名称,点“确定”,新建一个新的工程。

3、再选择“文件”“新建”命令,在“文件”选项卡中选择“C++ Source File”,输入一个

名称,点“确定”,新建一个C++源文件。由于C++全面支持C,因此可以在此输入C语言的源代码,进行实验。

4、在代码框中输入如下代码:

#include

void main()

{

int a,b,sum;

a=123;b=456;

sum=a+b;

printf(“sum is %dn”, sum);

}

5、编译、连接、运行:在“编译”中选择“编译”,没有错误和警告以后,在“编译”中

选择“构建”最后在“编译”中选择“执行”。

实验结果:

sum is 579

讨论:本实验让我们了解了如何创建一个C语言的控制台应用程序,并学会了C语言程序的基本构架和个别特殊语句如“main”“printf”等。

实验地点:3B-20

3第2次实验:时间:2010-10-6

项目名称:顺序结构程序设计实验

(书89页4.9题,先把题抄下来)

仪器设备:电脑一台,操作系统WindowsXP,开发环境Visual C++ 6.0

实验程序:

1、打开VC++6.0,新建一个C++源程序,在代码窗口输入程序如下:

(自己写代码)

2、编译、连接、运行:在“编译”中选择“编译”,没有错误和警告以后,在“编译”中选择“构建”最后在“编译”中选择“执行”。

实验结果:„„

讨论:„„

实验地点:3B-20

3第3次实验:时间:2010-10-27

项目名称: 选择语句switch的使用

(书111页5.6题,先抄题)

仪器设备:电脑一台,操作系统WindowsXP,开发环境Visual C++ 6.0 实验程序:

1、打开VC++6.0,新建一个C++源程序,在代码窗口输入程序如下:

(自己写代码)

2、编译、连接、运行:在“编译”中选择“编译”,没有错误和警告以后,在“编译”中选择“构建”最后在“编译”中选择“执行”。实验结果:„„ 讨论:„„ 实验地点:3B-20

3第4次实验:时间:2010-11-17 项目名称:循环语句for的使用(书129页6.1,先抄题)

仪器设备:电脑一台,操作系统WindowsXP,开发环境Visual C++ 6.0 实验程序:

1、打开VC++6.0,新建一个C++源程序,在代码窗口输入程序如下:

(自己写代码)

2、编译、连接、运行:在“编译”中选择“编译”,没有错误和警告以后,在“编译”中选择“构建”最后在“编译”中选择“执行” 实验结果:„„ 讨论:„„

实验地点:3B-20

3第5次实验:时间: 2010-12-8 项目名称: 数组的应用(书134页例题7.3,先抄题)

仪器设备:电脑一台,操作系统WindowsXP,开发环境Visual C++ 6.0 实验程序:

1、打开VC++6.0,新建一个C++源程序,在代码窗口输入程序如下:(自己写代码)

2、编译、连接、运行:在“编译”中选择“编译”,没有错误和警告以后,在“编译”中选择“构建”最后在“编译”中选择“执行” 实验结果:„„ 讨论:„„

实验地点:3B-20

3第二学期实验:

第1次实验: 时间 2011-2-25 项目名称:编写函数

(在主函数中输入两个数,分别调用四个自定义函数,实现两个数的加、减、乘、除并输出结果。)

仪器设备:电脑一台,操作系统WindowsXP,开发环境Visual C++ 6.0 实验程序:

6、打开VC++6.0,新建一个C++源程序,在代码窗口输入程序如下: #include void main(){

int add(int x,int y);int sub(int x,int y);int mul(int x,int y);float div(int x,int y);int c,a,b;float d;

scanf(“%d,%d”,&a,&b);c=add(a,b);

printf(“%d+%d=%dn”,a,b,c);c=sub(a,b);

printf(“%d-%d=%dn”,a,b,c);c=mul(a,b);

printf(“%d*%d=%dn”,a,b,c);

d=div(a,b);printf(“%d/%d=%fn”,a,b,d);}

int add(int x,int y){

return x+y;

}

int sub(int x,int y){}

return x-y;

int mul(int x,int y){} {

return x*y;

float div(int x,int y)

return(float)x/(float)y;

}

2、编译、连接、运行:在“编译”中选择“编译”,没有错误和警告以后,在“编译”中选择“构建”最后在“编译”中选择“执行”。实验结果:„„ 讨论:„„。

实验地点:3B-20

1第2次实验:时间:2011-3-11 项目名称:指针的应用(书278页10.3,先抄题)

仪器设备:电脑一台,操作系统WindowsXP,开发环境Visual C++ 6.0 实验程序:

1、打开VC++6.0,新建一个C++源程序,在代码窗口输入程序如下:(自己写代码)

2、编译、连接、运行:在“编译”中选择“编译”,没有错误和警告以后,在“编译”中选择“构建”最后在“编译”中选择“执行”。实验结果:„„ 讨论:„„

实验地点:3B-20

3第3次实验:时间:2011-4-8

项目名称:顺序结构程序设计实验(书318页11.3题,先把题抄下来)

仪器设备:电脑一台,操作系统WindowsXP,开发环境Visual C++ 6.0 实验程序:

1、打开VC++6.0,新建一个C++源程序,在代码窗口输入程序如下:

(自己写代码)

2、编译、连接、运行:在“编译”中选择“编译”,没有错误和警告以后,在“编译”中选择“构建”最后在“编译”中选择“执行”。实验结果:„„ 讨论:„„

实验地点:3B-203

9.1

#include

#define S(A,B,T)T=A;A=B;B=T void main(){} 9.6

#include #define PR printf #define NL “n”

int a,b,t;

scanf(“%d,%d”,&a,&b);S(a,b,t);

printf(“%d,%dn”,a,b);

#define F “%6.2f”

#define F1 F NL #define F2 F F NL #define F3 F F F NL void main(){

float a,b,c;a=1;b=2;c=3;PR(F1,a);

PR(F2,a,b);PR(F3,a,b,c);}

作业:

#include

#include

void main(){

void fun1(float a,float b, float c);void fun2(float a,float b ,float c);void fun3(float a,float b, float c);float a,b,c,disc;

scanf(“%f%f%f”,&a,&b,&c);disc=b*b-4*a*c;if(disc>0)fun1(a,b,c);else if(disc==0)fun2(a,b,c);else

fun3(a,b,c);}

void fun1(float a,float b,float c){

float d=b*b-4*a*c;float x1,x2;

x1=(-b+sqrt(b*b-4*a*c))/(2*a);x2=(-b-sqrt(b*b-4*a*c))/(2*a);printf(“%f,%fn”,x1,x2);}

void fun2(float a,float b,float c){

float d=b*b-4*a*c;float x1,x2;

x1=x2=(-b)/(2*a);

printf(“%f,%fn”,x1,x2);}

void fun3(float a,float b,float c){

printf(“此函数无解”);} P278

#include void main(){void aa(int x[],int n);int i,a[10];

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

printf(“交换前:n”);

for(i=0;i<10;i++)printf(“%d,”,a[i]);printf(“n”);aa(a,10);

printf(“交换后:n”);for(i=0;i<10;i++)

printf(“%d,”,a[i]);printf(“n”);

}

void aa(int x[],int n){

int

temp,max=x[0],min=x[0],max_n=0,min_n=0,i;//假设第一个数是最大和最小的数,那么max,min的下标就=0for(i=1;i

max=x[i];max_n=i;}

if(min>x[i]){min=x[i];

min_n=i;

}}

if(min_n!=0){temp=x[0];x[0]=x[min_n];

x[min_n]=temp;

}

if(max_n!=n-1){temp=x[n-1];x[n-1]=x[max_n];x[max_n]=temp;

}

} eee:

#include

void main(){void jiaohuan(int *pt1,int *pt2);int a,b;

scanf(“%d,%d”,&a,&b);printf(“n交换前:n”);printf(“a=%d,b=%dn”,a,b);jiaohuan(&a,&b);printf(“n交换后:n”);printf(“a=%d,b=%dn”,a,b);

}

void jiaohuan(int *pt1,int *pt2){int temp;temp=*pt1;*pt1=*pt2;*pt2=temp;

}

习题11.3 方法一: #include void main(){int i;

struct student{int num;

char name[10];int score[3];

}stu[5]={{101,“A”,50,60,80},{102,“B”,9

0,67,45},{103,“C”,30,40,50},{104,“D”,90,80,70},{105,“E”,60,70,80}};

printf(“NUM

NAME SCOREn”);for(i=0;i<5;i++)

printf(“%4d%8s%8d,%2d,%2dn”,stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2]);

}

方法二 : #include void main(){int i;

struct student{int num;

char name[10];

int score[3];}stu[5];for(i=0;i<5;i++){

printf(“

学号:”);scanf(“%d”,&stu[i].num);printf(“姓名:”);scanf(“%s”,&stu[i].name);printf(“成绩

”);scanf(“%d,%d,%d”,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);}printf(“NUMNAME SCOREn”);for(i=0;i<5;i++)

浅谈C语言实验课教学 第8篇

一、C语言实验课的重要性

作为一个教学工作者, 深知学生要学到真正属于自己的知识、能力, 那么在C语言教学过程中, 实验教学就是一个相当重要的环节。C语言的数据类型较多、表达式丰富、语法结构较复杂, 使它成为一门教师难教、学生难学的课程。因此, 在重视理论教学的同时, 必须加强实验环节。只有在上机实践中学生才能正真学会如何编写程序和调试程序, 也只有通过上机实践才能更好地掌握程序设计的理论知识。

首先老师在上实验课时尽量要求学生多编写程序, 多上机调试程序, 上机实验的目的决不仅是为了验证所编程序的正确性, 其主要目的在于让学生熟练掌握上机操作要领和调试程序技术, 积累编程经验。其次上机实验可以加深学生对讲授内容的理解, 尤其是一些语法规定, 光靠课堂讲授比较枯燥又难以记住, 但它们又很重要, 通过多次上机就能自然地熟练掌握, 通过上机来掌握语法规则是行之有效的一种方法。最后, 学生在上机调试通过一个程序后, 可以自己改变程序中某些部分, 甚至故意设置一些障碍, 观察和分析在不同情况下的编译和运行结果。应当说, 上机实验的重要性绝不亚于课堂听课, 这是巩固和发展课堂知识的十分重要的环节。

二、C语言实验课存在的问题

第一, 学生没有明确的实验目标, 实验兴趣不大。上机时一些学生无所事事或玩游戏, 不但害了自己, 还影响其他同学。第二, 现有教材中上机实验都立足于C语言本身的一些语言规则, 而C语言的许多基础知识都是概念性强、理论性强, 内容丰富且抽象, 具有严密逻辑性的, 学习难度比较大。这时有的学生会产生畏难情绪, 而老师又没有及时引导, 因此许多学生学习兴趣开始降低, 不听教师讲授理论课, 甚至实验课也干脆不去。第三、学生的作业存在抄袭现象, 有的程序错误百出, 根本就没上机调试过。对批改过的作业, 有相当一部分学生也不认真去分析, 交作业仅仅是为了应付老师。对于C语言这样一门实践性很强的课程, 仅靠布置作业和书面批改作业的方法来督促学生学习和了解学习情况是很不全面和客观的, 很难提高教学质量。第四、学生每次上机时缺乏明确的量化指标, 虽然教师事先也向学生布置应准备的内容, 但没有督促和检查, 完成完不成无所谓。上机情况与期末总成绩没有直接关系, 这常常导致学生上机前不充分准备, 上机过程中时间抓得不紧, 思想上没压力, 故而上机调试程序的能力提高不快。

三、实验教学探讨

作为高职院校的教师, 我们在教学过程中更注重职业岗位能力与职业技能的训练, 注重解决问题、分析问题和自学等能力的培养。在C语言实验课教学中, 主要是引导学生突破传统的思维方式, 培养学生读、写程序和调试程序的能力以及提高上机的学习兴趣和自主实验的方法技巧等。具体到实验课教学时, 重点注意好以下几点:

第一、加强机房管理, 端正学生的上机目的。在实验课上做好上机考勤、纪律情况记载, 记入期末成绩。

第二、要求学生在规定时间内独立完成一定数量的练习题、填写实验报告。老师根据每人完成练习题的数量、质量与时间, 现场打分并做为平时成绩, 影响该课程的总成绩。练习题可在上机之前提前告诉学生, 方便他们事先做好准备。这样一来即可有效地避免学生互相抄袭作业、不求甚解的弊端。

为此我们学校制定了统一的实验报告表, 便于实验报告的管理工作。

第三、教师在实验课的过程中加强对学生的辅导工作。在实验课的过程中, 教师可以首先分析该实验题目, 比如:表1中的题目, 就分别针对分支结构中的两分支结构和多分支结构进行了练习。然后再引导学生完成该实验报告。同时在布置实验报告题目时, 应注意题目的难度、题量等问题。

在实验课时, 教师还可以适当的改变教学方法, 比如:给出一程序段, 让学生找出程序段中的错误;还可以给出一程序段, 让学生完整填写程序。

例如:输入三个数a, b, c, 按照由小到大的顺序输出。

第四、实验课教师要当场检查程序。在实验课上, 任课教师一定要对学生的作业进行当场检查、提问, 只有这样才能杜绝学生去抄袭别人的, 就算抄来弄不明白也是白费心机。要想上机时顺利通过, 课堂上必须认真听讲, 记笔记。因此课堂教学时学生基本上没有迟到和无故缺的, 并且课堂上都能专心听讲, 记笔记, 课间10分钟还问个不停, 因为上机时就没有这么多时间详细问老师了。同时在实验课上, 老师还可以有针对性地个别辅导, 对比过去单纯的批改书面作业老师对学生成绩的评定也更客观, 同时也有效地避免学生互相抄袭作业、不求甚解的弊端。同时大家提问的积极性也充分调动起来了。

总之, 在实验课教学的过程中, 教师要尽心、尽责, 同时加强对学生的管理工作, 对每个同学严格要求, 同时在自己的教学方法和教学手段上下更多的功夫。

实践证明, 通过以上措施, 在C语言实验课上增加了学生的学习热情, 在一定程度上提高了学生程序的编写、调试能力, 对今后学习其他计算机课程打下了良好的基础。这些改革措施不但对学生提出了更严格的要求, 而且对任课教师的要求也提高了, 工作量也势必增加, 这就要求我们老师要比平常付出更多。当然, 这只是我对于C语言实验课教学的一点经验, 还希望得到进一度的完善和提高。

摘要:本文首先介绍了C语言实验课教学的重要性, 然后探讨了一些在C语言实验课教学中的方法, 最后总结了实验课教学的效果和体会。

C语言实验教学改革初探 第9篇

关键词:C语言;实验;教学改革

作者简介:吕风杰(1973-),男,山东沾化人,滨州学院计算机科学技术系,讲师;马士明(1983-),男,山东滨州人,滨州学院计算机科学技术系,助教。(山东滨州256600)

基金项目:本文系滨州学院教学研究资助项目(项目编号:BZXYJYXM200737)的研究成果。

中图分类号:G642.423     文献标识码:A     文章编号:1007-0079(2012)10-0118-02

C语言以其结构化、灵活性好、可移植性强、效率高等优点被广大院校理工科专业选为程序设计的入门课程。[1]随着应用型人才培养改革的不断深入,学生培养目标和教育教学理念也不断更新,但自进入高校课堂20余年来,受传统应试教育的引导,大都将授课重点放在C语言的基本语法的理论讲授上,而实验教学大多用于C语言的语法规则的验证和说明,这种教学模式仅从语言的使用这个单一的角度进行教学而使得大多数学生在学完之后吃不透、用不活所学语言知识。面对这种形势,原先的实验教学计划已远不能满足要求,如何从培养学生能力的角度出发优化实验教学内容,使实验教学与理论教学形成一个目标明确、由浅入深、紧密联系的有机整体已成为当前C语言教学中的迫切性问题。本文从C语言的特点出发,对如何在当前课时、实验资源有限的情况下,通过实验教学促进、完善课堂教学效果,培养学生实践能力、创新能力和应用能力进行了深入的探讨与实践。

一、改革实验教学内容

在应用型人才培养模式下,实验教学的组织要兼顾实践性与创新性。我们在原有教学大纲的基础上,根据电子信息类专业的特点重新修订了实验大纲,教学内容中提高了设计性和综合性实验的比例。

1.改革实验内容组织结构

为了不影响专业教学计划,又能保证实验教学改革的顺利进行,我们结合理论教学进度,编写了相对开放的实验教学大纲和讲义,将实验分为基础性实验、设计性实验和综合性实验三个层次,又将每个层次的实验内容分为必做和选做两类,以供不同专业按要求进行灵活选择。根据理论教学进度安排基础性实验,让学生熟悉编程、调试环境,掌握基本指令并学会简单编程,加深对课堂理论教学内容的理解;在单元章节之后安排设计型实验,采用任务驱动教学法,验证性与应用性实验相结合,在完成基础性实验的基础上,逐步丰富功能要求,并要求学生在实验报告中加以总结归纳,培养学生的综合思维能力;综合型实验其实是一个开放性试验,安排于每个知识单元或模块(从知识的角度出发,独立于理论教材编排)完成之后,每一个项目只给出具体的功能及性能要求,对具体方法不作要求和指导,并将一个实验课题分为设计、调试、总结、改进等几个进程,先由学生根据题目要求完成功能设计并通过调试,再由教师根据学生的设计从功能及性能方面进行有针对性的分析讲解,进而提出设计建议,然后由学生完成设计改进并写出实验报告及分析总结,以达到实践性与创新性的同步提高。

2.创新实验内容

目前,高校教學过程中所用教材及参考书大都以普教为目标,极少有针对专业或行业的例题和习题出现,而各高校开设的C语言实验教学内容恰恰大多为所用教材或参考书的习题。这类经典习题专业针对性差,对学生来说缺乏趣味性,用以进行功能验证尚可,但对于能力提高或创新教育的确是勉为其难了。而且随着网络等学习资源的普及使得问题的解决极为简单,学生仅需上网搜索一下即可得到完整答案,于是实验课程就成了简单的验证,很难起到锻炼和提高的作用。

为此,我们专门针对电子信息类专业的特点精心设计了实验内容,基础性实验采用经典案例,针对性强,利于学生的入门学习;设计型和综合型实验尽量选择与学生专业相关的项目,如数字滤波的实现、数据分析与验证等。这样一方面能够贴近学生所学专业,使学生不但学会了C语言,而且使得C语言有了“用武之地”;另一方面,在实际学习过程中,能够将学过的其他专业知识融入进来,提高了学生的兴趣及学习积极性,对其他专业课程的学习以至学生的学习风貌与学习态度起到了积极的推动作用。

二、改革实验教学模式

随着各高校对高等教育应用型人才培养改革的不断深入,各专业的教学内容有了较大幅度的修改和增加,在实际教学安排中“C语言程序设计”的理论与实践课时都进行了一定程度的压缩,为保证实践教学效果,在组织教学时进行了一些改革。

1.推行任务推动教学

随着计算机技术的应用与发展,C语言作为各理工科专业的程序设计入门课程,其培养方向应该是掌握程序设计及调试的一般方法,所以在实验教学组织中应以程序设计为主线,有意识地淡化C语言本身语句、语法的介绍,并积极推行典型算法与案例教学相结合的方法,通过精心设计与编排,将复杂枯燥的语法知识分解到每个生动、有趣、实用的程序实例中,把软件工程学的思想贯穿于算法分析和程序设计的过程中。例如,在每个知识单元开始之前先提出一个典型问题,如“业绩提成计算”、“数据排序”等,从问题入手,然后循循善诱,通过任务的分解、解决、综合逐步加以解决,这样不但使学生在程序分析与解决中掌握了相关语法,而且程序设计和解决问题的能力也得到了极大的提高。[2-3]

2.突出结构化程序设计特点

结构化程序设计是C语言程序设计的一大特点,而在当前的教材中却极少涉及到相关的实例,从而使得结构化程序设计在C语言教学中成了一句实实在在的空话。有些学生平时学得很认真,对语法、语句等细节也很熟悉,但碰到稍微复杂一点的编程则无从下手。在教学中,教师应该将现代程序设计的相关理念传授给学生:一般来讲,一个较复杂的软件常可以按功能分割为若干个典型的小模块,每个小模块最终都成为功能单一、结构清晰、接口简单、容易理解和编写的小程序,而加工对象——“数据流”就是将这些模块串接起来的“主线”,只要让学生掌握了典型的算法就可将这些算法变成像搭积木一样组装成相应软件的算法。

如在学过数组部分后,教师给出一个由计时函数GetTickCount()、格式输出函数printf()函数、格式输入函数scanf()一起构成的能够测试人的反应时间的“反应计时器”函数。在此基础之上布置学生设计主函数和相关函数,通过调用“反应计时器”函数完成两个个体各一组样本的采集(如各采集并存储10个独立的反应时间),并计算各自平均值、标准差等指标;进而进行t检验,对个体差别进行分析验证。这样不但使学生学会了相应的算法实现,而且对结构化程序的灵活性和易于扩展等特点及工程应用中的程序设计方法有了较为深刻的理解,同时对工程数学中较为“死板”的统计与检验内容的实际应用有了一个感性的认识,达到了实践能力与创新能力共同提高的培养目标。

另外,在教学过程中,教师还应有意识地总结归纳一些典型算法,并作为验证型实验内容,要求学生熟练掌握,如累加、累乘、查找、排序等,在后续设计型和综合型实验中将相关内容加入,使得学生能够用会、用活,为以后的程序设计奠定基础。同时,典型算法的熟练掌握也可增加学生学习计算机语言的信心,并提高学习兴趣。[4]

3.充分利用多媒体及网络教学平台

多媒体课件具有演示直观、动态性强等特点,易于被学生所接受和理解,尤其对于实践教学,多媒体课件能够进行直观的演示与模拟,满足了实验教学的要求,把难以理解的内容或不容易观察到的事物用多媒体充分显示出来,调动学生的视觉直观功能,为突破难点创造出良好的氛围,有效地弥补传统教学的不足。

運用网络教学平台进行课后习题的布置与讨论,引导学生提出问题并找寻解决方案。一方面,充分节约了课堂教学时间,缓解了课时不足带来的影响;另一方面,能够将更多的学生吸引到问题的分析与讨论中,“讨论出真知”——相对课堂教学而言,网络讨论扩大了讨论的参与面,能够最大限度地穷尽并纠正学生在问题理解过程中可能出现的问题,极大地提高了学生的学习积极性与学习效果。

4.强化实验教学过程管理

C语言是一门实践性很强的课程,除了要把理论知识学好外,上机实践也是相当重要的一个关键环节。学习中存在的疑点或难点,学生可通过上机调试得到明确解答,同时也加深对学习内容的理解。对学生而言,在每一次的上机前应做好充分准备,编写好上机内容;对上机中出现的问题应能调试分析,编写实验报告,分析程序结果。学生只有反复上机操作才能对C语言有更深、更全面的认识和理解,逐步提高实际操作和学习的能力。对教师而言,应精心设计上机实验内容。设计上机内容时,尽量把所学的内容综合起来,达到知识的系统化。同时,也可布置一些趣味性较浓的内容,以提高学生的学习兴趣,变学生的被动学习为主动学习。另外,上机内容尽量结合学生专业,让学生觉得学有所用。

三、改革实验教学评价模式

注意综合素质的培养与评价,在“C语言程序设计”期末考核中采用实验与理论考核相结合、平时成绩与期终考核成绩相结合的综合考核评价方式,并采用实验教学成绩一票否决的形式,从而改变学生在以往课程学习中“重理论,轻实践”的思想,激发学生学习的积极性与自主性,尤其在创新性培养上。具体做法是摒弃原先那种以对错判分的一刀切的评价方式,在平时教学中对学生实验完成的成绩评判要采用个案分析的方法,在充分理解学生设计意图的基础上因势利导,对设计中的创新之处或闪光点要给予充分的肯定;对不足和错误之处要帮助学生仔细分析,然后由学生自己总结改正,以提高学生的自信心,保护其学习兴趣,最后根据学生的完成情况及钻研态度进行综合评判。

四、总结

任何一种程序设计语言都有其独有的语法特点,作为程序设计入门课程的“C语言程序设计”也不例外,但是,应该认识到在高校C语言教学中,学习语法不是学习程序设计语言的真正目的,而是应该在掌握语法的基础上,通过学习与实践,真正地学会使用C语言来解决各种实际问题,进而使学生掌握程序设计思想,真正成为学生进入程序设计领域的“敲门砖”、“导航灯”。通过对近两年的学生期终理论考试成绩对比分析发现,改革前后对于语法部分的得分率没有明显变化,而综合编程题的得分率比以前有了大约25%的提高,且学生学习的积极性比以前有较大的提高,课程结束后不少学生又通过计算机等级考试等各种形式进行了进一步的学习与提高,C语言实践教学改革取得了理想的效果。

参考文献:

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

[2]郑人杰,马素霞,殷人昆,等.软件工程概论[M].北京:机械工业出版社,2001.

[3]敖志广,吕振辽,高克宁.非计算机专业本科生C语言的教学实践[J].计算机教育,2007,(1):53-54.

[4]林向宝.C语言教学探讨[J].黑龙江交通科技,2007,(4):120-121.

(责任编辑:王祝萍)

c语言五子棋实验报告

c语言五子棋实验报告(精选9篇)c语言五子棋实验报告 第1篇五子棋小游戏一.需求分析现在有越来越多的人使用电脑,而且五子棋的受众广泛但...
点击下载文档文档内容为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部