ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:103.24KB ,
资源ID:29667617      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/29667617.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(南华大学C语言实验报告.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

南华大学C语言实验报告.docx

1、南华大学C语言实验报告南华大学计算机科学与技术学院实 验 报 告 ( 2015 2016 学年度 第 1 学期 )课程名称高级程序设计I实验名称C语言实验报告姓名刘让洲学号20140440734专业计算机类班级14级计类07班地点教师罗江琴实验一:计算定期存款本利之和1. 实验题目及要求设银行定期存款的年利率rate为2.25%,并已知存款期为n年,存款本金为capital元,试编程计算n年后的本利之和deposit。要求定期存款的年利率rate、存款期n和存款本金capital均由键盘输入。2.实验内容 1) 流程图:1.正确从键盘读入数据。2.把读入的数据带入公式计算即可。2)源程序#in

2、clude #include #include void main () int n; float deposit,rate,capital; printf (请输入存款金额capital:); scanf (%f,&capital); fflush(stdin); printf (请输入存款年限n:); scanf ( %d,&n); fflush(stdin); printf (请输入年存款利率rate:); scanf ( %f,&rate); deposit = capital*pow(rate+1),n) ; printf (%d年以后您的余额为:%.2f,n,deposit);4.

3、实验运行结果及分析5. 实验总结:注意格式控制符的匹配,定义的是float型,scanf中一定要是%f,我就因为这个错误,错了好几次;还有,scanf是取地址,&这个符号一定要注意加上,不然也会出错,我也好几次忘记这个&符号,找错找了好久。实验二-1:身高预测1. 实验题目及要求编程从键盘输入你的性别(用字符型变量sex存储,输入字符F表示女性,输入字符M表示男性)、父母身高(用实型变量存储,faHeight为其父身高,moHeight为其母身高)、是否喜爱体育锻炼(用字符型变量sports存储,输入字符Y表示喜爱,输入字符N表示不喜爱)、是否有良好的饮食习惯等条件(用字符型变量diet存储,

4、输入字符Y表示喜爱,输入字符N表示不喜爱),利用给定公式和身高预测方法对你的身高进行预测。2.实验内容 1) 流程图 1.首先根据提示,要求输入父母的身高。 2.选择性别:根据读入的是M还是F进行选择。 2.1如果是M,则身高Height=(faHeight+moHeight)*0.54 2.2如果是F,则身高Height=(faHeight*0.923+moHeight)/2 3.提示是否喜欢体育锻炼 3.1如果喜爱体育锻炼,则身高Height增加2%; 4.提示是否有良好的卫生习惯 4.1如果有,则身高Height增加1.5%; 5.输出预测身高2)源程序#include #include

5、 void main () char sex,sports,diet; float faHeight,moHeight,Hight; printf(请输入你的性别M or F:(M/男 F/女)n); scanf(%c,&sex); fflush(stdin); printf(请输入你父亲的身高(cm):n); scanf(%f,&faHeight); fflush(stdin); printf(请输入你母亲的身高(cm):n); scanf(%f,&moHeight); fflush(stdin); switch(sex) case M: Hight=(faHeight+moHeight)*

6、0.54; break; case F: Hight=(faHeight*0.923+moHeight)/2; break; printf(你喜欢体育锻炼吗?(Y/N):n); scanf(%c,&sports); if(sports=Y) Hight*=(1+0.02); fflush(stdin); printf(你有良好的卫生饮食习惯吗?(Y/N):n); scanf(%c,&diet); if(diet=Y) Hight*=(1+0.015); printf(你的身高预测为:%.0fcm,Hight);4.实验运行结果及分析:5. 实验总结 本实验主要根据用户的输入进行判断,利用swi

7、tch或者if语句进行相应的选择。需要注意的是,身高定义为float型,因为要进行浮点运算。但最后结果不输出小数。同时,每次输入数据之前,记得请输缓冲区,避免出现错误;实验二-2:简单计算器1. 实验题目及要求编程设计一个简单的计算器程序,要求根据用户从键盘输入如下形式的表达式: 操作数1 运算符op 操作数2 然后,计算并输出表达式的值 指定的运算符为 加(+) 减(-) 乘(*) 除(/)2.实验内容 1) 流程图 1.提示输入;2.根据输入的运算符,利用switch语句对输入的运算符进行判断,然后进行相应的计算。 2.1进行除法时,除数不能为0;当输入的除数为0时,提示除数不能为0;3.

8、输出打印结果,4.利用do-while循环,多次计算。直到用户输入N时结束。2)源程序#include #include void main() int data,data1,data2,length; char op,reply; do printf(请输入需要计算的式子(如:1+2):n); scanf(%d%c%d,&data1,&op,&data2); switch(op) case +: data=data1+data2; break; case -: data=data1-data2; break; case *: data=data1*data2; break; case /:

9、if(0=data2) printf(除数不能为0.); else data=data1/data2; break; if(data2=0) ; else printf(%d%c%d=%dn,data1,op,data2,data); printf(需要继续计算吗?(Y or N)n); fflush(stdin); scanf(%c,&reply);while(reply=Y); printf(计算结束!);4.实验运行结果及分析:5. 实验总结 本实验综合应用lswitch语句和do-while循环语句进行多次计算操作;需要注意设置do-while循环结束的标志,否则会进入死循环。实验三:

10、猜数游戏1. 实验题目及要求编程先由计算机“想”一个1到100之间的数请人猜,如果人猜对了,并在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平,且结束游戏,否则计算机给出提示,告诉人所猜的数是太大还是太小,最多可以猜10次,如果猜了10次仍未猜中的话,则停止本次猜数,然后继续猜下一个数。每次运行程序可以反复猜多个数,直到操作者想停止时才结束。2.实验内容 1) 流程图 1.首先利用随机函数产生一个1-100之间的随机数,初始化计数器。2.提示用户输入一个数。3.把用户输入的数与产生的随机数进行比较,并提示用户是大了还是小了;4.用户根据提示,再猜一个数。 5.反复执行3和4,直

11、到用户猜对或者超过十次,结束当前循环; 6.提示用户是否需要再来一次;2)源程序#include #include #include #include void main () int magic,guess,counter; char reply; /产生随机数种子 srand (unsigned)time(NULL); /首先由系统产生一个1100之间的数字,并初始化计数器 do magic = rand () % 100 + 1; counter = 0; do printf(please guess a magic number :n); scanf(%d,&guess); count

12、er+; if (guessmagic) printf(Wrong! Too hight !n); else if (guessmagic) printf(Wrong ! Too low !n); else printf (Rihgt!You are so clever !n); while (guess !=magic & counter 10); printf(counter = %dn,counter); fflush(stdin);/清除缓冲区 printf(Do You Want To Continue ?(Y/N or y/n )n); reply=getchar (); prin

13、tf(n); while(reply = Y| reply = y); printf(The Game Is Over !);4.实验运行结果及分析:5. 实验总结 需要设置双重循环,内层循环用于统计猜的次数及是否猜对,外层循环用于是否需要再来一次;需要注意刘勇fflush(stdin)清除缓冲区,否则可能会因读入空格而结束程序;实验四:小学生加法考试题1. 实验题目及要求连续做10道题,通过计算机随机产生两个110之间的加数给学生出一道加法运算题,如果输入答案正确,则显示“Right!”,否则显示“Not correct!”,不给机会重做,10道题做完后,按每题10分统计总得分,然后打印出总

14、分和做错的题目数量。2.实验内容 1) 流程图 1.首先通过随机函数产生两个1-10之间的整数。 2.循环调用函数,提示输出产生的两个相加,并要求输入两个数相加的结果。 3.对输入的结果进行判断。 3.1如果输入的答案正确,提示答对了,同时,score加10; 3.2如果输入的答案错误,提示答错了,并显示正确答案,错误计数器加1,score不累加。 4.直到调用函数10次,退出循环,并输出分数及错误计数器的值。 5.提示用户是否需要再来一次。 5.1如果输入Y,则再次进入循环,执行上面2-4步骤。 5.2如果输入N,则结束所有循环。2)源程序#include static int score=

15、0;static int count=0;void main () int i=1; char reply;do int score=0; int count=0; do int a,b; srand(time(NULL); a=rand()%10+1; b=rand()%10+1; AddTest(a,b); i+; while(i=10); printf(n); printf(你的得分为:%d分!,score); printf(你错了%d道题目!n,count); printf(Do you want to try again ! (Y or N):n); fflush(stdin); s

16、canf(%c,&reply); while(reply=Y); printf(n); printf(已经退出!);void AddTest(int a,int b) int answer; printf(计算:%d+%d=n,a,b); scanf(%d,&answer); if (answer=a+b) printf(恭喜你,答对了!n); score+=10; printf(n); else printf(很遗憾,答错了!n); printf(正确答案是:%dn,a+b); printf(n); count+; 4.实验运行结果及分析5. 实验总结通过这个例子,对循环以及选择结构有了更好

17、地认识。这次实验需要注意,怎么对每次的分数以及错误次数累加。我采用的是静态全局变量,并且,当用户需要再来一次是,把count和score再次置0;实验五-1:检验并打印魔方矩阵1. 实验题目及要求在下面的55魔方矩阵中,每一行、每一列、每一对角线上的元素之和都是相等的,试编写程序将这些魔方矩阵中的元素读到一个二维整型数组中,然后,检验其是否为魔方矩阵,并将其按如下格式显示到屏幕上。2.实验内容 1) 流程图 1.定义二维数组,存储输入的数据。 2.累加二维数组的每行每列以及对角线上的元素的和。 3.判断每行每列以及对角线上的元素和是否相等。 4.输出数组以及判断结果。2)源程序#include

18、 #define N 6void main () int aNN; int i,j,sum1=0,sum2=0,flag; /读入矩阵。 for(i=1;iN;i+) ai0=0;/数组第一行元素初始化为0,用来累加每一列的和; for(j=1;jN;j+) a0j=0;/数组第一列初始化为0,用来累加每一行的和; scanf(%d,&aij); /用多出来的一行和一列来累加每行和每列之和; /sum1和sum2累加两条对角线之和; for(i=1;iN;i+) sum1+=aii;/不要放进里面去了。因为放在里面,调试好久。 sum2+=ai6-i; for(j=1;jN;j+) ai0+=

19、aij; a0j+=aij; /输出矩阵 for(i=1;iN;i+) for(j=1;jN;j+) printf(%-4d,aij); if(j=5) printf(n); /判断矩阵是否为魔方矩阵,并设置标志。 for(i=1;i6;i+) if(a0i!=ai0)|(a0i!=sum1)|(ai0!=sum2) flag=0; else flag=1; /根据标志来判断是否为魔方矩阵。 if(flag=1) printf(该矩阵是魔方矩阵n); else printf(该矩阵不是魔方矩阵n); printf(每行和每列以及两条对角线的之和都为:%d,sum1);4.实验运行结果及分析5.

20、 实验总结本次实验主要对二维数组进行操作。要思考怎么读入二维数组,怎么检验每一行每一列以及对角线上的元素相加是否相等。刚开始,我对这样的题感到手足无措,可是后来耐着性子,慢慢琢磨,发现其实也并不是难,只要掌握规律,弄清楚思路,一步一步来,经过不断的调试和改进,我终于做出来。好吧,让我们来理一下思路。题目要求得的是,对输入的5*5的矩阵进行判断,我们可以定义一个6*6的矩阵,矩阵的第一行以及第一列都初始化为0(不初始化,我这里老是出现乱码,应该来说,定义好数组,不进行赋值时,会自动初始化为0,可能是我机器的问题,反正初始化为0,以保万全吧),多出来的一行和一列用来累加没一行和每一列的和,当然,同

21、时,我也定义了两个整形变量来记住两条对角线上和。最后,对每行每列的和以及对角线的和进行判断,这里,我们设置了一个标志,最后的输出是对标志进行判断是否是魔方矩阵。实验五-2:餐饮服务质量调查打分1. 实验题目及要求有40个学生被邀请给自助餐厅的食品和服务质量打分(110等级),统计调查结果,并用*打印如下形式的统计结果直方图 Grade Count Histogram 1 5 * 2 10 * 3 7 * 2.实验内容 1) 流程图 1.定义两个数组,一个数组a用来存储学生所打的分数。另一个数组count用来累加每个等级的个数。 2.利用循环,对数组中的每个元素判断,是几就在countai中累加

22、1. 3.再次利用循环,打印count1-count10的值,并根据期的值打印相应个数的*号。2)源程序#include #define N 40void main() int i,j,k,count11; int aN=1,1,1,1,1,2,7,2,5,5,5,4,4,8,8,8,9,2, 9,10,5,7,4,3,7,8,9,10,10,9,7,8,9,5,6,7,9,3,10,8; for(k=1;k11;k+) countk=0; for(i=0;iN;i+) countai+; printf(统计结果如下:n); printf(Grade Count Histogramn); fo

23、r(i=0;i10;i+) printf(%-8d%d ,i+1,counti+1); for(j=0;jcounti+1;j+) printf(*); printf(n); 4.实验运行结果及分析5. 实验总结本实验对数组进行了综合的应用,而且还要带点技巧,不然会很麻烦呢。除了数组,对前面的循环结构也进行了复习。通过本次实验,对数组有了更深的理解,除了前面那种需要找规律的,这种需要技巧性的数组也很好玩。需要好好掌握。实验六:学生成绩统计1. 实验题目及要求从键盘输入一个班(全班最多不超过30人)学生某门课的成绩,当输入成绩为负值时,输入结束,分别统计下列内容:(1)统计不及格人数并打印不及格

24、学生名单;(2)统计成绩在全班平均分及平均分之上的学生人数并打印其学生名单;(3)统计各分数段的学生人数及所占的百分比;2.实验内容 1) 流程图 1.用numi存放第i+1个学生的学号,用scorei存放第i+1个学生的成绩。设置计数器count,当scorei=aver时,打印numi和scorei。 3.将成绩分为六个分数段,60分以下为第0段,6069为第1段,7079为第2段,8089为第3段,9099为第4段,100分为第5段,因此,成绩与分数段的对应关系为: 4.各分数段的学生人数保存在变量count1-count5中,对于每个学生的成绩,先计算出该成绩所对应的分数段,然后将相应

25、的变量的人数加1,即count+。 2)源程序#include #define N 10void main() int numN=2014001,2014002,2014003,2014004, 2014005,2014006,2014007,2014008,2014009,2014010; int scoreN,i=0; float sum=0,aver,count=0,count1=0,count2=0, count3=0,count4=0,count5=0,count6=0; for(i=0;iN;i+) printf(请输入学号为:%d的成绩:n,numi); scanf(%d,&sc

26、orei); sum+=scorei; if(scorei60) count+; else if(scorei70) count1+; else if(scorei80) count2+; else if(scorei90) count3+; else if (scorei100) count4+; else count5+; printf(n); printf(不及格人数名单如下:n); for(i=0;iN;i+) if(scorei60) printf(学号:%d 成绩:%dn,numi,scorei); printf(总计%.0f人n,count); aver=sum/N; print

27、f(n平均分为:%.2fn,aver); printf(n成绩在平均分以上的学生有:n); for(i=0;iaver) printf(学号:%d 成绩:%dn,numi,scorei); count6+; printf(总计%.0f人n,count6); printf(n); printf(不及格人数为 :%.0f 所占百分比为: %.0f%n,count,count/N*100); printf(69-69分人数为:%.0f 所占百分比为: %.0f%n,count1,count1/N*100); printf(70-79分人数为:%.0f 所占百分比为: %.0f%n,count2,count2/N*100); printf(80-89分人数为:%.0f 所占百分比为: %.0f%n,count3,count3/N*100); printf(90-99分人数为:%.0f 所占百分比为: %.0f%n,count4,count4/N*100); printf(100人数为: %.0f 所占百分比为:

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1