c语言单元二实验报告,C语言实验报告.doc

5ee0ea45b5ada3405c55305d8e1ca595.gifC语言实验报告.doc

C语言实验报告专 业 _____________年 级 _____________学 号 _____________学生姓名 _____________指导老师 _____________华中师范大学信息管理系编I 实验要求1每次实验中有若干习题,每个学生至少应该完成其中的三道习题。2上机之前应作好充分的准备工作,预先编好程序,经过人工检查无误后,才能上机,以提高上机效率,严禁一边上机一边编写。3独立上机输入和调试自己所编的程序,切忌抄袭、拷贝他人程序。4上机结束后,应整理出实验报告。书写实验报告时,重点放在调试过程和小结部分,总结出本次实验中的得与失,以达到巩固课堂学习、提高动手能力之目的。II 实验内容实验一 简单程序设计【实验目的】 1熟悉TC、Borland C和VC6.0的运行环境。2了解在TC、Borland C和VC6.0上如何编辑、编译、连接和运行一个C程序。3熟练使用各种C语言的数据类型、运算符与表达式。4熟练掌握格式输入与格式输出函数的使用。通过运行简单的程序,初步了解源程序的特点,初步掌握查错和排错的技能.【上机实习指导】1. 通过以下程序来掌握上机操作的全过程在VC、BC或TC中练习输入、编译、运行一个C语言程序的全过程以下程序是计算函数y3x22x-4假设x2。 include “stdio.h”void main int x2,y; y3*x*x2*x-4; printf“nyd”,y;2基本数据类型表示范围练习假设有如下程序 include stdio.h void main char ch1, ch2, ch;unsigned char c;int a;ch1 80;ch2 60;ch ch1 ch2;c ch1 ch2;a ch1 ch2;printf “ch1 ch2 dn”, ch1 ch2;printf“ch dn”, ch;printf“c dn”, c;printf“a dn”, a;问题1 运行该程序,写出输出结果。并说明为什么存在输出结果的差异问题2 如果要求四行输出的结果均为140,在不改变变量的数据类型的基础上,则应修改程序中的哪条语句怎样修改问题3 编一程序,要求两个负整数相加,输出的结果为一正整数。【自编程序上机】1 键盘输入与屏幕输出练习用下面的scanf函数输入数据,使a 3, b 7, x 8.5, y 71.82, c1 A, c2 a,问在键盘上如何输入要求把下列程序补充完整。include stdio.hvoid main int a, b;float x, y;char c1, c2;scanf “a d b d”, scanf“x f y e”, scanf“c1 c c2 c”, 提示在“格式控制”字符串中除了格式说明以外还有其它字符,在输入数据时应输入与这些字符相同的字符。为了验证输入格式的正确与否,应在程序中补充调用标准的输出函数printf。2 按输出结果要求编写程序若a 3, b 4, c 5, x 1.2, y 2.4, z -3.6, u 51274, n 128765. c1 a, c2 b,想得到以下输出格式和结果,请写出完整的程序。要求输出结果如下*表示空格a 3***b4***c5x 1.20000, y 2.400000, z -3.600000 xy *3.60**yz -1.20**zx -2.40u 51274***n ***128765c1 a*or*97ASCIIc2 b*or*98ASCII提示根据题目中变量的值定义合适的变量类型。正确定义和使用printf函数中的格式控制字符串。3 计算定期存款本利之和设银行定期存款的年利率rate为2.25,并已知存款期为n年,存款本金为capital元,试编程计算n年后本利之和deposit。要求定期存款的年利率rate、存款期间n和存款本金capital均由键盘输入。4. 设一个正圆台的上底半径r12.5cm,下底半径r23.7cm,高h3.5cm。分别计算并输出该圆台的上底面积s1下底面积s2,侧面积s3,圆台的体积v。 具体要求如下 r1,r2,h用scanf函数输入,且在输入前要有提示; 在输出结果时要有文字说明,每个输出值占一行,且小数点后取4位数字。所有变量均定义为单精度类型。5编程实现用1分、5分、10分、25分的硬币凑成任何给定的钱数x,要求硬币的数目最少。【实验报告】实习时间 实习地点 实习机号具体实验内容程序调试过程实习小结 实验二 选择结构程序设计【实验目的】1熟练掌握上机运行一个C程序的操作过程。2学会正确使用逻辑运算符和逻辑表达式,进一步掌握各种表达式的使用。3利用if语句实现选择结构程序设计。4利用switch语句实现多分支选择结构程序设计。5进一步练习调试与修改程序。【上机实习指导】 输入并运行习题3.10。即 include “stdio.h”void main int i,j,n,m; i8;j10;mi;nj; printf“d,d,d,d”,i,j,m,n;分别作以下改变并运行将程序第四行改为mi;nj;程序改为 include “stdio.h”void main int i,j; i8;j10;printf“d,d”,i,j;在的基础上,将语句改为 printf“d,d”,i,j;再将语句改为 printf“d,d,d,d”,i,j,i,j;程序改为 include “stdio.h”void main int i,j,n,m0; i8;j10;mi;n-- -j; printf“d,d,d,d”,i,j,m,n;2计算下列分段函数值 具体要求如下用if语句实现分支。自变量x与函数值均用单精度类型。自变量x用scanf函数输入,且输入前要有提示。结果的输出采用以下形式 x具体值,fx具体值分别输入x-5.0,-3.0,1.0,2.0,2.5,3.0,5.0,运行该程序。3先静态分析以下程序的运行结果,然后上机验证。 include “stdio.h”void main int a3,b4,c5,x,y,z; xcba; yabc zc/bfloata/b printf“n xd,yd,zd”,x,y,z; xa||b--; ya---3 printf“n d,d,d,d,d,d”,a,b,c,x,y,z; 上机运行的结果与你分析的结果是否一致不一致的原因何在请在程序的最后一个花括号前加上语句getchar;后重新运行程序,注意事项加上这一语句后,程序的运行进程有何不同getchar是一个函数调用,其作用是等待接收你从键盘输入的一个字符,在你未按键之前一直处于等待状态。在这里可以起到暂停的作用。当你看清结果并按任意键后,立即退出程序并切换回TC主屏幕。用这一方法可以减少屏幕切换操作。4下列C程序的功能是计算并输出分段函数值。 其中x由键盘输入。 请通过调试修改程序中的错误包括语法错误和逻辑错误。 include “stdio.h” main float x,y; printf“ x”; scanff, if-5.0x0.0 else ifx5.Oyl.0/x5.0; else ifxl0.Oyl.0/xl2.0; else y0.0;printfxenyen,x,y; 具体要求如下 不允许改变计算的精度。 不允许改变原来程序的结构,只能在语句或表达式内部进行修改。 调试正确后,用x-7.0,-2.0,-1.0,0.0,2.0,5.0,8.0,10.0,11.0运行这个程序。画出与调试正确后的程序对应的流程图。【自编程序上机】1. 数据整除判断编程实现输入一个整数,判断它能否被3,5,7整除,并输出以下信息之一能同时被3,5,7整除;能被其中两数(要指出哪两个)整除;能被其中一个数(要指出哪一个)整除;不能被3,5,7任一个整除。提示判断能否被某一个数整除应采用求余运算。在一个程序中利用选择结构把四种可能的信息全部表示出来。2用scanf函数输入一个百分制成绩整型量,要求输出成绩等级A,B,C,D,E。其中90-100分为A,80-89分为B,70-79分为C,60-69分为D,60分以下为E。 具体要求如下 用if语句实现分支。 在输入百分制成绩前要有提示。 在输入百分制成绩后,要判断该成绩的合理性,对于不合理的成绩即大于100分或小于0分应输出出错信息。 在输出结果中应包括百分制成绩与成绩等级,并要有文字说明。 分别输入百分制成绩-90,100,90,85,70,60,45,101,运行该程序。3将第2题中的1改为“用switch语句实现”,其余不变,重复实现第2题中的各功能。4.编程找出5个整数中的最大数和最小数,并输出找到的最大数和最小数。。【实验报告】实习时间 实习地点 实习机号具体实验内容程序调试过程实习小结实验三 循环结构程序设计【实验目的】1进一步练习选择结构的程序设计。练习并掌握实现循环结构的三种方法。3练习并掌握选择结构与循环结构的嵌套。4掌握多重循环的应用。5学会单步跟踪的操作方法。【上机实习指导】1输入例6.2.上机运行程序,分析运行结果。用单步跟踪观察while语句的执行过程连续按三次F8键,再用两次Ctrl-F7操作分别将i和sum的值显示出来,然后不按断F8键,每次按F8后,观察绿条的变化和变量值的变化情况,以此来分析并弄清while语句的执行过程。修改程序,实现s11/21/31/10。【自编程序上机】 1如果一个数恰好等于它的所有因子包括1但不包括自身之和,例如6的因子为1,2,3,且1236,因此6是一个“完数”。 计算并输出1000以内的所有“完数”之和。 具体要求如下 所有循环均用for循环。 输出要有文字说明,并同时输出各“完数”。输出形式为完数1完数2和值2彩票选号某市体育彩票采用整数1、2、3、、36表示36种体育运动,一张彩票可选择7种运动。编写程序,选择一张彩票的号码,使这张彩票的7个号码之和是105且相邻两个号码之差按顺序依次是1、2、3、4、5、6。例如第一个号码是1,则后续号码应是2、4、7、11、16、22。提示若已知7个号码中的第一个号码是k0 ,则后续号码之间的关系是ki-ki-1 i,其中i 1,2,3,4,5,6。k0k1k2k3k4k5k6之和必须是105。ki36,其中i0,1,2,3,4,5,6。3百钱买百鸡问题。已知公鸡每只5元,母鸡每只3元,小鸡1元3只,要求100元钱正好买100只鸡,则应买公鸡、母鸡的小鸡各多少只4某班有学生n人,从终端读入n及n个人学生的成绩,试编程实现以下功能打印出前3个最好成绩及取得每个最好成绩的人数;若90分以上计为优,7589分计为“良”,6074分计为“中”,60分以下计为“不及格”,试统计各档成绩所占百分率。【实验报告】实习时间 实习地点 实习机号具体实验内容程序调试过程实习小结实验四 数组程序设计(1)【实验目的】1掌握一维数组与二维数组的定义及其元素的引用方法。2深刻体会数组与循环的关系。3掌握利用一维数组和二维数组实现一些常用算法的编程技巧。4进一步掌握动态调试的基本技能。【上机实习指导】1用移位法将数组a中的最后一个数移到最前面,其余数依次往后移动一个位置。 include “stdio.h” void main int i,t,a100,1,2,3,4,5,6,7,8,9; ta9; fori1;i10;i aiai-1; a0t; printf“n”; fori0;i10;i printf“d ” ,ai;请按以下步骤实习和思考分析程序及其特性。上机运行程序,查看运行结果是否正确用动态跟踪查找错误原因,即按如下操作首先将光标移至ta9的语句行上,按F4,再用Ctrl-F7操作将a数组的内容显示出来,然后将光标移至aiai-1的语句行上,不断按F4,观察a数组值的变化情况,以此分析并找出错误原因。改正错误后重新运行程序,直到结果正确为此。如果要用三次循环移位来实现将最后三个数移到前面,其余数依次往后移三个位置,则程序应该如何修改 2输入n个学生的单科成绩,然后从高到低的顺序排序后输出。以下是用选择法实现的排序。 include “stdio.h”void main int i,j,t,n,an; printf“n n;scanf“d”,printf n numbers n; for i0;in;iscanfd,fori0;in-1;i forji1;jn;j ifaiaj tai;aiaj;ajt; printfthe sorted numbersn; fori0;in;i printf4d,ai;分析程序及其特性。上机编译程序,程序是否有语法错误应如何修改(数组a的长度可比n大些),改正错误后重新编译和运行程序,直到结果正确为此。你对选择排序算法的实现过程是否清楚了若不清楚,请用动态跟踪的方法观察其实现过程,操作如下首先将光标移至 if语句行上,按F4,接着输入数据,当绿条第停留在if语句行时,用Ctrl-F7操作将a数组的内容显示出来,不断按F4,观察a数组值的变化情况,以此分析和领会算法的实现过程。输入冒泡排序程序,用动态跟踪观察其实现过程。如果要用三次循环移位来实现将最后三个数移到前面,其余数依次往后移三个位置,则程序应该如何修改【自编程序上机】1将矩阵45中值(行中所有数的和)为最大的那一行元素与首行元素对换。具体要求如下矩阵的数值从键盘输入。以矩阵的形式输出对换后的矩阵。2P141 7.6。3数字检查通过键盘输入n(n50)个4位数(输入-1时结束),统计这n个4位数中各位上的数字均是偶数的数的个数,并把这些4位数按从大到小的顺序进行输出。提示定义两个一维数组a和b,数组a用于存放输入4位数,数组b用于存放满足条件的4位数;判断4位数沙锅内的各个数是否为偶数的方法可将该数的每一位数拆分出来,然后进行判断即可。【实验报告】实习时间 实习地点 实习机号具体实验内容程序调试过程实习小结实验五 数组程序设计(2)【实验目的】1进一步掌握一维数组与二维数组的定义及其元素的引用方法。2掌握利用一维数组和二维数组实现一些常用算法的编程技巧。【自编程序上机】1成绩排名假设有五位同学四门功课的成绩如下,现要求得每位同学的总分,并按照总分从高到低的顺序进行排序,输出其名次,如果总分相同,则按语文和数学分数之和高者排前,低者排后,但名次一样。姓 名语 文数 学英 语综 合张大明120130110280李小红110120105290王志强108128126278汪晓成112135122286李 丹100120108276提示用二维数组score存放每个学生各门课程的成绩,二维数组定义时最后多定义一列,用于存放每个学生的总分;用一个字符串数组name存放学生的姓名。217个人围坐一圈,顺序编号为1,2,3,,17。现在从第一个人开始数起,每数到7时,这个人就从圈里出来,再从下一个数重新开始数1,2,,7,数到第7的这个人也从圈里出来,直到全部17个人从圈里出来为此。例如,前面站出来的4个人是7,14,4和12。编程输出从圈里出来的人的顺序。【实验报告】实习时间 实习地点 实习机号具体实验内容程序调试过程实习小结实验六 模块化程序设计1【实验目的】1掌握C语言中定义函数的方法及其调用方法。2掌握函数实参与形参的对应关系以及“值传递”与“地址传递”的方式,熟练掌握模块间数据传递的方式。3掌握全局变量和局部变量、动态变量与静态变量的概念和使用方法,深刻体会全局变量和局部变量、动态变量与静态变量的概念和使用方法,【上机实习指导】1先静态阅读以下程序,然后上机运行程序,查看运行结果是否与你阅读的结果一致不一致的原因何在 include “stdio.h”int a3,b5,c2;int fint a,int b a;b--;cab;returnabc;void main int a4,k; kfa2,b1; printf“n d,d,d,d”,a,b,c,k; getchar;2静态分析以下程序的执行结果,然后上机运行程序,将分析结果与运行结果加以对比,从中领会静态局部变量的含义及用法。 include “stdio.h”int fint x static int f0,y0; iff0 y2*x; else iff1y3*x; else y4*x; f; return y;void main printf“n d”,f2; printf“n d”,f2;printf“n d”,f2;getchar; 【自编程序上机】1求两整数的最公约数和最小公倍数。用一函数求最大公约数,用另一函数调用此函数求出最大公约数,并用求出的最大公约数求最小公倍数。具体要求如下用全局变量。将最大公约数与最小公倍数设为全局变量,在主函数中输出它们的值。不用全局变量。最大公约数和最小公倍数由被调模块返回值。2计算并输出 具体要求如下编制一个函数pqn,返回n值。编制主函数,由键盘输入m与nmnO,调用1中的函数计算下列算式值。 在主函数中,输入m与n之前要有提示,并检查输入数据的合理性,对于不合理的输入,应输出出错信息,不再进行计算。在函数pqn中也要检查n的合理性,当nO时输出出错信息,不再进行计算。 分别输入m,n3,-1,0,0,8,3,3,8,8,8运行该程序。画出模块pq的流程图。3编写程序,要求找出满足下列条件的3位数它是完全平方数,又有两位数字相同。如144、676。要求设计一函数判断一个三位数是否为完全平方数,设计另一函数判断一个三位数中是否有两位数字相同,再在主函数中调用这两个函数,找出所有的满足这两个条件的三位数。【实验报告】实习时间 实习地点 实习机号具体实验内容程序调试过程实习小结实验七 模块化程序设计2【实验目的】1进一步熟悉函数之间的数据传递方式,熟练掌握函数的嵌套调用与递归调用的方法。2掌握通过数组进行数据传递的方法。【上机实习指导】1.对以下程序进行单步运行,并从中了解数组作为函数的参数是如何进行数据传递 include stdio.hvoid changeint a,int n int i,j,t; fori0,jn-1;ij;i,j-- tai; aiaj; ajt; void main int i,b10; fori0;i10;i scanfd, printfThe array b is; fori0;i10;i printf3d,bi; printfn; changeb,10; printfThe array b is; fori0;i10;i printf3d,bi; printfn; getchar; getchar; 【自编程序上机】1编写函数,将n个整数的数列进行重新排放,重新排放后的结果为前段都是奇数,后段都是偶数,并编写主函数完成输入10个整数;调用此函数进行重排;输出重排后的结果。2输入10个学生4门课的成绩,分别用函数求每个学生的平均成绩;每门课的及格率;最高分所对应的学生和课程。【实验报告】实习时间 实习地点 实习机号具体实验内容程序调试过程实习小结实验八 指针程序设计【实验目的】 掌握变量的指针及其基本用法。 掌握一维数组的指针及其基本用法。掌握指针变量作为函数的参数时,参数的传递过程及其用法。【上机实习指导】1对以下程序进行单步运行,并从中了解变量的指针和指针变量的概念。 include “stdio.h” void main int a5,b5,*p; p*p8;pb10; 按以下步骤操作 输入程序后,连续按三次F8,使绿条停留在P pa; fori0;i5;i,p s*p;printf“n sd”,s;3.先分析以下程序的运行结果,然后上机验证,并通过此例掌握通过指针变量引用数组元素的各种方法。 include “stdio.h”void main int i,s10, s20, s30, s40,*p,a51,2,3,4,5; pa; fori0;i5;i s1pi; fori0;i5;i s2*pi; forpa;pa5;p s3*p; pa; fori0;i5;i s4*p; printf“n s1d, s2d, s3d, s4d”s1,s2,s3,s4; 【自编程序上机】1.编写函数实现计算一元二次方程的两个实根,然后编写主函数调用此函数。要求在同一个函数内求出方程的两个实根,此函数不准使用全局变量进行数据传递,也不能使用return语句,只能通过指针进行数据传递。2编写函数,将n个数按原来的顺序的逆序排列(要求用指针实现),然后编写主函数完成输入10个数;调用此函数进行重排;输出重排后的结果。【实验报告】实习时间 实习地点 实习机号具体实验内容程序调试过程实习小结实验九 结构体程序设计【实验目的】 掌握结构体类型变量与结构体数组的定义和使用。 学会使用结构体指针变量和结构体指针数组。掌握链表的概念,初步学会对链表进行操作。【上机实习指导】1输入出10个学生的学号、姓名和成绩,求出其中的高分者和低分者。 include “stdio.h”struct student int num; char name20; int score; ;void main int i; struct student st,stmax,stmin; stmax.score0; stmin.score100; printf“n data”; fori0;i10;i scanf“dsd”, ifst.scorestmax.score stmaxst; ifst.scorestmin.score stminst; printf“n hight5d15s5d”,stmax.num,stmax.name,stmax.score;printf“n low5d15s5d”,stmin.num,stmin.name,stmin.score;分析程序,上机运行程序。程序中,哪些是对结构体变量的成员引用,哪些是整体引用对于此例来说,用结构体变量作为数据结构有何优越性【自编程序上机】1有一学生情况如下表所示。编制一个C程序,用冒泡法对该学生情况表按成绩(grade)从低到高进行排序。具体要求如下结构体类型为struct 结构体名 int num; char name8; char sex; int age;int grade; 在程序中,首先输出排序前的学生情况,然后输出排序后的结果,其格式如上表所示表的框线不要。2链表基本操作。 具体要求如下 初始时链表为空,即链表的头指针为空。对于上表所示的学生情况表,依次将每个学生的情况作为一个结点插入到单链表的链头即当前插入的结点将成为链表的第一个结点。所有学生情况都插入到链表中后,从链头开始,依次输出链表中的各结点值即每个学生的情况。输出格式如同上表。【实验报告】实习时间 实习地点 实习机号具体实验内容程序调试过程实习小结实验十 文件程序设计【实验目的】1掌握文件与文件指针的概念。2学会使用文件打开、文件关闭、读与写文件等基本的文件操作函数。运用文件操作函数进行程序设计。【上机实习指导】1以文本方式建立初始数据文件,请在TC的编辑窗中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值