C语言上机实验指导.docx
- 文档编号:27535972
- 上传时间:2023-07-02
- 格式:DOCX
- 页数:21
- 大小:25.03KB
C语言上机实验指导.docx
《C语言上机实验指导.docx》由会员分享,可在线阅读,更多相关《C语言上机实验指导.docx(21页珍藏版)》请在冰豆网上搜索。
C语言上机实验指导
实验要求:
上机实验一般经历上机前的准备(编程)、上机调试运行和实验后的总结三个步骤。
1.上机前的准备
根据问题,进行分析,选择适当算法并编写程序。
上机前一定要仔细检查程序(称为静态检查)直到找不到错误(包括语法和逻辑错误)。
分析可能遇到的问题及解决的对策。
准备几组测试程序的数据和预期的正确结果,以便发现程序中可能存在的错误。
上机前没有充分的准备,到上机时临时拼凑一个错误百出的程序,宝贵的上机时间白白浪费了;如果抄写或复制一个别人编写的程序,到头来自己一无所获。
2.上机输入和编辑程序,并调试运行程序
首先调用C语言集成开发环境,输入并编辑事先准备好的源程序;然后调用编译程序对源程序进行编译,查找语法错误,若存在语法错误,重新进入编辑环境,改正后再进行编译,直到通过编译,得到目标程序(扩展名为OBJ)。
下一步是调用连接程序,产生可执行程序(扩展名为EXE)。
使用预先准备的测试数据运行程序,观察是否得到预期的正确结果。
若有问题,则仔细调试,排除各种错误,直到得到正确结果。
在调试过程中,要充分利用C语言集成开发环境提供的调试手段和工具,例如单步跟踪、设置断点、监视变量值的变化等。
整个过程应自己独立完成。
不要一点小问题就找老师,学会独立思考,勤于分析,通过自己实践得到的经验用起来更加得心应手。
3.整理上机实验结果,写出实验报告
实验结束后,要整理实验结果并认真分析和总结,根据教师要求写出实验报告。
实验报告一般包括如下内容:
⑴实验内容
实验题目与要求。
⑵算法说明
用文字或流程图说明。
⑶程序清单
⑷运行结果
原始数据、相应的运行结果和必要的说明。
⑸分析与思考
调试过程及调试中遇到的问题及解决办法;调试程序的心得与体会;其他算法的存在与实践等。
若最终未完成调试,要认真找出错误并分析原因等。
实验一C语言运行环境
一、实验目的
1.了解TC环境的组成。
2.学习TC环境的使用方法。
3.了解C语言程序从编辑、编译、连接到运行并得到运行结果的过程。
二、实验内容
1.了解TC环境的组成。
开机后进入WINDOWS系统的"资源管理器",找到TC环境所在的文件夹。
查看在TC目录下的以字母TC开头的文件,是否包括了TC.EXE、TCC.EXE、TLINK.EXE、TCCONFIG.TC等文件;查看INCLUDE、LIB两个子目录下的文件。
复习这些文件夹的作用。
2.进入、退出和定制TC环境。
运行TC目录下的TC.EXE文件,就可进入TC环境。
在WINDOWS环境下运行文件的方法是用鼠标双击要运行的文件名,或在桌面上双击快捷图标;在DOS环境下进入到TC子目录,用命令方式运行TC.EXE程序。
进入TC环境后屏幕上显示出TC环境的主画面。
退出TC环境,可在"FILE"菜单下选择"QIUT"菜单项,或用热键
3.运行演示程序
在TC目录下有一个名为"BGIDEMO.C"的源程序,这本是为TC图形函数提供的演示程序,运行这个演示程序。
在"File"菜单下选"Load"项,在屏幕出现的"LoadFileName"窗 口里输入"BGIDEMO.C",该程序被装入编辑窗口,按
注意运行此程序需要图形库文件,一般被装在TC目录下,没有这个图形库文件就不 能运行图形演示程序。
4.编写自己的第一个程序
按键盘
main()
{printf("ThisisaCProgram\n")
printf("Iamastudent\n");
}
按
屏幕出现错误提示:
statementmissing;infunctionmain
通过提示,可以知道上面程序第二行的最后漏敲一个分号,改正后程序运行。
按
按
test1)。
通过资源管理器观察当前目录下名为test1的几个文件,它们的扩展名分别是什么。
改变"Options"菜单下"Directories"项下的输出文件目录,用
在新设定的输出目录下观察名为test1的文件的存储情况。
用"File"菜单下的"Writeto"项,把文件存在新设定的输出目录处,文件名仍为test1。
录入如下程序:
main()
{printf("ThisisanotherCProgram\n");
}
按
按
这是因为TC编 译系统在接收"RUN"命令后,对test1.c、test1.obj、test1.exe三个文件的建立时间进行比较,如果扩展名为.c的文件建立时间晚于.exe文件,它就认为源文件进行了修改,所 以对源文件重新进行编译连接,如果.exe文件的时间晚于源文件的建立时间,就直接运行这个文件,不再重新编译连接。
因为我们两次输入的程序名称都是test1,新设定目录 中存放的是第一个程序的test1.c和第二个程序的test1.exe,就出现了现在的情况。
5.分别编译、连接、运行程序
"Run"命令是将编译、连接、运行一次完成,实际完成了三件工作,下面分别进行编译、连接和运行。
用
由于编译、连接、运行是分别进行的,所以编译系统不再对相关三个文件的建立时间进行比较,我们看到的就是编辑器里当前的程序输出结果。
6.编写程序,实现求整数10、20和35的平均值。
三、实验要求
1.学习TC的基本操作,编写程序。
2.运行程序并记录运行结果。
3.将源程序、目标文件、可执行文件和实验报告存在软盘上。
实验二数据类型及顺序结构
一、实验目的
1.进一步熟悉TC环境的使用方法。
2.学习C语言赋值语句和基本输入输出函数的使用。
3.编写顺序结构程序并运行。
4.了解数据类型在程序设计语言中的意义。
二、实验内容
1.编程序,输出如下图形:
**
****
******
********
2.编写程序,实现下面的输出格式和结果(表示空格):
a=5,b=7,a-b=-2,a/b=71%
c1=COMPUTER,c2=COMP,c3=COMP
x=31.19,y=-31.2,z=31.1900
s=3.11900e+002,t=-3.12e+001
3.编写程序,输入变量x值,输出变量y的值,并分析输出结果。
⑴y=2.4*x-1/2
⑵y=x%2/5-x
⑶y=x>10&&x<100
⑷y=x>=10||x<=1
⑸y=(x-=x*10,x/=10)
要求变量x、y是float型。
4.调试下列程序,使之能正确输出3个整数之和及3个整数之积。
main()
{inta,b,c;
printf("Pleaseenter3numbers:
");
scanf("%d,%d,%d",&a,&b,&c);
ab=a+b;
ac=a*c;
printf("a+b+c=%d\n",a+b+c);
printf("a*b*c=%d\n",a+c*b);
}
输入:
40,50,60↙
5.运行下述程序,分析输出结果。
main()
{inta=10;
longintb=10;
floatx=10.0;
doubley=10.0;
printf("a=%d,b=%ld,x=%f,y=%lf\n",a,b,x,y);
printf("a=%ld,b=%d,x=%lf,y=%f\n",a,b,x,y);
printf("x=%f,x=%e,x=%g\n",x,x,x);
}
从此题的输出结果认识各种数据类型在内存的存储方式。
三、实验要求
1.复习赋值语句和输入输出函数各种格式符的使用。
2.复习数据类型和运算符的有关概念。
3.编写程序,运行程序并记录运行结果。
4.将源程序、目标文件、可执行文件和实验报告存在软盘上。
实验三选择结构程序设计
一、实验目的
1.正确使用关系表达式和逻辑表达式表达条件。
2.学习分支语句if和switch的使用方法。
3.进一步熟悉TC集成环境的使用方法,学习TC环境提供的调试工具。
二、实验内容
1.编写程序,使之具有如下功能:
输入a、b、c三个整数,求最小值。
写出调试过程。
2.编写程序,求解下列分段函数:
x(-5 y=x-1(x=0) x+1(0 100其它 3.某托儿所收2岁到6岁的孩子,2岁、3岁孩子进小班(Lowerclass);4岁孩子进中班(Middleclass);5岁、6岁孩子进大班(Higherclass)。 编写程序(用switch语句),输入孩子年龄,输出年龄及进入的班号。 如: 输入: 3,输出: age: 3,enterLowerclass。 三、实验要求 1.复习关系表达式、逻辑表达式和if语句、switch语句。 2.学习程序的调试方法。 3.编写程序,运行程序并记录运行结果 4.将源程序、目标文件、可执行文件和实验报告存在软盘上。 四、选做题 1.自守数是其平方后尾数等于该数自身的自然数。 例如: 25*25=625 76*76=5776 任意输入一个自然数,判断是否自守数并输出: 如: 25yes25*25=625 11no11*11=121 2.输入月号,输出月份的英文名称。 实验四循环结构程序设计 一、实验目的 1.学习循环语句for、while和do-while语句的使用方法。 2.学习用循环语句实现各种算法,例如穷举法、迭代法等。 3.进一步熟悉TC集成环境的使用方法 二、实验内容 1.下列程序计算SUM的值。 调试该程序,使之能正确地计算SUM。 写出调试过程。 计算公式如下: 1111 SUM=1+-+-+-+……+- 234n main() {intt,s,i,n; scanf("%d",&n); for(i=1;i<=n;i++) t=1/i; s=s+t; printf("s=%f\n",s); } 在调试过程中,用单步执行的方法观察变量s和t的值的变化,找到程序中存在的问题,加以改正。 2.下面程序的功能是计算n! 。 main() {inti,n,s=1; printf("Pleaseentern: "); scanf("%d",&n); for(i=1;i<=n;i++) s=s*i; printf("%d! =%d",n,s); } 首次运行先输入n=4,输出结果为4! =24,这时正确的。 为了检验程序的正确性,再输入n=10,输出为10! =24320,这显然是错误的。 为了找到程序的错误,可以通过单步执行来观察变量的变化。 分析产生这种现象的原因,把程序改正过来,再用n=20进行实验,分析所得到的结果。 2.北京市体育彩票采用整数1、2、3、……、36表示36种体育运动,一张彩票可选择7种运动。 编写程序,选择一张彩票的号码,使得这张彩票的7个号码之和是105且相邻两个号码之差按顺序依次是1、2、3、4、5、6。 如果第一个号码是1,则后续号码应是2、4、7、11、16、22。 3.编写程序实现输入整数n,输出如下所示由数字组成的菱形。 (图中n=5) 1 121 12321 1234321 123454321 1234321 12321 121 1 三、实验要求 1.复习for、while、do-while语句和continue、break语句。 2.在程序调试中,要实现准备充分的测试用例。 3.编写程序,运行程序并记录运行结果。 注意程序的书写格式。 4.将源程序、目标文件、可执行文件和实验报告存在软盘上。 四、选做题 已知2001年1月1日是星期一,编写程序,在屏幕上输出2000年的年历。 关于闰年的计算方法: 如果某年的年号能被400除尽,或能被4除尽但不能被100除尽,则这一年就是闰年。 实验五函数 一、实验目的 1.学习C语言中函数的定义和调用方法。 2.掌握通过参数在函数间传递数据的方法。 3.熟悉TC集成环境对包含函数调用的程序的调试方法。 二、实验内容 1.调试下列程序,使之具有如下功能: fun函数是一个判断整数是否为素数的函数,使用该函数求1000以内的素数平均值。 写出调试过程。 #include"math.h" main() {inta=0,k;/*a保存素数之和*/ floatav;/*av保存1000以内素数的平均值*/ for(k=2;k<=1000;k++) if(fun(k))/*判断k是否为素数*/ a+=k; av=a/1000; printf("av=%f\n",av); } fun(intn)/*判断输入的整数是否为素数*/ {inti,y=0; for(i=2;i if(n%i==0)y=1; elsey=0; returny; } 2.编写一个求水仙花数的函数,求3位正整数的全部水仙花数中的次大值。 所谓水仙花数是指三位整数的各位上的数字的立方和等于该整数本身。 例如: 153就是一个水仙花数: 153=13+53+33 3.编写一个函数,对输入的整数k输出它的全部素数因子。 例如: 当k=126时,素数因子为: 2,3,3,7。 要求按如下格式输出: 126=2*3*3*7。 三、实验要求 1.复习函数的定义和调用方法。 2.学习使用设置断点的方法调试程序。 3.编写程序,运行程序并记录运行结果。 4.将源程序、目标文件、可执行文件和实验报告存在软盘上。 四、选做题 1.任意输入一个4位自然数,调用函数输出该自然数的各位数字组成的最大数。 2.某人购买的体育彩票猜中了4个号码,这4个号码按照从大到小的顺序组成一个数字可被11整除,将其颠倒过来也可被11整除,编写函数求符合这样条件的4个号码。 关于体育彩票号码的规则见实验四;可被11整除颠倒过来也可被11整除的正整数例如341,它可被11整除,颠倒过来143也可被11整除。 实验六编译预处理 一.实验目的 1.掌握宏定义的规则,领会带参数宏定义和函数调用的区别。 2.了解文件包含命令的功能和使用规则。 3.了解条件编译的特点和功能。 二.实验内容: 1.调试运行例6.1、例6.2、例6.3、例6.4。 2.利用条件编译实现: 如果输入两个实数,则交换后输出;如果输入的是三个实数,则只输出其中最大的数。 实验七数组 一、实验目的 1.掌握数组的定义、赋值和输入输出的方法。 2.学习用数组实现相关的算法(如排序、求最大和最小值、对有序数组的插入等)。 3.熟悉TC集成环境的调试数组的方法。 4.掌握C语言中字符数组和字符串处理函数的使用。 5.掌握在字符串中删除和插入字符的方法。 6.熟悉TC集成环境的调试字符串程序的方法 二、实验内容 1.调试下列程序,使之具有如下功能: 输入10个整数,按每行3个数输出这些整数,最后输出10个整数的平均值。 写出调试过程。 main() {inti,n,a[10],av; for(i=0;i scanf("%d",a[i]); for(i=0;i {printf("%d",a[i]); if(i%3==0) printf("\n"); } for(i=0;i! =n;i++) av+=a[i]; printf("av=%f\n",av); } 上面给出的程序是完全可以运行的,但是运行结果是完全错误的。 调试时请注意变量的初值问题、输出格式问题等。 请使用前面实验所掌握的调试工具,判断程序中的错误并改正。 在程序运行过程中,可以使用 2.编写程序,任意输入10个整数的数列,先将整数按照从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。 3.输入4×4的数组,编写程序实现: ⑴求出对角线上各元素的和; ⑵求出对角线上行、列下标均为偶数的各元素的积; ⑶找出对角线上其值最大的元素和它在数组中的位置。 4.编写程序,输入若干个字符串,求出每个字符串的长度,并打印最长一个字符串的内容。 以"stop"作为输入的最后一个字符串。 三、实验要求 1.复习数组的定义、引用和相关算法的程序设计。 复习字符串处理函数和字符数组的使用、库函数的调用方法。 2.编写程序,运行程序并记录运行结果。 3.将源程序、目标文件、可执行文件和实验报告存在软盘上。 四、选做题 1.设某班50人,写一程序统计某一单科成绩各分数段的分布人数,每人的成绩随机输入,并要求按下面格式输出统计结果;("××"表示实际分布人数) 0--39×× 40--49×× 50--59×× ………… 90--100×× 2.有一个n行m列的由整数组成的矩阵,请对矩阵中的元素重新进行排列,使得同行元素中右边的元素大于左边的元素,同列元素中下边的元素大于上边的元素。 实验八结构体和共用体 一.实验目的 1.掌握结构体类型变量的定义和使用。 2.掌握共用体的概念与使用。 3.掌握用户自定义类型的特点和应用。 二.实验内容 1.有5个学生,每个学生的数据包括学号、姓名、三门课的成绩,从键盘输入5个学生数据,要求打印出三门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、三门课的成绩、平均分数)。 要求用一个input函数输入5个学生数据;用一个average函数求总平均分;用max函数找出最高分学生数据;总平均分和最高分的学生的数据都在主函数中输出。 2.13个人围成一圈,从第1个人开始顺序报号1、2、3。 凡报到“3”者退出圈子,找出最后留在圈子中的人原来的序号。 编写程序,根据用户输入的数字(1~12),输出相应的月份名。 用枚举类型实现。 实验九指针 (1) 一、实验目的 1.掌握指针变量的定义与引用 2.掌握指针与变量、指针与数组的关系 3.掌握用数组指针作为函数参数的方法。 4.熟悉TC集成环境的调试指针程序的方法 二、实验内容 以下均用指针方法编程: 1.调试下列程序,使之具有如下功能: 用指针法输入12个数,然后按每行4个数输出。 写出调试过程。 main() {intj,k,a[12],*p; for(j=0;j<12;j++) scanf("%d",p++); for(j=0;j<12;j++) {printf("%d",*p++); if(j%4==0) printf("\n"); } } 调试此程序时将a设置为一个"watch",数组a所有元素的值在一行显示出来。 调试时注意指针变量指向哪个目标变量。 2.在主函数中任意输入10个数存入一个数组,然后按照从小到大的顺序输出这10个数,要求数组中元素按照输入时的顺序不能改变位置。 3.自己编写一个比较两个字符串s和t大小的函数strcomp(s,t),要求s小于t时返回-1,s等于t时返回0,s大于t时返回1。 在主函数中任意输入4个字符串,利用该函数求最小字符串。 三、实验要求 1.复习指针的定义与使用方法。 2.编写程序,运行程序并记录运行结果。 3.将源程序、目标文件、可执行文件和实验报告存在软盘上。 四、选做题 1.在主函数中任意输入9个数,调用函数求最大值和最小值,在主函数中按每行3个数的形式输出,其中最大值出现在第一行末尾,最小值出现在第3行的开头。 2.请编程读入一个字符串,并检查其是否为回文(即正读和反读都是一样的)。 例如: 读入: MADAMIMADAM.输出: YES 读入: ABCDBA.输出: NO 实验十指针 (2) 一、实验目的 1.掌握C语言中函数指针的使用方法。 2.掌握C语言中指针数组的使用方法。 3.熟悉TC集成环境的调试指针程序的方法 二、实验内容 1.调试下列程序,使之具有如下功能: 任意输入2个数,调用两个函数分别求: ⑴2个数的和, ⑵2个数交换值。 要求用函数指针调用这两个函数,结果在主函数中输出。 main() {inta,b,c,(*p)(); scanf("%d,%d",&a,&b); p=sum; *p(a,b,c); p=swap; *p(a,b); printf("sum=%d\n",c); printf("a=%d,b=%d\n",a,b); } sum(inta,intb,intc) {c=a+b; } swap(inta;intb) {intt; t=a; a=b; b=t; } 调试程序时注意参数传递的是数值还是地址。 2.输入一个3位数,计算该数各位上的数字之和,如果在[1,12]之内,则输出与和数相对应的月份的英文名称,否则输出***。 例如: 输入: 123输出: 1+2+3=6→June 输入: 139输出: 1+3+9=13→*** 用指针数组记录各月份英文单词的首地址。 3.任意输入5个字符串,调用函数按从大到小顺序对字符串进行排序,在主函数中输出排序结果。 三、实验要求 1.复习函数指针和指针数组的使用方法。 2.编写程序,运行程序并记录运行结果。 3.将源程序、目标文件、可执行文件和实验
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 上机 实验 指导