版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语语言言程程序序设设计计指指导导书书(电类专业使用)(电类专业使用)电气与信息工程学院 计算机系 2009-12-24目目 录录前言前言 .3实验一实验一 C 语言环境实验语言环境实验.4实验二实验二 简单程序设计简单程序设计.19实验三实验三 分支结构程序设计分支结构程序设计 .24实验四实验四 循环结构程序设计循环结构程序设计 .29实验五实验五 函数程序设计函数程序设计.34实验六实验六 数组程序设计数组程序设计.40实验七实验七 指针程序设计指针程序设计.47实验八实验八 结构程序设计结构程序设计.52实验九实验九 文件结构程序设计文件结构程序设计 .57实验十实验十 综合程序设计综
2、合程序设计.61实验十一实验十一 综合程序设计综合程序设计.64附录附录 1 C 语言程序的上机步骤语言程序的上机步骤.65附录附录 2 程序调试的方法程序调试的方法.67前前 言言一、本课程实验教学的地位和作用一、本课程实验教学的地位和作用C 语言程序设计课程是一门重要的公共基础课。其主要任务是使学生掌握 C 语言的基本概念与结构化程序设计方法等方面的知识。实验课是本课程重要的教学环节,通过本课程的学习使学生加深对讲授内容的理解,熟悉所用计算机系统的操作方法,学会上机调试程序基本操作,能够运用 C 语言程序解决本专业某些实际问题,并养成严谨的科学态度和科学的思维方法,从而提高分析和解决问题的
3、能力,为后续课程的学习和在毕业设计时使用计算机解决实际问题打下良好的基础。二、本课程应讲授的基本实验理论二、本课程应讲授的基本实验理论1、掌握所用 VC+6.0 系统的基本操作方法,学会独立使用该系统;了解在该系统上如何编辑、编译、连接和运行 C 程序;2、掌握结构化程序设计方法。三、本课程实验教学应达到的能力要求三、本课程实验教学应达到的能力要求1、掌握赋值语句的使用方法及各种类型数据的输入输出方法;2、掌握实现选择和循环的编程方法,学习调试程序;3、掌握数组的定义、赋值和输入输出方法,掌握字符数组和字符串函数的使用等;4、掌握定义函数及调用函数的方法;5、通过实验进一步掌握指针的概念,学会
4、定义和使用指针变量,能正确使用指向数组的指针变量,能正确使用指向字符串的指针变量;6、掌握结构体类型变量的定义和使用;7、掌握文件以及文件指针的概念,初步学会文件的操作函数。四、本课程实验教学目的与要求四、本课程实验教学目的与要求学生在实验过程中注意自始至终贯彻课程中所介绍的程序设计风格,养成良好的编程习惯。应独立完成所布置的上机作业,为保证尽量在统一安排的上机时间内编译运行通过程序,在每次实验前应事先预习,按照要求写好预习报告,编写好程序。课后撰写实验报告。1、了解所用的计算机系统(包括编译系统)的性能和使用方法。2、复习和掌握与本实验有关的教学内容。3、准备好上机所需的程序,在上机实验时必
5、须完成预习要求中规定的任务,切忌不编程或抄别人的程序去上机。4、对程序中出现的问题应事先估计,对程序中自己有疑问的地方应先作上记号,以便上机时给予注意。5、准备好调试程序和运行程序所需的数据。6、在实验中,学生根据实验指导中的内容进行验证与总结,然后再去完成实验内容中安排的任务。五、本课程实验教学考核办法五、本课程实验教学考核办法实验课成绩占本课程总成绩的 20%。对于没有按照预习要求预习的,视本次实验无效。对无故缺实验者,本门课程实验成绩以零分计。实验一实验一 C C 语言环境实验语言环境实验【实验目的实验目的】1、熟悉 C 语言的集成环境,了解菜单的使用方法。2、通过运行简单的程序,了解
6、C 语言程序的结构。【实验性质实验性质】验证性【实验要求实验要求】1、认真本实验的实验内容,熟悉 VC 环境使用过程 2、会使用 VC 编写最简单的程序【预习要求预习要求】1、仔细阅读实验内容中关于 VC 环境使用的步骤2、有条件的话可以在电脑上按照实验内容实际操作3、在预习报告中回答问题【实验内容实验内容】( (一一) )、VCVC 环境介绍环境介绍Visual C+是微软公司开发的,面向Windows 编程的C+语言工具。它不仅支持C+语言的编程,也兼容C 语言的编程。由于VC+被广泛地用于各种编程,使用面很广,本课程采用Visual C+作为开发环境。下面介绍如何在VC+下开发、运行C
7、语言程序。1 1、启动、启动VC+VC+VC+是一个庞大的语言集成工具,经安装后将占用几百兆磁盘空间。点击“开始”-“程序”-“Microsoft Visual Studio 6.0”-“Microsoft Visual C+ 6.0”,可启动VC+环境,如下图所示。启动VC+环境启动VC后,屏幕上将显示如下图所示的窗口。VC+启动后界面2 2、创建工程、创建工程 在启动VC环境后,需要为C程序创建一个工程,如下图所示,点击“文件”菜单下的“新建”菜单项。新建C工程1选择选择输入工程的名字工程所有文件的位置新建工程2如上图所示,在“工程”一栏中选择“Win32 Console Applicat
8、ion”类型,在“工程”输入框中输入你为工程起的名称,点击“C位置”后面的“”按钮,显示如下界面。先选择需要保存在哪个盘再选择需要保存该盘的哪个文件夹选择保存位置在上图中选择需要保存的文件夹的位置,点击“确定”按钮。显示如下界面。选择工程类型在上图中,选择“An empty project”选项,点击“完成”按钮,弹出如下界面。完成工程新建点击“确定”按钮,新建一个空工程。如下图所示。新建工程后界面新建完工程后,点击“文件”菜单。如下图所示。新建C源程序文件1点击“新建”子菜单,弹出如下图的界面,新建C源程序文件。选择选择输入新建C程序的文件名新建C源程序文件2选择“文件”下的“C+ Sour
9、ce File”选项,在“文件”输入框中输入C源程序的文件名(注意需要加.C表示是C源程序文件,假如不指定扩展名.C,VC+会把扩展名定义为.CPP,即C+程序。如果程序没有错误) 。点击“确定”按钮。进入编辑C程序界面。3 3、编写代码、编写代码如下图所示。代码区,编写程序工程区,查看工程菜单栏,提供功能操作工具栏,提供快捷操作信息区,提供编译信息,如果编译错误,需要在此查看VC版面介绍在上图所示的代码区中输入需要编写的C程序代码。如果需要查看已经编写的C程序文件,点击工程区中的“File View” ,展开“Source Files” ,下面包含的文件即为所创建的C源程序文件,点击可以打开
10、。选择展开,C1-1.C即为所创建的C程序,双击可以打开查看C程序文件输入程序的代码,如下图。注释,编写程序时,请养成给代码注释的好习惯一行一条语句代码采用锯齿形式,有利于代码的阅读定义变量时不要偷懒,需要将变量名做到见名知义编写C程序文件在编写代码时请注意养成一些好习惯:1)行编写一条语句,代码采用锯齿形式,有利于代码的阅读;2)定义名需要做到见名知义;3)编写程序时,请养成给代码注释的好习惯,方便代码阅读;4 4、编译运行、编译运行在代码编写完成后,点击“编译”菜单下的“编译”子菜单,将C程序编译成.Obj文件。如下图所示。编译C程序如果编译成功,在信息区中,会出现“0 error(s)”
11、的提示信息,如果编译不成功,则会在在信息区中提示出错信息,如下图所示。 请注意,该程序中,出现了以下错误:第五行 prinf()语句后少了一个分号”;”第六行scanf()函数中,没有”符号和“配对第七行value2写成了value由于源程序错误,在编译代码时,提示出错信息,共有三个错误(注意由于编译器不能完全智能化,提示的信息可能和实际错误有些出入)出错位置信息错误详细信息编译 C 程序的错误信息在编译出错后,请仔细根据错误信息,双击某行出错信息,程序窗口中会指示对应出错位置,根据信息窗口的提示分别予以纠正。在编译程序时,请注意“工具栏”上的“保存”按钮,将程序保存,以免造成不必要的损失,如
12、果出现VC环境“死了”的情况(程序点击不动),关闭VC环境出现如下图这时,请按“Ctrl+ALT+Del”键,选择“VC+”点击“结束任务”,将VC强制关闭,重新启动即可,如下图所示。任务管理器点击“编译”菜单下的“构建”子菜单,将.Obj 文件连接成.EXE 文件。如下图所示。构建 C 程序构建成功后,点击“编译”菜单下的“执行”子菜单,可以运行程序,如下图。执行 C 程序当运行C 程序后,VC+将自动弹出数据输入输出窗口,在其中输入数据,完成程序执行,显示结果,如下图所示。按任意键将关闭该窗口。C 程序运行界面对于编译连接执行操作,VC+还提供了一组工具按钮,如图下图所示。工具栏上的编译、
13、执行按钮5 5、关闭程序工作区、关闭程序工作区当一个程序编译连接后,VC+系统自动产生相应的工作区,以完成程序的运行和调试。若想执行第二个程序时,必须关闭前一个程序的工作区,然后通过新的编译连接,产生第二个程序的工作区。否则的话运行的将一直是前一个程序。“文件”菜单提供关闭程序工作区功能,如下图右,执行“关闭工作区”菜单功能,会弹出询问是否保存的对话框,如下图左。如果选择“是”,将同时关闭源程序窗口。关闭工作区6 6、程序调试、程序调试调试程序是编写代码的一个非常重要的步骤,当程序编译成功,需要查看程序执行过程以及其变量值的情况,需要启动调试。VC+是一个完全基于Windows 的系统,它的调
14、试过程通过鼠标比较容易进行。(1) 程序执行到中途暂停以便观察阶段性结果:方法一:使程序执行到光标所在的那一行暂停。在需暂停的行上单击鼠标,定位光标;如图A-17 所示,分别点击菜单“编译”“开始调试”“Run to Cursor”,或按【Ctrl】+【F10】,程序将执行到光标所在行会暂停。如果把光标移动到后面的某个位置,再按【Ctrl】+【F10】,程序将从当前的暂停点继续执行到新的光标位置,第二次暂停。程序执行到光标所在行暂停方法二:在需暂停的行上设置断点;在需设置断点的行上单击鼠标,定位光标;按“编译微型条”中最右面的按钮,如图A-18 所示,或按【F9】。调试被设置了断点的行前面会有
15、一个红色圆点标志。与TC 一样,不管是通过光标位置还是断点设置,其所在的程序行必须是程序执行的必经之路,亦即不应该是分支结构中的语句,因为该语句在程序执行中受到条件判断的限制,有可能因条件的不满足而不被执行。这时程序将一直执行到结束或下一个断点为止。(2) 设置需观察的结果变量按照上面的操作,使程序执行到指定位置时暂停,目的是为了查看有关的中间结果。在如图A-19 中,左下角窗口中系统自动显示了有关变量的值,其中value1 和value2 的值分别是3、4,而变量i、sum 的值是不正确的,因为他们还未被赋值。图中左侧的箭头表示当前程序暂停的位置。如果还想增加观察变量,可在图中右下角的“Na
16、me”框中填入相应变量名。观察结果变量(3) 单步执行当程序执行到某个位置时发现结果已经不正确了,说明在此之前肯定有错误存在。如果能确定一小段程序可能有错,先按上面步骤暂停在该小段程序的头一行,再输入若干个查看变量,然后单步执行,即一次执行一行语句,逐行检查下来,看看到底是哪一行造成结果出现错误,从而能确定错误的语句并予以纠正。单步执行按“调试条”中“Step Over”按钮或【F8】,如图A-20 所示。如果遇到自定义函数调用,想进入函数进行单步执行,可按“Step Into”按钮 或【F11】。当想结束函数的单步执行,可按“Step Out”按钮或【Shift】+【F11】。对不是函数调用
17、的语句来说,【F11】与【F8】作用相同。但一般对系统函数不要使用【F11】。单步调试(4) 断点的使用使用断点也可以使程序暂停。但一旦设置了断点,不管你是否还需要调试程序,每次执行程序都会在断点上暂停。因此调试结束后应取消所定义的断点。方法是先把光标定位在断点所在行,再按“编译微型条”中最右面的按钮或【F9】,该操作是一个开关,按一次是设置,按二次是取消设置。如果有多个断点想全部取消,可执行“编辑”菜单中的“断点”菜单项,屏幕上会显示“Breakpoints”窗口,如图A-21 所示,窗口下方列出了所有断点,按“Remove All”按钮,将取消所有断点。断点通常用于调试较长的程序,可以避免
18、使用“Run to Cursor”(运行程序到光标处暂停)或【Ctrl】+【F10】功能时,经常要把光标定位到不同的地方。而对于长度为上百行的程序,要寻找某位置并不太方便。如果一个程序设置了多个断点,按一次执行键【Ctrl】+【F5】会暂停在第一个断点,再按一次【Ctrl】+【F5】会继续执行到第二个断点暂停,依次执行下去。取消所有断点(5) 停止调试使用“Debug”菜单的“Stop Debugging”菜单项,或【Shift】+【F5】键可以结束调试,从而回到正常的运行状态。上面只介绍了VC+中主要的功能,对于其他的操作可以自己试验或参考有关VC+手册。( (二二) )、程序练习、程序练习
19、1 1、请将下面程序在、请将下面程序在VCVC环境中输入,并运行观察结果环境中输入,并运行观察结果 1) #includevoid main()printf(我爱学C语言!n);printf(告诉你学好C语言的秘笈:n);printf(编程!编程!再编程!n); 2) #includevoid main()int price,weight,value;price=10;weight=20;value=price*weight;printf(价格为%d,重量为%d货物,价值为%dn,price,weight,value);price=5;weight=8;printf(价格为%d,重量为%d货物
20、,价值为%dn,price,weight,value);value=price*weight;printf(价格为%d,重量为%d货物,价值为%dn,price,weight,value);3) #includevoid main()float r,s;FILE *fp;r=12.4;s=r*r*3.14;fp=fopen(c:data.txt,w);fprintf(fp,半径为%f的圆,其面积为%f,r,s);printf(计算成功!,具体请看C盘下的data.txt文件);fclose(fp);2 2、依照、依照1-31-3中函数的写法,编写一程序,求高为中函数的写法,编写一程序,求高为5
21、.45.4,半径为,半径为2.32.3的圆柱体的体积的圆柱体的体积【实验报告实验报告】【思考题思考题】1、使用 VC 编程时,应先创建的工程是什么类型?2、如何运行一个 C 程序?实验二实验二 简单程序设计简单程序设计【实验目的实验目的】1、掌握 scanf、printf 函数语句的使用2、掌握算术表达式和赋值表达式的使用3、能够编程实现简单的数据处理【实验性质实验性质】 验证性【实验要求实验要求】1、认真阅读本次实验的目的,了解本次实验要求掌握的内容2、在上机前,需要预习,在程序改错题旁将程序中存在的错误修改过来,将编程题的代码和流程图写在预习报告中3、在实验时,将实验要求的基本题(程序改错
22、和编程题)根据预习报告中编写的代码,在 VC 环境中编写出来4、在 VC 中将编写的程序编译、调试,能正确运行结果,各题目的具体要求请看题目下的要求5、将正确程序上传 FTP 服务器6、争取完成选作题【实验内容实验内容】1、程序改错1) 下面程序需要从键盘输入三个数,计算其平均值在屏幕上显示输出。要求平均值需要保留两位小数。源代码如下,程序中存在错误,请将其改正写在旁边,并注明为什么错误。include stdio.hMain() int x,y,z,float ave; /*定义变量*/ printf(请输入三个数:n);/*输入提示*/ scanf(%d,%d,%d,x,y,z);/*从键
23、盘输入*/ ave=x+y+z/3;/*计算*/ printf(平均值是:ave=%f,AVE);2、编程题1)编写程序,在计算机屏幕上显示如下信息。【要求】 (1)使用 printf 函数输出字符 2) 设一个正圆台的上底半径 r1,下底半径 r2,高 h。请设计一程序,从键盘输入r1,r2,r3;计算并在显示器上输出该圆台的上底面积 s 1,下底面积 s 2,圆台的体积V。 【要求】 (1)r1,r2,h 用 scanf 函数输入,且在输入前要有提示; (2)在输出结果时要有文字说明,每个输出值占一行,且小数点后取 2 位数字。 【思路点拔】 (1)圆面积计算公式为 s=r2。其中 r 为
24、圆半径。 (2)圆台体积计算公式为 V=3/)r1r2r2r1(h223) 鸡兔同笼,已知鸡兔总头数为 h,总脚数为 f,求鸡兔各有多少只?【要求】 (1)用 scanf 函数输入 h 和 f,且在输入前要有提示; (2)在输出结果时要有文字说明。【思路点拔】设有 x 只鸡,有 y 只兔,则有: 求出 x 和 y 的公式:从而可以计算出 x 和 y 。3 选作题1)编程求 ax2+bx+c=0 的解【思路点拔】用求根公式 x1,2=(-bb2-4ac)/2a)2)编程求 y=sin()+ln(a+x). 要求 a 和 x 从键盘输入ax【思路点拔】使用数学函数计算【预习报告预习报告】1 流程图
25、代码2流程图代码3流程图代码【实验报告实验报告】【思考题思考题】1、变量在程序中有什么作用,如何从键盘中输入多个变量的值2、用#define 定义的常量与变量有什么区别,什么时候应该使用#define 定义符号常量3、程序中有哪几种流程结构,具体在程序中用什么体现实验三实验三 分支结构程序设计分支结构程序设计【实验目的实验目的】1、掌握关系表达式和逻辑表达式的使用2、掌握使用 if 语句实现分支结构程序设计3、了解 switch 语句【实验性质实验性质】 验证性【实验要求实验要求】1、认真阅读本次实验的目的,了解本次实验要求掌握的内容2、在上机前,需要预习,在程序改错题旁将程序中存在的错误修改
26、过来,将编程题的代码和流程图写在预习报告中3、在实验时,将实验要求的基本题(程序改错和编程题)根据预习报告中编写的代码,在 VC 环境中编写出来4、在 VC 中将编写的程序编译、调试,能正确运行结果,各题目的具体要求请看题目下的要求5、将正确程序上传 FTP 服务器6、争取完成选作题【实验内容实验内容】1、程序改错 1) 下面程序需要从键盘输入一个数,判断其是奇数还是偶数。源代码如下,程序中存在错误,请将其改正写在旁边,并注明为什么错误。#include stdio.hmain() int x; printf(请输入一个数:/n);/*提示输入*/ scanf(%d,&x); if(x=2*n
27、); /*判断*/ printf(x 是偶数); printf(x 是奇数); 2、编程题1) 编写一程序,从键盘输入三角形的三条边,如果能构成一个三角形判断其是否是等腰三角形(等边三角形是等腰三角形的特例) ;【要求】(1)用 scanf 函数输入三角形的三条边 a,b,c,且在输入前要有提示;(2)使用 if 语句判断,对每种情况都需要有提示 2) 在商场购物时,若所购物品的总价值 x(由键盘输入)在某一范围时,付款 y 按对应折扣支付,即 x x1000 y= 0.9x 1000 x20000.8x 2000 x30000.7x x3000 编写一程序,根据 x 的值计算 y【要求】(1
28、)用 scanf 函数输入 x(x 为小数) ,且在输入前要有提示;(2)使用 if-else if-else 语句判断,计算 y 的值(2)使用 printf 输出 y 的值,小数点保留 2 位3)从键盘输入 3 个数,输出最大值和最小值【要求】(1)用 scanf 函数输入三个数,且在输入前要有提示;(2)使用嵌套结构出最大值,然后求出最小值,并使用 printf 输出3 选作题 1)编写一程序,从键盘输入一个不多于 4 位的正整数,能显示出它是几位数,并按正反两种顺序显示出各位数字。例如,若输入 1234,输出为:位数:n=4正序:1234反序:4321【编程点拨】(1)先判断 x 是否
29、为满足要求 n 大于 9999,小于 0 时,则不满足要求(2)通过%和/运算分离出各个位上的值,先判断千位是否为零,如果为零,则不可能为四位数,再判断百位上的数是否为零(3)反序输出时,先输出个位,再十位,百位,千位 2)从终端输入两个实数和一个四则运算符(、*、 /),执行相应的运算并输出运算结果。 (如输入 12+4,结果为 48)【编程点拨】(1)先用 scanf 函数,输入四则运算的两个操作数和运算符,分别保存在不同的变量,注意保存运算符的变量只能是字符型(2)对运算符变量进行判断,根据运算规则,编写相应的表达式求运算结果【预习报告预习报告】1 流程图代码2流程图代码3流程图代码【实
30、验报告实验报告】【思考题思考题】(1)对于编程题 2,如何使用 if 语句嵌套的方式和 switch 语句的方式实现(2)对于多分支结构,使用 ifelse if 还是使用嵌套结构,需要注意什么?(3)编写分支结构时,条件的编写需要注意什么实验四实验四 循环结构程序设计循环结构程序设计【实验目的实验目的】1、掌握使用 for、while 和 dowhile 语句实现循环程序设计2、理解循环条件、循环体3、掌握 break、continue 语句的使用【实验性质实验性质】 验证性【实验要求实验要求】1、认真阅读本次实验的目的,了解本次实验要求掌握的内容2、在程序改错题旁,将程序中存在的错误修改过
31、来3、将编程题的代码在预习报告中写出来4、在实验时,将实验要求的基本题(程序改错和编程题)根据预习报告中编写的代码,在 VC 环境中编写出来5、在 VC 中将编写的程序编译、调试,能正确运行结果6、将正确程序上传 FTP 服务器7、争取完成选作题【实验内容实验内容】1、程序改错 1) 编写程序,求 1!+2!+3!+.+10!的和, 源代码如下,程序中存在错误,请将其改正写在旁边。#include stdio.hmain() int i; long sum,temp;/*定义变量*/ for(i=1,iy)/*如果 xy,两个值互换,保证第一个参数为小值*/ x=y;y=x; acd=acd(
32、int m1,int m2);/*调用函数求最大公约数*/ amd=(x*y)/acd;/*求最小公倍数*/ printf(最大公约数=%d,最小公倍数=%d,acd,amc);/* 函数功能:使用辗转相除法求两个数的最大公约数 参数 m1:两个数中较小者 参数 m2:两个数中较大者 返回值:m1 和 m2 的最大公约数 */int acd(int m1,int m2); int r; while (m1=0)/*使用辗转相除法求最大公约数*/ r=m2%m1;m1=r;m2=m1; return r;/*返回最大公约数*/2、编程题 1) 若正整数 A 的所有因子(包括 1 但不包括自身,下
33、同)之和为 B,而 B 的因子之和为A,则称 A 和 B 为一对亲密数。例如,6 的因子之和为 1+2+3=6,因此 6 与 6 为一对亲密数(即 6 自身构成一对亲密数);又如,220 的因子之和为l+2+4+5+10+11+20+22+44+55+110=284,而 284 的因子之和为 1+2+4+71+142=220,因此,220 与 284 为一对亲密数。 编写程序,求 500 以内的所有亲密数对。【要求】 (1)编制 facsum(n) 函数,返回 n 的所有因子(包括 1 但不包括自身)之和。 (2)在 main 函数中调用 facsum(),寻找并输出 500 以内的所有亲密数
34、对。(3)输出要有文字说明。并且小数在前、大数在后,去掉重复的数对。(4)采用程序改错题的的编码风格对源代码做注释 2) 计算并输出 !n)!nm(!m【要求】 (1)编制一个函数 pq(n),返回 n!值。 (2)在 main 函数中,从键盘输入 m 与 n,调用函数 pq 计算。 (3)在 main 函数中,输入 m 与 n 之前要有提示,并检查输入数据的合理性(mnO),对于不合理的输入,应输出出错信息,不再进行计算。 (4)采用程序改错题的的编码风格对源代码做注释3)使用函数的方法求 1000 之内的自守数,自守数是指一个数的平方的尾数等于该数自身的自然数。例如:252=625 ;76
35、2=5776;93762=87909376(1)编制一个函数 isAutomorphic (n),判断 n 是否为自守数数,如果是返回 1,如果不是返回 0。 (2)在 main 函数中,使用 for 循环,调用函数 isAutomorphic 判断 n 是否为自守数。(3) 打印的数字占 8 个字符宽,每行显示 5 个自守数。(4)采用程序改错题的的编码风格对源代码做注释3 选作题1)已知,编写一程序,从键盘输入 x,求 s(x)的! 37! 25! 13)(753xxxxxs值(计算后面的 20 项的和) 。 2)用递归方法,计算13+23+33+43+n3的值,n的值由键盘输入。【编程点
36、拨】假设用f(n)表示13+23+33+43+n3,则可用以下公式表示: 1 当n=1时f(n)= n3 +f(n-1) 当n1时根据上述的递归关系式,编写函数 f()。【预习报告预习报告】1 流程图代码2流程图代码3流程图代码【实验报告实验报告】【思考题思考题】1、函数调用时,参数是如何传递的2、如果在函数中有多条 return 语句,程序执行会如何处理,如果想返回多个值,应该怎么办?3、如果函数在执行时,需要得到上一次该函数调用时变量的值该怎么办,如果函数想使用别的函数中的变量的值该怎么办实验六实验六 数组程序设计数组程序设计【实验目的实验目的】1、掌握使用一维数组编程方法2、掌握使用字符
37、数组处理字符串的方法2、了解二维数组【实验性质实验性质】 验证性【实验要求实验要求】1、认真阅读本次实验的目的,了解本次实验要求掌握的内容2、在程序改错题旁,将程序中存在的错误修改过来3、将编程题的代码在预习报告中写出来4、在实验时,将实验要求的基本题(程序改错和编程题)根据预习报告中编写的代码,在 VC 环境中编写出来5、在 VC 中将编写的程序编译、调试,能正确运行结果6、将正确程序上传 FTP 服务器7、争取完成选作题【实验内容实验内容】1、程序改错 1) 下面程序的功能,是从键盘输入一个数组(数组长度为 10) ,查找数组中正数的个数。源代码如下,程序中存在错误,请将其改正写在旁边。#
38、include stdio.hmain() int a(10);/*定义数组*/ int count,i;/* i 循环变量 count 正数个数*/ for(i=0;i=10;i+)/*循环输入*/ scanf(%d,ai); count=1; for(i=0;i0)count+; printf(数组中正数有:%d 个,count);2、编程题 1) 从键盘输入一个字符串,将其中的大写字母变小写字母,小写字母变大写字母,并输出 。【要求】 (1)用字符数组表示存储字符串(字符串最大为 100) 。 (2)使用 scanf 函数逐个输入字符保存在字符数组中 (3)使用 printf 函数逐个输
39、出字符数组中的字符 2) 输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。【要求】 (1)数组长度定义为 10 (2)输出数组时每个元素占 8 个宽度,每行 5 个3) 编程序按下列公式计算 s 的值(其中 x1、x2、xn由键盘输入): (其中 x0是 x1、x2、xn的平均值)201)(xxsnii【要求】 (1)用数组保存 x1、x2、xn的值。 (2)n 的值从键盘输入3 选作题 1)求从一个字符串中删除所有指定字符的其余字符串。如字符串为“abcaca” ,删除字符“a”后,为“bcc” 。【编程点拨】(1)使用字符数组保存字符串,从字符串数组的第一个元素开始遍
40、历(2)如果当前的元素与需要删除的元素相等,则删除。(3)删除是指将该元素前移到需要拷贝的位置 2)使用二维数组打印如下图形 【编程点拨】(1)注意数组中元素和下标的关系,根据其规律给数组的元素赋值 (2)然收再输出二维数组即可 【预习报告预习报告】1 流程图代码2流程图代码0 0 0 100 0 9 80 7 6 5 4 3 2 1 3流程图代码【实验报告实验报告】【思考题思考题】 1、数组在程序设计时有什么作用?如果程序在设计时,不知道数组中保存数据的个数,应该怎么办 2、二维数组在内存中是如何存储的,二维数组中元素的下标与其在内存中排列的位置有什么关系? 3、如何将一个元素插入数组中,如
41、何将一个元素从数组中删除实验七实验七 指针程序设计指针程序设计【实验目的实验目的】1、理解指针、地址和变量的关系2、掌握通过指针操作数组元素的方法3、掌握数组名、指针作为函数参数的编程方式4、掌握通过指针操作字符串的方法【实验性质实验性质】 验证性【实验要求实验要求】1、认真阅读本次实验的目的,了解本次实验要求掌握的内容2、在程序改错题旁,将程序中存在的错误修改过来3、将编程题的代码在预习报告中写出来4、在实验时,将实验要求的基本题(程序改错和编程题)根据预习报告中编写的代码,在 VC 环境中编写出来5、在 VC 中将编写的程序编译、调试,能正确运行结果6、将正确程序上传 FTP 服务器7、争
42、取完成选作题【实验内容实验内容】1、程序改错 1) 下面程序想使指针变量 pt1 指向 a 和 b 中的大者,pt2 指向小者,源代码如下,程序中存在错误,请将其改正写在旁边。#include stdio.hswap(int *p1,int *p2) int *p;p=p1;p1=p2;p2=p;main()int a,b;scanf(%d,%d,&a,&b);pt1=&a;pt2=&b;if(&a&b)swap(pt1,pt2);printf(%d,%dn,*pt1,*pt2);2、编程题 1) 使用指针的方法求 100 的素数【要求】 (1)先在数组中保存 1-100 的所有整数 (2)使
43、用指针的方式对数组中非素数剔除2) 判断一个数是否为回文数【要求】 (1)定义一个函数 separate(int * data,int n),该函数将 n 的各个位上的数分离保存在 data 所指向的数组中。 (2)定义一个函数 judge(int * data,int len),判断 data 所指向的数组是否为回文。 (3)main 函数中调用上述的函数,完成程序的功能。3) 从键盘输入两个字符串,输出第一个字符串在第二个字符串中的位置(第一个字符串的首字母在第二个字符串中的位置,如“abc”在“bbbacccabcddaw3”的位置为7) 【要求】(1)使用指针的方法遍历数组。3、选作题
44、 1)使用指针的方式,从一个字符串中删除所有指定字符的其余字符串。如字符串为“abcaca” ,删除字符“a”后,为“bcc” 。【编程点拨】(1) 注意指针的使用,参考实验六的编程方法2)有 20 个数,编写一程序,使其右循环移 m 个位置(m 的值可以从键盘输入) ,并输出移到后的 20 个数。【编程点拨】(1)20 个数使用数组保存。(2)使用指针的方法遍历数组。【预习报告预习报告】1 流程图代码2 流程图代码3流程图代码【实验报告实验报告】【思考题思考题】1、指针在程序设计中有什么作用2、一维数组名、二维数组名有什么区别实验八实验八 结构程序设计结构程序设计【实验目的实验目的】1、掌握
45、结构变量的基本使用方法2、掌握结构数组的基本使用方法3、掌握结构指针的概念4、掌握链表的概念和基本操作【实验性质实验性质】 验证性【实验要求实验要求】1、认真阅读本次实验的目的,了解本次实验要求掌握的内容2、在程序改错题旁,将程序中存在的错误修改过来3、将编程题的代码在预习报告中写出来4、在实验时,将实验要求的基本题(程序改错和编程题)根据预习报告中编写的代码,在 VC 环境中编写出来5、在 VC 中将编写的程序编译、调试,能正确运行结果6、将正确程序上传 FTP 服务器7、争取完成选作题【实验内容实验内容】1、程序改错 1)下面程序使用结构体的方法实现两个复数的相加,源代码如下,程序中存在错
46、误,请将其改正写在旁边。#include stdio.h/*定义结构体*/struct pluralint a;/*实部*/int b;/*虚部*/main() plural p1,p2,p3;/*定义结构体变量*/ printf(请输入复数 1 的实部和虚部,中间用逗号隔开n); scanf(%d,%d,p1);/*输入*/ printf(请输入复数 2 的实部和虚部,中间用逗号隔开n); scanf(%d,%d,p2); p3=p2+p1/*两复数相加*/ printf(复数 1 和复数 2 的和为%d+%din,p3);2、编程题 1) 要求编写程序:有 4 名学生,每个学生的数据包括学
47、号、姓名、成绩,要求找出成绩最高者的姓名和成绩。【要求】 (1)定义结构体类型(2)使用结构体数组,保存学生的信息 2) 已知一个职工的信息为:职工号、工资,从键盘输入 n 个职工的信息,并将其显示出来。【要求】 (1)使用链表实现。 (2)n 可以从键盘输入。(3)定义 create 函数实现链表的创建(4)定义 list 函数实现链表的显示。3、选作题 1)在上题基础上,写一函数 insert 来插入新的职工信息,插入位置可由参数指定。 2)在上面的基础上,写一函数 delete,根据职工号来删除一个结点。【预习报告预习报告】1 流程图代码2流程图代码3流程图代码【实验报告实验报告】【思考
48、题思考题】1、结构体在什么情况下需要用到2、使用结构体的一般步骤是什么3、结构数组和链表在保存数据时各有什么优点和缺点实验九实验九 文件结构程序设计文件结构程序设计【实验目的实验目的】1、掌握文件的基本概念2、掌握文本文件的打开和关闭操作3、掌握文本文件的顺序读、写方法【实验性质实验性质】 验证性【实验要求实验要求】1、认真阅读本次实验的目的,了解本次实验要求掌握的内容2、在程序改错题旁,将程序中存在的错误修改过来3、将编程题的代码在预习报告中写出来4、在实验时,将实验要求的基本题(程序改错和编程题)根据预习报告中编写的代码,在 VC 环境中编写出来5、在 VC 中将编写的程序编译、调试,能正
49、确运行结果6、将正确程序上传 FTP 服务器7、争取完成选作题【实验内容实验内容】1、程序改错 1) 下面程序产生所有的水仙花内数,并将其保存在 C:/data.txt 文件中,源代码如下,程序中存在错误,请将其改正写在旁边。#includevoid main()file fp;/*定义文件指针*/int i,a,b,c;fp=open(C:data.txt,w);/*打开文件*/for(i=100;i1000;i+)/*查找水仙花*/a=i/100;b=i%100/10;c=i%10;if(a*a*a+b*b*b+c*c*c=i)fprintf(%8d,i);printf(运行完毕,数据全部
50、保存!);2、编程题 1)编写一程序产生 1000 内的所有素数,并将其保存在 d:/data.txt 文件中【要求】 (1)定义一函数判断一个数是否是素数(2)在 main 函数中调用(1)中定义的函数,将素数保存在文件中 2) 已知一个职工的信息为:职工号、工资、姓名,从键盘输入 n 个职工的信息,并将其保存在 D:/info 文件中。【要求】 (1)使用链表实现。 (2)n 可以从键盘输入。(3)定义 create 函数实现链表的创建(4)定义 writeInfo 函数实现链表的保存。3 选作题 1)建立一个程序,用于产生 200 组算式,每组算式包括一个两位数的加法、减法(要求被减数要
51、大于减数) 、乘法和两位数除以一位数的除法算式,每一组为一行,将所有的算式保存到文本文件 d:a.txt 中 2)已有两个文本文件,今要求编程序从这两个文件中读出各行字符,逐个比较这两个文件中相应的行和列上的字符,如果遇到互不相同的字符,输出它是第几行第几列的字符【预习报告预习报告】1 流程图代码2流程图代码【实验报告实验报告】【思考题思考题】1、文本文件和二进制文件在读取时要注意什么问题2、如何在文件中指定位置的数据实验十实验十 综合程序设计综合程序设计【实验目的实验目的】1、 能综合使用本课程所学习的 C 语言知识进行较复杂程序的设计2、 掌握 C 语言程序的调试方法【实验性质实验性质】
52、综合性【实验要求实验要求】1、认真阅读本次实验的目的,了解本次实验要求掌握的内容2、将编程题的代码在预习报告中写出来3、在实验时,将实验要求的基本题(程序改错和编程题)根据预习报告中编写的代码,在 VC 环境中编写出来4、在 VC 中将编写的程序编译、调试,能正确运行结果5、将正确程序上传 FTP 服务器6、争取完成选作题【实验内容实验内容】1、编程题 1) 有 10 个歌手和 5 个裁判,设计一程序,可以输入 10 个歌手的姓名,5 个裁判可以对 10 个歌手进行打分,计算各个歌手的最终得分(算法为去掉最低分和最高分再求平均值) ,并按得分的高低排序显示。 【要求】(1) 采用结构体实现(2
53、) 采用结构化程序设计思想编程 2 选作题 1)编写一程序,从键盘输入学生的姓名、学号以及三门功课的成绩,计算每个学生的平均成绩,以及每门功课的平均成绩,在屏幕上显示平均成绩最高的学生的姓名,并将学生的所有信息保存在 D:/info.txt 文件中 【预习报告预习报告】1 流程图代码【实验报告实验报告】实验十一实验十一 综合程序设计综合程序设计【实验目的实验目的】1、 熟悉考试环境2、 综合练习编程【实验性质实验性质】 综合性【实验内容实验内容】从考试系统中抽取 附录附录 1 1 C C 语言程序的上机步骤语言程序的上机步骤按照 C 语言语法规则而编写的 C 程序称为源程序。源程序由字母、数字
54、及其它符号等构成,在计算机内部用相应的 ASCII 码表示,并保存在扩展名为“C”的文件中。源程序是无法直接被计算机运行的,因为计算机的 CPU 只能执行二进制的机器指令。这就需要把 ASCII 码的源程序先翻译成机器指令,然后计算机的 CPU 才能运行翻译好的程序。源程序翻译过程由两个步骤实现:编译与连接。首先对源程序进行编译处理,即把每一条语句用若干条机器指令来实现,以生成由机器指令组成的目标程序。但目标程序还不能马上交计算机直接运行,因为在源程序中,输入、输出以及常用函数运算并不是用户自己编写的,而直接调用系统函数库中的库函数。因此,必须把“库函数”的处理过程连接到经编译生成的目标程序中
55、,生成可执行程序,并经机器指令的地址重定位,便可由计算机运行,最终得到结果。C 语言程序的调试、运行步骤可以用图 A-1 表示:图 A-1 C 语言程序的调试、运行步骤图 A-1 中,虚线表示当某一步骤出现错误时的修改路线。运行时,无论是出现编译错误、连接错误,还是运行结果不对(源程序中有语法错误或逻辑错误),都需要修改源程序,并对它重新编译、连接和运行,直至将程序调试正确为止。除了较简单的情况,一般的程序很难一次就能做到完全正确。在上机过程中,根据出错现象找出错误并改正称为程序调试。我们要在学习程序设计过程中,逐步培养调试程序的能力,它不可能靠几句话讲清楚,要靠自己在上机中不断摸索总结,它可
56、以说是一种经验积累。程序中的错误大致可分为三类:程序编译时检查出来的语法错误;连接时出现的错误;程序执行过程中的错误。编译错误通常是编程者违反了 C 语言的语法规则,如保留字输入错误、大括号不匹配、语句少分号等等。连接错误一般由未定义或未指明要连接的函数,或者函数调用不匹配等因素引起,对系统函数的调用必须要通过“include”说明。对于编译连接错误,C 语言系统会提供出错信息,包括出错位置(行号)、出错提示信息。编程者可以根据这些信息,找出相应错误所在。有时系统提示的一大串错误信息,并不表示真的有这么多错误,往往是因为前面的一两个错误带来的。所以当你纠正了几个错误后,不妨再编译连接一次,然后
57、根据最新的出错信息继续纠正。有些程序通过了编译连接,并能够在计算机上运行,但得到的结果不正确,这类在程序执行过程中的错误往往最难改正。错误的原因一部分是程序书写错误带来的,例如应该使用变量 x 的地方写成了变量 y,虽然没有语法错误,但意思完全错了;另一部分可能是程序的算法不正确,解题思路不对。还有一些程序有时计算结果正确,有时不正确,这往往是编程时,对各种情况考虑不周所致。解决运行错误的首要步骤就是错误定位,即找到出错的位置,才能予以纠正。通常我们先设法确定错误的大致位置,然后通过 C 语言提供的调试工具找出真正的错误。为了确定错误的大致位置,可以先把程序分成几大块,并在每一块的结束位置,手
58、工计算一个或几个阶段性结果,然后用调试方式运行程序,到每一块结束时,检查程序运行的实结果与手工计算是否一致,通过这些阶段性结果来确定各块是否正确。对于出错的程序块,可逐条仔细检查各语句,找出错误所在。如果出错块程序较长,难以一下子找出错误,可以进一步把该块细分层更小的块,按照上述步骤进一步检查。在确定了大致出错位置后,如果无法直接看出错误,可以通过单步运行相关位置的几条语句,逐条检查,一定能找出错误的语句。当程序出现计算结果有时正确有时不正确的情况时,其原因一般是算法对各种数据处理情况考虑不全面。解决办法最好多选几组典型的输入数据进行测试,除了普通的数据外,还应包含一些边界数据和不正确的数据。
59、比如确定正常的输入数据范围后,分别以最小值、最大值、比最小值小的值和比最大值大的值,多方面运行检查自己的程序。附录附录 2 2 程序调试的方法程序调试的方法对程序设计者来说,不仅要会编写程序,还要上机调试通过。初学者的程序往往不是一次就能顺利通过,即使一个有经验的程序员也常会出现某些疏忽。上机的目的不仅是验证程序的正确性,还要掌握程序调试的技术,提高动手能力。程序的调试具有很强的技术性和经验性,其效率高低在很大的程度上依赖于程序设计者的经验。有经验的人很快就能发现错误,而有的人在计算机显示出错误信息并告诉他哪一行有错之后还找不出错误所在。所以初学者调通一个程序往往比编写程序花的时间还多。调试程
60、序的经验固然可以借鉴他人的,但更重要的是靠实践来积累。调试程序是程序设计课程的一个重要环节。上机之前要做好程序调试的准备工作。程序调试的准备工作包括熟悉程序的运行环境和各个程序设计阶段为程序调试所做的准备。上机前要先熟悉程序运行的环境上机前要先熟悉程序运行的环境一个 C 语言源程序总是在一定的硬件和软件环境支持下进行编辑、编译、连接和运行的,而这其中的每一步都直接影响程序调试的效率。所以初学者必须了解所使用的计算机系统的基本操作方法,学会使用该系统,了解在该系统上如何编辑、编译、连接和运行一个 C 语言程序。上机时需要输入和修改程序,不同的操作系统提供的编辑程序是不同的。如果对编辑程序的基本功
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 玉溪师范学院《环境生态监测》2021-2022学年第一学期期末试卷
- 玉溪师范学院《二维设计基础》2022-2023学年第一学期期末试卷
- 玉溪师范学院《测量基础实验》2022-2023学年第一学期期末试卷
- 2024专利实施许可合同样式
- 2024复印机出租合同范文
- 2024农村土地流转合同【农村土地承包经营权流转合同】
- 2024不签劳动合同受到《劳动法》保护管理资料
- 2024广告牌承揽合同范本
- 盐城师范学院《算法设计与分析》2021-2022学年期末试卷
- 2024房屋装修合同银行贷款
- 《职业发展与就业指导》全书教案全套教学单元设计
- DB32-T 3916-2020建筑地基基础检测规程-(高清现行)
- NFA112005低、中、高倍数泡沫标准中译文
- 英语四级高频词汇大全带例句
- 单产品动态盈亏平衡表
- 第5课第二次工业革命(共32张)课件
- 盘古开天地“智慧课堂”展示课教学设计
- MRI设备详细介绍讲课稿
- SPSS主成分分析和因子分析课件(PPT 69页)
- 高温合金行业报告:变形高温合金、铸造高温合金、粉末高温合金
- 地铁屏蔽门设计_论文
评论
0/150
提交评论