中国地质大学 C语言实习报告 (1500字)
- 格式:doc
- 大小:10.60 KB
- 文档页数:7
C语言实训总结报告范文(通用5篇)在经济飞速发展的今天,报告的适用范围越来越广泛,报告包含标题、正文、结尾等。
一听到写报告马上头昏脑涨?以下是小编整理的C语言实训总结报告范文,仅供参考,希望能够帮助到大家。
C语言实训总结报告篇1这个星期,我们迎来了C语言实训——一次至为重要的实训。
在这个星期里,同学们都很认真的做着那20多道实训题目,遇到不懂的互相请教,或请问老师。
非常感谢老师对我们的帮助,这次实训使我受益匪浅,收获了很多。
通过C语言实训,让我加深了对C语言的了解,而不只是单单的在课本中学到的那些理论,平时乏味的课程,通过自己动手亲自编写,变的生动有趣,而在自己动手的过程中,出现的问题很多,比理论要难的多,当一个程序写完以后,经常会有很多错误而没法解决。
不过,通过几天的实训,逐渐积攒了一些经验,有些错误可以很快就看出来。
这次实训有很大的收获,让我对C语言有了更深的认识,平时在课堂上学到的东西可以自己动手编写,将其转化成一些实用的技能。
如果是一个程序写完一处错误也没有,会有种成就感,于是兴趣就来了,兴趣来了,自然学的东西也就多了,能把理论变成实际的技能,让我对C语言有了浓厚的兴趣和更深层的认识。
C语言是一个有序的学习,学了最基本的替换,然后扩展到循环,嵌套,条理很清楚,不是一个零散的知识,实际上所有的课程都如此,不过通过实训我也知道了自己的不足,存在的很多问题。
比如自己写的写的小程序出了问题,不会解决了就叫老师帮忙,虽然说一定意义上增加了师生之间的感情,但是会养成一种依赖的心理,碰到问题了第一个想到的是求助而不是自己独立解决,所以以后要多多锻炼自己的信心和增加自己的能力,争取做到老师不在身边的时候也可以完成一些简单的程序编写与错误排除。
还有自己的基础知识不扎实,遇到的问题,没有很好的逻辑思维,亲自编写一个陌生的程序的时候会有种无法下手的感觉,找不到突破口。
通过实训,逐渐理清了顺序,对于简单的程序和一些相对比较繁琐的嵌套,循环,不在是看着一头雾水。
C语言课程实习(优秀范文5篇)第一篇:C语言课程实习课程实习一、C程序上机操作方法及运行环境编写一个C程序,输入a, b, c,d四个值,输出其中最小者。
#includemain(){int a,b,c,d,t;printf(“Please input numbers:”);scanf(“%d,%d,%d,%d”,&a,&b,&c,&d);t=min(min(min(a,b),c),d);printf(“min number is:%dn”,t);}int min(int x,int y){int z;if(xz=x;elsez=y;return(z);}运行结果:Please input numbers:4,6,3,9min number is:3课程实习二、C程序上机操作方法及运行环境从键盘输入三个字符,要求输出这三个字符,并输出它们的ASCII 码及其ASCII码的平方根和的平方。
#include#includevoid main(){char ch1,ch2,ch3;float t;scanf(“%c,%c,%c”,&ch1,&ch2,&ch3);t=sqrt(ch1)+sqrt(ch2)+sqrt(ch3);printf(“%c,%dn”,ch1,ch1);printf(“%c,%dn”,ch2,ch2);printf(“%c,%dn”,ch3,ch3);printf(“%fn”,t*t);}运行结果:a,b,ca,97b,98c,99881.984683课程实习三、循环结构程序设计1)输入两个正整数m和n;2)如果m=n输出最大公约数m程序结束;3)若m>n则m=m-n否则n=n-m;4)返回到2)(循环)。
#includevoid main(){int m,n;scanf(“%d%d”,&m,&n);while(m!=n){if(m>n)m=m-n; else n=n-m;}printf(“%dn”,m); }运行结果:34,24课程实习四、循环结构程序设计打印下面的图案# # # # ## # # ## # ## ##includevoid main(){int i,j;for(i=1;i<=4;i++) {for(j=1;jprintf(“ ”);for(j=5;j>=i;j--) printf(“*”); putchar('n');}}课程实习五、数组的应用输入一个0到150之间的十进制整数,要求把此数转化为二进制形式。
C语言程序设计实习报告一、实习目的1. 巩固和加深对C语言程序设计的理解。
2. 掌握C语言编程的基本技巧和方法。
3. 提高分析问题、解决问题的能力。
4. 学会将理论知识应用于实际编程中。
二、实习内容XXX语言基础语法练习变量、数据类型、运算符、表达式等基础语法练习。
控制结构(顺序、分支、循环)的实现。
函数的定义和调用方式练习。
2. 模块化程序设计将一个大的程序分解成多个模块,每个模块完成特定的功能。
通过模块间的调用和传递数据来实现整个程序的功能。
3. 文件操作与文件读写文件的打开、关闭、读写操作练习。
文件格式的转换和数据统计处理。
4. 预处理指令与宏定义使用预处理指令进行条件编译和宏定义替换。
练习使用常见的预处理指令如include、define、ifdef等。
5. 结构体、链表与指针结构体的定义和使用。
链表的创建、插入、删除、遍历等操作。
指针的概念和指针运算。
深入理解指针与数组、结构体等数据结构的关系。
6. 位运算与嵌入式系统编程学习位运算符的使用和位段操作的实现。
嵌入式系统的基本概念和编程方法。
7. 综合项目实践参与或独立完成一个综合性C语言程序设计项目。
项目可以包括基于命令行参数的程序设计、基于文件操作的程序设计、基于网络编程的程序设计等。
三、实习过程1. 理论学习:通过教材、网络资源等途径学习C语言的基础知识和编程技巧。
2. 上机实践:在计算机上编写和调试C语言程序,不断巩固所学知识。
3. 问题解决:遇到问题时,通过查阅资料、请教老师或同学等方式解决问题。
4. 团队合作:在小组项目中与他人协作,共同完成任务。
四、实习收获1. 知识技能方面:深入理解了C语言的基本概念和编程技巧,掌握了模块化程序设计和文件操作等常用算法。
2. 解决问题能力方面:学会了如何分析问题、寻找解决方案并通过实践验证解决方案的正确性。
3. 团队协作能力方面:学会了与他人合作,共同完成任务,提高了团队协作能力。
4. 职业素养方面:培养了耐心、细致的工作态度和勇于尝试、敢于创新的探索精神。
c语言实习报告3篇c语言实习报告1在这个星期里,我们专业的学生在专业老师的带领下进行了c语言程序实践学习。
在这之前,我们已经对c语言这门课程学习了一个学期,对其有了一定的了解,但是也仅仅是停留在了解的范围,对里面的好多东西还是很陌生,更多的在运用起来的时候还是感到很棘手,毕竟,万事开头难嘛。
由于时间的关系,我们的这次实践课程老师并没有给我们详细的介绍,只是给我们简单的介绍了几个比较重要的实际操作。
包括了程序模块处理.简单界面程序.高级界面程序.程序的添加修改.用程序做一元线性回归处理以及用c语言程序来画粒度分布图等这几样比较重要的时间操作。
上机实验是学习程序设计语言必不可少的实践环节,特别是c语言灵活、简洁,更需要通过编程的实践来真正掌握它。
对于程序设计语言的.学习目的,可以概括为学习语法规定、掌握程序设计方法、提高程序开发能力,这些都必须通过充分的实际上机操作才能完成。
学习c程序设计语言除了课堂讲授以外,必须保证有不少于课堂讲授学时的上机时间。
因为学时所限,课程不能安排过多的上机实验,所以希望学生有效地利用课程上机实验的机会,尽快掌握用c语言开发程序的能力,为今后的继续学习打下一个良好的基础。
为此,我们结合课堂讲授的内容和进度,安排了12次上机实验。
课程上机实验的目的,不仅仅是验证教材和讲课的内容、检查自己所编的程序是否正确,课程安排的上机实验的目的可以概括为如下几个方面:1.加深对课堂讲授内容的理解课堂上要讲授许多关于c语言的语法规则,听起来十分枯燥无味,也不容易记住,死记硬背是不可取的。
然而要使用c语言这个工具解决实际问题,又必须掌握它。
通过多次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握c语言的语法规定。
对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差,这是由于大部分学生是初次接触程序设计,缺乏程序设计的实践所致。
学习c语言不能停留在学习它的语法规则,而是利用学到的知识编写c语言程序,解决实际问题。
c语言实习心得体会范文在C语言实习期间,我深深感受到了理论知识与实践应用之间的差距,也感受到了自己在C语言编程方面的不足之处。
通过这段实习经历,我不仅学到了许多新的知识和技能,还培养了自己的动手实践能力和解决问题的能力。
<br>首先,在实习期间,我了解到了C语言的基础知识,包括变量、常量、运算符、数据类型等。
这些基础知识是我进一步学习和应用C语言的基础,也为后面的实践提供了基础。
同时,我也学习了C 语言的控制结构,包括顺序结构、选择结构和循环结构等。
这些结构的运用使我的程序更加灵活和高效,也使我在实践中能够更好地解决问题。
其次,在实习中,我学会了使用C语言进行程序的设计和编写。
通过实际动手编写程序,我不仅加深了对C语言的理解,还提高了我的编程能力。
在编程过程中,我学会了使用不同的函数和语句来实现不同的功能,包括输入输出、算术运算、条件判断、循环控制等。
这些功能的运用使我的程序更加完善和实用,也使我在实践中能够更好地解决问题。
在实习期间,我遇到了许多难题和困惑,但通过与同事和老师的探讨和交流,我逐渐找到了解决问题的方法和思路。
在与他们的交流中,我了解到了许多实践经验和技巧,也学到了许多新的知识和技能。
通过这次实习,我更加深入地了解了C语言的应用和发展,也提高了自己的实践能力和解决问题的能力。
最后,在实习期间,我养成了良好的编程习惯和工作态度。
在编程过程中,我注重代码的规范和格式,力求使代码易读易懂,并进行了详尽的注释。
同时,我也注重团队合作,在与同事和老师合作的过程中,我积极互助,共同解决问题。
在实践中,我学会了合理安排时间和资源,提高自己的工作效率。
通过这次C语言实习,我不仅学到了许多新的知识和技能,还提高了自己的实践能力和解决问题的能力。
在今后的学习和工作中,我将继续努力学习和应用C语言,在实践中不断提高自己的编程能力和解决问题的能力。
我相信,通过不断学习和努力,我将会在C语言编程方面取得更好的成绩。
c语言实习报告在这个信息科技高速发展的时代,掌握一门编程语言已经成为了必不可少的技能之一。
作为计算机科学专业的学生,我有幸参加了一次关于C语言的实习,这次实习不仅让我深入了解了C语言的基本原理和应用,还让我体验到了编程的乐趣和挑战。
实习的第一天,我们首先进行了一些基础的理论学习。
老师向我们介绍了C语言的起源和发展历程,以及C语言在计算机科学领域中的重要性。
我们还学习了C语言的基本语法和数据类型,如变量、数组、指针等。
这些基础知识为我们后续的实践操作打下了坚实的基础。
在理论学习之后,我们开始进行实践操作。
我们使用C语言编写了一些简单的程序,如计算两个数的和、求一个数的平方等。
通过这些简单的程序,我们熟悉了C语言的编写规范和调试技巧。
在实践过程中,我遇到了许多问题,但通过与同学和老师的讨论,我逐渐解决了这些问题,并提高了我的编程能力。
实习的第二天,我们进行了更加复杂的编程任务。
我们被要求编写一个学生成绩管理系统,可以实现学生信息的录入、查询和删除等功能。
这个任务对我来说是一个巨大的挑战,因为我之前从未接触过如此复杂的编程任务。
然而,通过与同学的合作和老师的指导,我最终完成了这个任务,并且在实习结束时,我成功地演示了这个学生成绩管理系统。
通过这次实习,我不仅学到了C语言的基本知识和技巧,还锻炼了我的团队合作能力和解决问题的能力。
在实践过程中,我深刻体会到了编程的乐趣和挑战。
每当我编写出一个能够正常运行的程序时,我感到非常的满足和自豪。
而当我遇到问题时,我学会了不断尝试和寻求帮助,最终解决了问题。
这种经历让我更加坚定了我学习编程的决心。
除了技术方面的收获,这次实习还让我认识到了编程的广阔应用领域。
C语言作为一种通用的编程语言,被广泛应用于操作系统、嵌入式系统、游戏开发等领域。
通过实习,我了解到了C语言在这些领域中的重要性和应用场景,这对我未来的职业发展起到了积极的指导作用。
总结起来,这次C语言实习给了我一个宝贵的机会,让我深入了解了C语言的基本原理和应用。
c语言实习报告一、介绍本报告是对于C语言实习的全面总结和描述。
在此次实习中,我有机会通过实践学习和运用C语言的基本概念、语法和技术,深入了解并应用于实际项目中。
以下是我在实习期间的经历、收获以及对C语言的理解和展望。
二、实习背景在实习开始之前,我先对C语言进行了基本的学习和了解。
C 语言是一种通用而高效的编程语言,广泛应用于软件开发、嵌入式系统和操作系统等领域。
因此,我对于C语言的掌握和应用具有重要的意义。
三、实习内容和项目在实习期间,我加入了一个软件开发团队,并参与了一个基于C语言的项目。
这个项目是一个简单的学生成绩管理系统,旨在通过C语言的应用实现学生成绩的录入、查询和统计等功能。
在项目开始之前,我先进行了对于需求的分析和设计,确定了系统的整体结构和功能模块。
然后,我利用C语言编写了各个模块的代码,并进行了单元测试和集成测试,确保系统的正确性和稳定性。
最后,我进行了系统的调试和优化,以提高系统的性能和用户体验。
在实习期间,我主要学习和运用了以下C语言的知识和技术:1. 基本语法和数据类型:掌握了C语言的基本语法和数据类型的使用,包括变量、常量、运算符等。
2. 函数和模块化设计:学会了如何使用函数来实现模块化设计,提高代码的可读性和可维护性。
3. 数组和指针:了解了数组和指针的概念和用法,并在项目中应用于学生成绩的存储和处理。
4. 文件操作:通过文件操作函数,学会了如何将学生成绩数据保存到文件中,并在需要时进行读取和修改。
5. 错误处理和调试:掌握了错误处理的方法和技巧,以及如何利用调试工具进行代码的调试和优化。
四、实习心得和收获通过这次C语言实习,我收获了许多宝贵的经验和知识。
首先,我深入理解了C语言的基本概念和语法规则,加深了对于编程的认识和理解。
其次,通过参与项目的开发和实践,我提高了解决问题和分析需求的能力。
最重要的是,我学会了如何团队合作和与他人协作,以及如何在实际项目中灵活运用所学的知识和技能。
c语言实习报告一、引言随着信息技术的不断发展,计算机编程已经成为现代社会中一项重要的技能。
作为一名计算机专业的学生,我参加了为期两个月的C 语言实习,旨在进一步提升我在编程领域的能力和技术。
二、实习背景本次实习是在一家软件开发公司进行的。
公司专注于开发各种应用程序,而C语言是他们最常用的编程语言之一。
在实习期间,我负责参与开发一个新的应用程序,并负责一些基本的编程任务。
三、实习目标在本次实习中,我有以下几个主要目标:1. 掌握C语言的基本语法和编程技巧;2. 学习使用常见的开发工具和环境,如编译器和调试器;3. 参与实际项目的开发过程,提升解决问题的能力;4. 学会与团队成员合作,共同完成项目目标。
四、实习内容1. 学习C语言基础知识在实习开始之前,我花了一段时间学习C语言的基本语法和语义。
我掌握了变量、数据类型、运算符等基本概念,并通过编写小程序来熟悉这些知识。
2. 参与实际项目开发在学习了C语言的基础知识后,我开始参与实际项目的开发过程。
我负责实现项目中的一个模块,并根据需求进行功能的开发和测试。
通过这个过程,我熟悉了团队协作的流程,并学会了如何与团队成员进行有效的沟通和合作。
3. 解决编程问题在实习期间,我遇到了一些编程问题,比如程序逻辑错误、语法错误等。
通过与导师和团队成员的讨论和交流,我学会了如何定位和解决这些问题。
遇到问题时,我习惯性地先进行排查,再寻求他人的帮助,这样能更高效地解决问题。
4. 学习使用开发工具在项目开发过程中,我使用了一些常见的开发工具,如编译器和调试器。
通过学习和实践,我熟悉了这些工具的基本用法,并学会了如何利用它们进行程序调试和性能优化。
五、实习心得通过这次C语言实习,我深刻地认识到编程是一项需要不断学习和实践的技能。
虽然在实习期间遇到了一些困难和挑战,但通过与导师和团队成员的共同努力,我成功地完成了任务,并获得了一定的成就感。
在实习中,我学会了如何更好地与人沟通和协作。
《C语言程序设计》综合实习报告一、实习目的和任务本次综合实习是为了提高我们的C语言编程能力,培养我们解决实际问题的能力和团队合作精神。
实习的任务是通过编写C语言程序,完成指定的功能,包括字符串操作、数学运算和数组处理等。
二、实习内容和过程1.字符串操作我们首先学习了C语言中字符串的定义和基本操作,包括字符串的输入输出、连接、比较、查找等。
在实习中,我们编写了一个程序,实现了两个字符串的连接功能。
这个程序首先要求用户输入两个字符串,然后调用一个函数将这两个字符串连接起来,并输出结果。
这个实习让我们熟悉了字符串操作的方法,提高了我们对函数的编写和调用的能力。
2.数学运算接下来,我们学习了C语言中的数学运算,包括整数的加减乘除、浮点数的四则运算、取余和取模等。
为了巩固所学知识,我们编写了一个程序,实现了两个整数的相加和相除功能。
这个程序要求用户输入两个整数,然后调用不同的函数实现相应的运算,并输出结果。
这个实习让我们掌握了数学运算符的使用和函数的定义与调用。
3.数组处理最后,我们学习了C语言中的数组处理,包括数组的定义、初始化、访问和排序等。
为了加深理解,我们编写了一个程序,实现了对一个整型数组进行排序的功能。
这个程序首先要求用户输入一个整型数组,然后调用一个函数对数组进行排序,并输出结果。
这个实习让我们熟悉了数组的基本操作和函数的嵌套调用。
三、实习结果和总结通过本次综合实习,我们的C语言编程能力得到了提升。
我们掌握了字符串操作、数学运算和数组处理的基本方法和技巧,加深了对C语言的理解和应用。
我们学会了合理运用不同的函数,提高了编程效率和代码的可读性。
同时,我们也培养了团队合作精神,通过互相帮助和讨论,解决了实际问题。
在实习过程中,我们遇到了一些困难和挑战,但通过不断努力和坚持,最终取得了满意的成果。
通过这次实习,我们对C语言的学习充满了信心,相信在以后的学习和工作中,我们能够更好地运用C语言解决实际问题。
C语言见习报告6篇推荐文章计算机c语言实训报告范文标准模板热度:幼儿园见习个人总结【5篇】热度:幼儿园见习总结报告模板热度:幼儿园见习总结怎么写5篇热度: 2022幼儿园见习总结范文热度:C语言是一种计算机程序设计语言,属高级语言范畴。
它既具有高级语言的特点,又具有汇编语言的特点。
通过见习做一报告,本文是C语言见习的报告,仅供参考。
C语言见习报告一:班级:姓名:实验名称:电话订餐信息处理实验目的:题目要求:一个小饭馆的生意非常红火,要想用餐必须提前一天打电话预订,假设我们是饭馆负责接受电话预订的服务员,我们需要做些什么呢?首先,需要准备一张大小适当的白纸,等待顾客的电话。
李红最先打进了电话,她预约第2天中午12点用餐,用餐人数5人,服务员在纸上做了如下记录:“李红12点5人”;接着,刘娜、汪涵、孙杰和赵君分别来了电话,服务员根据他们的要求做了记录,此时纸上记录的内容是:李红 12点 5人刘娜 11点 2人汪涵 11点20分 3人孙杰 10点30分 5人赵君 13点20分 6人孙杰随后又来电话,将用餐时间推后一个小时,那么记录的内容也应该做相应的修改。
刘娜来用餐以后,可以将其信息从纸上划去编写程序处理电话订餐的情况实验步骤:首先建立结构体类型,然后函数声明,编写主函数,定义函数,调用函数。
完成后,对程序进行调试,确定所编写的程序是否能够运行。
实验内容:#include#include#define max 30struct guest{ intnum;char name[40];char time[20];int sum;}guestlink[max];void insert(int _p);void inquire(int);void change(int);void dele(int _p);void show(int);void main(){ inti;int count=0;do{0printf("1.......插入\n");printf("2.......查询\n");printf("3.......修改\n");printf("4.......删除\n");printf("5.......显示\n");printf("6.......退出\n");scanf("%d",&i);switch(i){case 1: insert(&count);break; case 2: inquire(count);break; case 3: change(count);break; case 4: dele(&count);break; case 5: show(count);break; case 6:break;default:printf("输入错误!");break; }}while(i!=6);}void insert(int _p){ inti,number;if(_p==max){ printf("用餐已满\n");return;} printf("请输入编号:");scanf("%d",&number);for(i=0;i<_p;i++)if(guestlink[i].num==number) { printf("已有相同的编号");return;} guestlink[i].num=number; printf("请输入姓名:");scanf("%s",guestlink[i].name); printf("请输入人数:");scanf("%d",&guestlink[i].sum); printf("请输入用餐时间:");scanf("%s",guestlink[i].time); (_p)++;}void inquire(int p){ inti,number,flag=1;printf("请输入要查询的编号");scanf("%d",&number);for(i=0;iif(guestlink[i].num==number){ printf("姓名:%s",guestlink[i].name);printf("用餐时间:%s",guestlink[i].time);printf("人数:%d\n",guestlink[i].sum);flag=0;}if(i>=p&&flag==1) printf("所查询的编号不存在"); }void change(int p){ inti,number,flag=1;printf("请输入要修改的编号");scanf("%d",&number);for(i=0;iif(guestlink[i].num==number){ printf("请输入姓名:");scanf("%s",guestlink[i].name);printf("请输入用餐时间:");scanf("%s",guestlink[i].time);printf("请输入人数:");scanf("%d",&guestlink[i].sum);flag=0;}if(i>=p&&flag==1) printf("所查询的编号不存在"); }void dele(int _p){ inti,j,number,flag=1;printf("请输入要删除的编号");scanf("%d",&number);for(i=0;i<_p&&flag;i++)if(guestlink[i].num==number){for(j=i;j<_p-1;j++)guestlink[j]=guestlink[j+1];flag=0;(_p)--;}if(i>=_p&&flag==1) printf("输入的编号不存在");}void show(int p){ inti;printf("编号姓名用餐时间人数\n ");for(i=0;i{ printf("%d",guestlink[i].num);printf("%8s",guestlink[i].name);printf("%8s",guestlink[i].time);printf("%8d\n",guestlink[i].sum);}}实验结果:实验体会:通过这次实践让我觉得用C语言在生活中的应用占有很大的比重,这次编程,让我体会到了学习C语言的乐趣,以及运用c语言给人们带来的方便。
中国地质大学(武汉)计算机高级语言课程设计(实习报告姓名:实习题目:班级:学号:学院:专业:资源勘查工程(油气方向)指导老师:2012年1月15日c)目录一、题目名称、要求- - - - - - - - - - - - - - - - - - - - - - - -3二、需求分析- - - - - - - - - - - - - - - - - - - - - - - - - - - - -3三、程序总体设计思路- - - - - - - - - - - - - - - - - - - - - -4四、程序各模块作用及详细设计- - - - - - - - - - - - - - -5五、程序运行过程截图及分析 - - - - - - - - - - - - - - - 12六、总结- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 17七、附录(完整程序) - - - - - - - - - - - - - - - - - - - - 19一、题目名称、要求歌星大奖赛(1)在歌星大奖赛中,有10个评委为参赛的选手打分,分数为1~100分,选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均值。
请编写一个程序实现。
(2)同时对评委评分进行裁判,即在10个评委中找出最公平(即评分最接近平均分)和最不公平(即与平均分差距最大)的评委。
提示:这个问题的第一个要求算法十分简单,但是要注意在程序中判断最大、最小值的变量是如何赋值的。
第二个要求为了考虑效率,要用到排序技术。
二、需求分析根据题目要求,程序中所求为分数的平均值(去掉最大最小值)及所有分数中和平均值差距最大和最小的数的顺位。
易知需要用到比较数据大小,并在一组数据中求得最大、最小值。
第二问要求得出与平均分差距最大、最小的数据,也可以理解为求第一问中各数据与平均值差的绝对值的最大、最小值。
并提供提示、输入、输出、显示、纠错等操作。
根据情况的不同,还应该提供可以使数据多次录入的循环部分。
三、程序总体设计思路一、总体设计:整个程序最开始是数据输入,可用scanf函数实现,输入的数据可存放在数组中,然后解决题目中的第一问,即求平均值,先寻找所输入的数据的最大值和最小值,这一步通过设的变量max及变量min的逐渐变动即可实现,接着减去max和min的值之后平均数aver就可得到。
然后是寻找数据中和平均值差距最大和最小的数,同样是通过max和min变量(此时max 和min重新赋值,出于阅读性考虑变量尽可能减少),数据与平均值的差距大小可通过差值的平均值体现,然后求得差值平均值的最大、最小值及其相应的位置,就可解决第二问。
整个程序中的输入模块负责接收数据,数据处理模块(1)和数据处理模块(2)分别负责第一问求平均值和第二问求最公平和最不公平的评委,最后输出模块输出处理后的结果。
二、程序各部分功能划分程序可以划分为5个部分,通过各个部分的合作即可完成要求:1、成绩输入部分。
2、求得最大、最小值部分。
3、求平均值部分。
4、求得最公平、最不公平数据及其位次部分。
5、结果输出部分。
图示:四、程序各模块作用及详细设计一、程序各功能模块设计:(1)开始部分:#include<stdio.h>#include<math.h>void main(){do{float a[10],max=0.0,min=100.0,aver=0.0;int i,m,n; /*定义需要使用的变量*/该部分是程序的开头,说明了需要调用的系统文件,stdio.h和math.h均是使程序可顺利运算必需的内容。
而max、min均为定义的变量,定义为float型是考虑到评分或平均分不一定是整数。
其中为了程序的简洁,max、min及aver会赋两次值,实际上可以不这样做而多定义两个变量。
其中的do while语句使得程序可以重复执行,也即多组数据的录入和处理得以实现,do while语句的执行条件在main函数的末尾,条件为1,即无限循环,当需要跳出程序时直接关闭对话框即可。
(2)数据输入模块:for(i=0;i<10;i++){printf(请输入第%d个分数\n,i+1);scanf(%f,&a[i]);将预定输入的10个分数均放在数组a[10]里,便于调用和比较。
由于在数组中a[0]代表的是第一个数,即方括号内的数字i并不代表输入数据的顺位,所以在printf函数里输出的是i+1而不是i。
图示:(3)数据处理模块1if(a[i]<1.0 || a[i]>100.0){printf(error!\n); /*数据只能在1到100之间*/i--;}if(max<a[i])max=a[i];if(min>a[i])min=a[i];aver+=a[i]; /*此时aver为所有数据之和*/}aver=(aver-max-min)/8; /*第一个循环结束,aver重新赋值,此时aver为平均值*/ 第一个数据处理模块解决了第一问的要求,即求得去掉一个最高分和去掉一个最低分后其余8个分数的平均值。
由于题目要求分数为1~100分,程序中添加了一个判定部分,只有当分数处于1到100之间时循环才能继续,否则提示“error!”。
此处的aver赋了两次值,是出于程序可读性的原因,尽量减少变量的数量。
图示:(4)数据处理模块 2max=fabs(a[0]-aver); /*max此时为a[0]与平均值之差的绝对值*/m=0;min=fabs(a[0]-aver); /*min此时为a[0]与平均值之差的绝对值*/n=0;for(i=1;i<10;i++)/*程序中的第二次循环*/{if(max<fabs(a[i]-aver)){max=fabs(a[i]-aver); /*逐一比较得出当前与平均值差距最大的分数*/m=i; /*max对应的数据在数组中的位置*/}if(min>fabs(a[i]-aver)){min=fabs(a[i]-aver); /*逐一比较得出当前与平均值差距最小的分数*/n=i; /* min对应的数据在数组中的位置*/}}第二个数据处理模块解决的是题目的第二问,即在10个评委中找出最公平(即评分最接近平均分)和最不公平(即与平均分的差距最大)的评委。
首先对max和min重新赋值,使两者均等于第一个分数与平均数之差的绝对值,然后开始循环。
因为本质上求最公平与最不公平的分数等价于求平均值差值最大与最小的数,将分数转化为其余平均值之差的绝对值(如a[i]转为fabs(a[i]-aver)),然后求最值,其余步骤与第一个数据处理模块一样。
需要注意的是此模块中m和n的赋值均为当前i值,而数组中i的数值并不等于实际上分数的排序,所以最后输出时不能直接输出m和n。
图示:(5)结束部分printf(average=%f\n,aver);printf(最公平的评委是第%d位,分数为%f\n,n+1,a[n]); /*n为该数据在数组中的位置,n+1是该评委的顺次*/printf(最不公平的评委是%d位,分数为%f\n,m+1,a[m]);/*m为该数据在数组中的位置,m+1是该评委的顺次*/}while(1);}此为程序的结尾,printf函数输出所需的结果,分别为去掉一个最高分和一个最低分后的其余分数的平均值,及最公平和最不公平的评委的顺位和分数。
分数可能不是整数,所以均以float输出,评委的顺位则以整形输出,输出n+1和m+1的原因是数组中的位置并不是实际上的位次。
while(1)为do语句的判定句,使得程序无限循环,由此可以无限次输入分数并处理,实现多组分数的录入。
图示:五、程序运行过程截图及分析一、程序运行各阶段截图及分析(1)程序开始阶段:出现提示“请输入第1个分数”,此时输入分数并回车即输入第一个数据。
(2)数据输入阶段:阶段(1)时输入98并回车,程序即可录入第一个数据并出现“请输入第二个分数”,以此类推:输入第2个分数为75并回车,出现提示“请输入第3个分数”。
继续输入85、100、65、87、94、86、82,此时一共输入了9个分数,程序依次出现提示并录入数据,最后出现提示“请输入第10个分数”。
第10个数据键入85,此时所有分数都已输入,但第10个数据计算机还没有接收,数据处理模块还没有开始。
(3)数据处理阶段数据输入完毕后截图如下:然后按下回车键,数据即可处理完毕:答案直接出现在分数列的下方,依次是平均分86.5、最公平评委的位次6和分数87、最不公平的评委位次5及分数65。
一次处理后的截图为:此时可以继续输入下一组数据,第一个分数为77如果数据输入错误,则会提示error!并提醒重新输入该数据程序两次运行完整截图:运算完成后,计算机会继续循环,直到关闭对话框为止。
六、总结一、程序现有优点(1)算法简单有效程序中所有的循环体均使用for语句,for语句较while和do while语句更加简洁灵活,完全可以替代上述语句是程序简单有效地进行。
(2)程序精炼,可读性强由于各个变量在程序中都多次赋值,有效地减少了程序中的变量数量,非常精炼而且通俗易懂,采用的语句和编排方式也都增强了这一特点。
最终使程序维持在一个非常短而又有效的水平上。
(3)有效防止数据错误程序中有专门的模块来防止输入错误,当输入的数据小于1或大于100时,会提示error!并再次提示输入该数据,避免了由于一次输错而导致整个程序终止的情况。
(4)菜单简单明了,提示语言人性化程序中的菜单均为中文输出,且多为祈使句,具有较强的指导作用。
层次分明并且通俗易懂,没有操作上的困难。
有利于用户顺利、准确地看懂程序并进行操作,提高了管理效率。
(2)考虑了多组数据输入的情况程序考虑了多组10个分数的输入和处理,不仅足以满足题目要求,而且考虑到了有多组分数等待处理的情况,处理完一组后不需要重新运行程序。
二、程序现有缺点(1)程序依然不够精炼程序虽然已经足够短小,但是只是表面上小范围精简,并没有在本质上提高效率和减小资源占用。
(2)操作界面太单调虽然提示语言非常人性化,但是由于dos界面本身的问题导致菜单太单调,表达方式很单一。
三、程序改进思路(1)算法的精炼以及界面的优化限于c语言的功能和面向dos的特性,两点都不太可能有大的改进,可以将程序移植到vc++等平台以实现优化。
四、c语言实习心得体会c语言实习的数天里,我们在专业老师的带领下进行了c语言程序实习。