2011-上黄老师自己的《C语言程序设计》实验报告
c程序课程设计实验报告
c程序课程设计实验报告一、教学目标本课程的教学目标是使学生掌握C程序设计的基本概念、语法和编程技巧,培养学生具备基本的程序设计能力和良好的编程习惯。
具体分解为以下三个方面的目标:1.知识目标:使学生了解C程序设计的基本概念,掌握C语言的基本语法和编程方法,包括变量、数据类型、运算符、控制结构、函数等。
2.技能目标:培养学生具备编写和调试C程序的能力,能运用C语言解决简单的实际问题,培养学生的创新能力和实践能力。
3.情感态度价值观目标:培养学生对计算机科学的兴趣和热情,培养学生良好的编程习惯和团队协作精神,提高学生的自主学习和问题解决能力。
二、教学内容本课程的教学内容主要包括C程序设计的基本概念、语法和编程方法。
具体安排如下:1.C程序设计基本概念:介绍计算机编程的基本概念,使学生了解C语言的特点和应用领域。
2.C语言语法:讲解C语言的基本语法,包括变量、数据类型、运算符、控制结构等。
3.C程序设计方法:教授编程方法,包括函数、数组、指针等,并通过实例使学生掌握编程技巧。
4.编程实践:安排一定的实验课时,使学生动手实践,培养学生的编程能力和问题解决能力。
三、教学方法本课程采用多种教学方法,以激发学生的学习兴趣和主动性,提高教学效果。
具体方法如下:1.讲授法:讲解C程序设计的基本概念、语法和编程方法,使学生掌握理论知识。
2.案例分析法:通过分析典型案例,使学生了解编程技巧和方法,提高学生的实践能力。
3.实验法:安排实验课,使学生动手实践,培养学生的编程能力和问题解决能力。
4.讨论法:学生进行小组讨论,分享学习心得和经验,提高学生的团队协作能力。
四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备。
具体如下:1.教材:选用权威、实用的教材,为学生提供系统的学习资源。
2.参考书:推荐学生阅读适量的参考书,丰富学生的知识体系。
3.多媒体资料:制作课件、教学视频等多媒体资料,提高教学的趣味性和直观性。
C语言程序设计实验报告(实验大纲+过程)
C语言程序设计实验报告(实验大纲+过程)C语言程序设计实验报告(实验大纲+过程)一、实验目的本实验旨在通过实际的C语言程序设计任务,培养学生的编程思维、动手能力,加深对C语言程序设计的理解和掌握。
二、实验内容1. 实验环境的搭建在计算机上安装C语言编程环境,如C语言编译器。
2. 实验材料准备根据给定的实验题目和要求,准备相应的实验材料,包括输入输出测试数据、参考文档等。
3. 实验任务根据实验题目,编写C语言程序,实现特定的功能要求。
程序需包括输入部分、处理部分和输出部分。
4. 程序调试与测试对编写完成的程序进行调试,确保程序的正确性。
使用多组测试数据进行测试,验证程序的功能是否符合要求。
5. 实验总结与思考对实验过程中遇到的问题进行总结,并提出改进建议。
思考课程的重点和关键,深化对C语言程序设计的理解。
三、实验步骤1. 实验环境的搭建在计算机上下载并安装C语言编译器,如Dev-C++或Code::Blocks等。
2. 实验材料准备根据实验题目要求,准备好实验所需的输入测试数据和输出要求。
3. 编写C语言程序根据实验题目,使用C语言编写程序。
在程序的开头部分添加必要的注释,说明程序的功能和使用方法。
4. 程序调试与测试编译并运行程序,查看是否存在语法错误。
使用给定的测试数据,验证程序的输出是否符合要求。
5. 实验总结与思考对实验过程中遇到的问题进行总结,并提出改进建议。
思考课程的重点和关键,深化对C语言程序设计的理解。
四、实验结果与分析根据实验题目要求,给出实验编写的C语言程序的详细代码,并解释程序的设计思路和实现方法。
同时,给出实验所得的输出结果,并分析结果是否符合预期。
五、实验心得体会通过完成本次实验,我对C语言程序设计的基本语法和思维方式有了更深入的理解。
在编写程序的过程中,我遇到了一些问题,但通过不断尝试和调试,最终顺利完成了实验任务。
在今后的学习中,我将进一步加强对C语言的理解和应用能力,提高程序设计的质量和效率。
c语言程序设计实验报告
c语言程序设计实验报告C语言程序设计实验报告。
本次实验是关于C语言程序设计的实验报告,主要内容是对C语言程序设计的学习和实践。
通过本次实验,我对C语言的基本语法和程序设计有了更深入的理解和掌握。
首先,本次实验的主要内容是关于C语言的基本语法和程序设计。
在实验中,我们学习了C语言的基本数据类型、运算符、控制语句、函数、数组、指针等内容。
通过实际的编程练习,我对这些内容有了更加具体和深入的了解。
在实验中,我学会了如何定义变量、使用不同类型的数据、编写循环和条件语句、设计函数和调用函数等基本的程序设计技巧。
其次,本次实验还涉及了C语言的程序设计实践。
在实验中,我们完成了一些简单的程序设计任务,比如实现一个简单的计算器、编写一个简单的学生成绩管理系统等。
通过这些实践,我对C语言的程序设计有了更加具体和深入的理解,也提高了我的编程能力和解决问题的能力。
在实验中,我还遇到了一些困难和问题。
比如在编写程序时,可能会出现语法错误、逻辑错误、运行时错误等。
但是通过仔细分析和调试,我逐渐克服了这些问题,也提高了自己的解决问题的能力。
总的来说,本次实验对我来说是一次很好的学习和锻炼机会。
通过实验,我不仅对C语言的基本语法和程序设计有了更深入的理解,也提高了自己的编程能力和解决问题的能力。
希望在以后的学习和工作中,能够继续努力,不断提高自己的编程水平,为将来的发展打下坚实的基础。
最后,我对C语言程序设计实验报告的编写就到此结束。
希望通过这次实验报告的撰写,能够对C语言程序设计有一个更加全面和深入的了解,也希望能够在以后的学习和工作中,能够更加熟练地运用C语言进行程序设计。
感谢老师和同学们在实验中给予我的帮助和支持,也希望在以后的学习和工作中,能够继续努力,不断提高自己的编程能力和解决问题的能力。
C语言程序设计实验报告2
《C语言程序设计实验报告》
实验编程作业
一.实验目的
1.熟悉运用Visual C++程序,掌握C语言的源程序的编辑、编译、执行的过程。
2.通过完成编程作业,了解并熟悉C语言源程序的特点。
二.实验要求
1.阅读和掌握本实验内容所给的全部程序。
2.熟练掌握C语言源程序的编辑、编译、执行的过程。
三.实验内容及成果展示
调试运行《C语言程序设计实验教程(第二版)》P6-P8编程题训练1.
2.
3.
4.
四.实验心得
1.在再次使用Visual C++进行程序的编辑、编译、和执行后,体会到将源代码输入正确对以后的程序调试、执行省去许多不必要的麻烦。
2.在输入源代码的过程中,认识到1和l的差别,下次碰到此种情况一定会更加细心地对待。
3.熟悉了C语言源程序的特点,能够在不同环境下编辑、编译、与运
行C语言程序。
C语言程序设计实验报告
C语言程序设计实验报告实验报告:C语言程序设计一、实验目的本实验旨在通过学习C语言程序设计,培养学生的编程思维和解决问题的能力,掌握C语言的基本语法和常见的数据结构,为以后的编程工作打下坚实的基础。
二、实验内容1.C语言基础知识的学习和理解2.C语言程序设计的实践3.编写简单的C语言程序,如输入输出、循环、条件判断等基本操作4.使用C语言实现常见的数据结构,如数组、链表、栈、队列等三、实验过程1.学习C语言的基础知识,包括变量、常量、算术运算、逻辑运算、关系运算等。
2. 通过编写简单的程序来熟悉C语言的基本语法,如输出“Hello World”、计算两个数的和等。
3. 学习C语言的控制结构,如if语句、for循环、while循环等。
4.实现常见的数据结构,如数组、链表、栈、队列,并编写相应的操作函数。
5.在编写程序的过程中,加入适当的注释,提高代码的可读性和可维护性。
四、实验结果通过实验,我掌握了C语言的基本语法和常用的数据结构。
在实践过程中,我能够独立完成简单的C语言程序的编写,能够正确地使用各种控制结构来解决实际问题。
同时,我也学会了如何使用调试工具来找出程序中的错误并进行修正,提高了编程效率。
五、实验总结通过本次实验,我对C语言的程序设计有了进一步的了解和掌握。
C 语言是一门广泛应用于计算机领域的编程语言,掌握好C语言的编程技巧对于提高编程效率和代码质量非常重要。
在实验过程中,我发现编写注释对于代码的可读性和可维护性非常重要,因此在以后的编程过程中,我会养成良好的注释习惯。
同时,我还发现了一些自己在编程过程中常见的错误,如缺少分号、拼写错误等,以后会更加谨慎地避免这些错误的发生。
此外,我还会继续深入学习C语言的高级特性,如指针和动态内存分配等,不断提升自己的编程水平。
通过本次实验,我还学会了如何利用互联网资源解决编程问题,如查阅帮助文档、相关问题的解决方案等。
这为我今后在编程过程中遇到问题时寻找解决办法提供了极大的便利。
C语言程序设计上机实验报告(精选5篇)
C语言程序设计上机实验报告(精选5篇)第一篇:C语言程序设计上机实验报告黔南民族师范学院 C语言程序设计上机实验报告系部:计算机科学系年级:2013 级班级:姓名:学号:实验时间:实验成绩:2013年月日实验三顺序结构程序的设计一实验名称:顺序结构程序的设计二.实验环境:windows XP系统,VC++6.0软件三.实验目的:四.实验内容:五.算法描述流程图六.源程序七.测试数据及运行结果八.实验心得实验成绩评分要求1、原创性发现抄袭或雷同成绩为0分2、正确性程序正确60分3、可读性格式清楚,有注释,变量命名规范20分4、健壮性对特殊测试数据有考虑有测试10分5、效率程序运行效率高10分第二篇:《c语言程序设计》上机实验报告要求《c语言程序设计》上机实验报告要求1.实验环境:软件系统:使用的软件环境硬件系统:机型说明2.实验目的:掌握如何编辑、编译、链接调试运行c程序3.实验内容:(1)掌握顺序结构程序设计.P26 ,p49,p62 3.2~3.7(2)掌握选择结构程序设计(if 和switch语句的用法)p4.2~(3)循环结构程序设计(while, dowhile,for语句的用法)。
(4)掌握数组的定义、输入和输出的方法,字符数组、字符串函数的使用。
(5)了解函数的定义,熟悉函数实参与形参的“值传递”方式,掌握函数的嵌套调用和递归调用方法。
(6)熟悉指针含义及其使用。
(7)熟悉结构体和共用体的使用。
(8)熟悉文件的使用。
4.实验要求:(1)输入编写的源程序,检查程序有无错误(语法和逻辑错误),有则改之。
(2)编译和连接,仔细分析编译信息,如有错误应找出原因并改正。
(3)运行程序,输入数据,分析结果。
5.实验结果:输出程序清单和运行结果。
(要求把原题内容,调试好的程序和其结果一并打印),6.实验体会分析运行结果,本次调试程序取得的经验(遇到的问题,解决的方法等)。
第三篇:C程序设计上机实验报告10C程序设计实验报告实验名称:指针与数组学时安排:2课时实验类别:上机操作型实验要求:1人1组 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄一、实验目的1.理解指针、地址和数组间的关系;2.掌握通过指针操作数组元素的方法;3.掌握数组名作为参数的编程方式。
C语言程序设计实验报告
C语言程序设计实验报告一、实验目的增强学生对C语言函数的理解和应用能力,提高编程能力。
二、实验要求利用C语言函数实现对一些文件中的数据进行读取、处理和输出,并设计函数完成相应的功能。
三、实验内容和方法本次实验将设计一个程序,实现对一个文本文件中的数据进行读取、处理和输出的功能。
设计思路:1.打开指定的文件,并判断文件是否能够成功打开。
2.读取文件中的数据,并存储到相应的变量中。
3.根据需要进行数据的处理和计算。
4.将处理后的数据输出到文件或屏幕上。
具体步骤:1.首先定义一个函数,用于打开文件,并判断文件是否成功打开。
函数的参数为文件名,返回一个文件指针。
2.定义一个函数,用于读取文件中的数据,并将数据存储到相应的变量中。
函数的参数为文件指针和数据存储变量。
3.定义一个函数,根据需要进行数据的处理和计算,并将结果存储到相应的变量中。
函数的参数为输入数据和输出数据的变量。
4.定义一个函数,将处理后的数据输出到指定的文件或屏幕上。
函数的参数为要输出的数据和输出文件的指针。
四、实验过程1.实验环境准备确保系统中已安装C语言的编程环境,如Code::Blocks等。
2.创建源文件在编程环境中创建一个源文件,命名为experiment.c。
3.编写源代码```c#include <stdio.h>FILE* openFile(char* filename)FILE* fp = fopen(filename, "r");if (fp == NULL)printf("Open file failed.\n");return NULL;}return fp;void readFile(FILE* fp, int* data)for (int i = 0; i < 3; i++)fscanf(fp, "%d", &data[i]);}void processData(int* input, int* output) for (int i = 0; i < 3; i++)output[i] = input[i] * input[i];}void printData(int* data, FILE* fp)for (int i = 0; i < 3; i++)fprintf(fp, "%d ", data[i]);}fprintf(fp, "\n");int maiFILE* inputFile = openFile("input.txt"); int input[3];int output[3];if (inputFile != NULL)readFile(inputFile, input);processData(input, output);FILE* outputFile = fopen("output.txt", "w");if (outputFile != NULL)printData(output, outputFile);fclose(outputFile);} elseprintf("Open output file failed.\n");}fclose(inputFile);}return 0;```五、实验结果与分析程序运行后,会打开一个名为input.txt的文件,从文件中读取3个整数,并将它们的平方结果写入output.txt文件中。
C语言程序设计实验报告
实验二数据类型、运算符和表达式实验时间:2机时一、实验目的1. 掌握C语言数据类型,熟悉各种类型变量的定义和含义。
2. 掌握C语言标准输入、输出函数的使用方法3. 进一步熟悉C程序的上机过程,积累调试经验。
二、实验意义通过上机实验,巩固本章所学基本知识-C语言的数据类型、变量的定义和使用、结合数据类型更深入地理解标准输入函数scanf()和标准输出函数printf ()的格式控制符的意义和使用。
通过简单程序设计的练习加深对运算符优先级和结合方向的理解,并正确求解表达式的值,这些必要的基础知识是后面深入学习C语言所必须的知识储备。
三、实验重点1. 数据类型、变量的定义和使用;2. 运算符、表达式的求解3. 简单顺序结构的C程序设计四、实验难点数据类型的转换、自增自减运算五、实验方式提前编写程序,写好实验报告,上机实验时一边调试程序一边将实验报告上关于程序调试和运行结果的信息填写到实验报告上,实验完成时上交实验报告。
六、实验内容(一).完善程序题1.用scanf函数输入数据,使得x=1.23,y=67.1234。
#include <math.h>#include <stdio.h>int main(){double x,y,z;scanf ("%lf%lf",&x,&y);z=2*x+y/sin(3.1415/4);printf("z=%6.2f",z);return 0;}输入1.23 67.1234输出z= 97.392. #include <stdio.h>int main(){int str;str=getchar();putchar(str);return 0;}输入a输出a3.根据下面的输出结果,完善程序s1=C,ASCII is 67x=655.35,y=765.43#include <stdio.h>int main(){double x=655.3524,y=765.4271;char s1='C';printf("s1=%c,ASCII is %d\nx=%6.2f,y=%6.2f",s1,s1,x,y);return 0;}输出s1=C,ASCII is 67x=655.35,y=765.434.用scanf函数输入数据,使得程序运行结果为a=2,b=’x’,c=’z’。
《c语言程序设计》实验报告
《c语言程序设计》实验报告《C语言程序设计》实验报告一、引言C语言是一种广泛应用于计算机编程的高级编程语言,具有灵活性和高效性的特点。
在《C语言程序设计》课程中,我们通过实验来巩固和应用所学的知识,提高我们的编程能力和解决问题的能力。
本实验报告将对我们在课程中进行的实验进行总结和分析。
二、实验一:Hello World程序实验一是我们在学习任何编程语言时的传统开始,即编写一个简单的Hello World程序。
这个程序的目的是在屏幕上显示出"Hello World"这个字符串。
通过这个实验,我们学会了如何编写基本的C语言程序,并且了解了程序的编译和运行过程。
三、实验二:计算圆的面积实验二要求我们编写一个程序,通过输入圆的半径,计算并输出圆的面积。
在这个实验中,我们学会了如何使用变量、常量和运算符来进行数学计算,并且学会了如何使用C语言的输入输出函数。
四、实验三:判断闰年实验三要求我们编写一个程序,判断输入的年份是否为闰年。
通过这个实验,我们学会了如何使用条件语句来进行逻辑判断,并且学会了如何使用布尔运算符和关系运算符。
五、实验四:字符串处理实验四要求我们编写一个程序,实现对字符串的基本操作,包括字符串的长度计算、字符串的复制和字符串的连接。
通过这个实验,我们进一步熟悉了C语言中的字符串处理函数,并且学会了如何使用循环和数组来处理字符串。
六、实验五:排序算法实验五要求我们编写一个程序,实现对一组数字的排序。
通过这个实验,我们学会了如何使用数组和循环来进行排序算法的实现,并且学会了如何评估和比较不同排序算法的效率。
七、实验六:文件操作实验六要求我们编写一个程序,实现对文件的读写操作。
通过这个实验,我们学会了如何使用C语言的文件处理函数来进行文件的打开、读取和写入,并且学会了如何处理文件指针和文件的结束标志。
八、实验七:数据结构实验七要求我们编写一个程序,实现对链表数据结构的基本操作,包括链表的插入、删除和查找等。
《C语言程序设计实验》实验报告
《C语言程序设计实验》实验报告实验目的:通过完成实验,加深对C语言程序设计的理解,掌握C语言中常用的编程技巧和方法,提高编程能力。
实验内容:本次实验包括以下三个实验题目:1.编写一个C程序,实现输入5个整数,然后按照从小到大的顺序输出这5个整数。
2.编写一个C程序,实现输入一个整数n,计算并输出从1到n的所有自然数的阶乘。
3.编写一个C程序,实现输入一个整数n,计算并输出n的前n项斐波那契数列。
实验步骤:1.第一个实验题目的完成步骤:1.1.定义一个长度为5的整型数组,用于存储输入的5个整数。
1.2. 使用for循环语句输入5个整数,并将其存储到数组中。
1.3.使用冒泡排序算法对数组进行排序。
1.4. 使用for循环语句输出排序后的数组。
2.第二个实验题目的完成步骤:2.1.定义一个变量n,用于存储输入的整数。
2.2. 使用for循环语句计算并输出从1到n的阶乘。
3.第三个实验题目的完成步骤:3.1.定义一个整型数组,用于存储斐波那契数列。
3.2.输入一个整数n,用于确定斐波那契数列的长度。
3.3. 使用for循环语句计算并输出前n项斐波那契数列。
实验结果:经过实验,我成功完成了以上三个实验题目,分别实现了输入5个整数按照从小到大排序输出、计算n的阶乘以及输出n的前n项斐波那契数列的功能。
实验总结:通过本次实验,我巩固了C语言的基础知识,掌握了数组、循环和排序算法等编程技巧。
在实验中,我发现了程序设计中的一些细节问题,并通过修改和调试解决了这些问题,提高了自己的编程能力。
在未来的学习中,我会继续深入学习C语言及其他编程语言,不断提升自己的编程水平。
c语言程序设计实验报告
c语言程序设计实验报告C语言程序设计实验报告一、引言C语言是一种广泛应用于软件开发的高级编程语言,其简洁、高效和灵活的特性使其成为许多程序员的首选。
在本次实验中,我们将通过编写C语言程序,探索其基本语法和功能,以及如何应用于实际问题的解决。
二、实验目的本次实验的目的是让我们熟悉C语言的基本语法和常用的控制结构,掌握C语言程序的编写和调试技巧。
通过实践,我们将学习如何使用C语言解决简单的问题,并培养编程思维和逻辑思维能力。
三、实验过程1. 程序设计环境的搭建在开始编写C语言程序之前,我们需要先搭建一个合适的开发环境。
通常,我们可以选择使用集成开发环境(IDE)如Code::Blocks或使用文本编辑器和命令行编译器的组合。
在本次实验中,我们选择使用Code::Blocks作为开发工具。
2. 程序的编写在本次实验中,我们将编写一个简单的学生成绩管理程序。
该程序可以实现学生信息的录入、查询和统计功能。
首先,我们需要定义适当的数据结构来存储学生的信息,如姓名、学号和成绩。
然后,我们可以使用C语言的基本输入输出函数来实现信息的录入和查询功能。
最后,我们可以使用循环和条件语句来实现成绩统计功能。
3. 程序的调试和测试在完成程序的编写后,我们需要进行调试和测试以确保程序的正确性。
我们可以通过逐行调试和输入不同的测试数据来验证程序的逻辑和功能。
如果发现错误或异常,我们可以使用调试工具来定位和修复问题。
四、实验结果与分析经过调试和测试,我们成功地完成了学生成绩管理程序的编写。
该程序可以实现学生信息的录入、查询和统计功能,并且在处理异常情况时能够给出相应的提示信息。
通过该程序,我们可以更好地理解C语言的基本语法和常用控制结构,并学会了如何将其应用于实际问题的解决。
然而,我们也发现了一些问题和改进的空间。
首先,程序的界面可以进一步优化,使其更加友好和易用。
其次,我们可以添加更多的功能,如成绩排序和成绩分析等,以满足更多的需求。
c语言程序设计实验报告
c语言程序设计实验报告实验报告实验目的:通过编写C语言程序,掌握C语言程序设计的基本语法和常用函数的使用,并能够独立完成简单的编程任务。
实验内容:1. 编写一个程序,要求用户输入一个整数n(n <= 10),然后从键盘输入n个整数,将这n个整数保存在一个数组中,并统计其中正数、负数和零的个数。
最后输出正数、负数和零的个数。
2. 编写一个程序,要求用户输入一个整数n(n <= 20),然后从键盘输入n个整数,将这n个整数保存在一个数组中。
然后计算数组中所有元素的平均值并输出。
3. 编写一个程序,要求用户输入一个整数n(n <= 50),然后从键盘输入n个整数,将这n个整数保存在一个数组中。
然后输出数组中的最大值和最小值。
4. 编写一个程序,实现以下数学公式的计算并输出结果:y = 2.5 * x + sin(x)实验步骤:1. 根据实验要求,设计程序的基本结构和流程。
2. 编写代码实现程序的功能。
3. 编译和运行程序,观察输出结果是否正确。
4. 对程序进行调试,排查错误和异常情况。
5. 编写实验报告,总结实验过程和结果。
实验结果:1. 根据用户输入的整数n和n个整数,统计出正数、负数和零的个数,并正确输出。
2. 根据用户输入的整数n和n个整数,计算出数组中所有元素的平均值,并正确输出。
3. 根据用户输入的整数n和n个整数,找出数组中的最大值和最小值,并正确输出。
4. 根据数学公式计算得出结果,并正确输出。
实验总结:通过本次实验,我深刻地理解了C语言程序设计的基本语法和常用函数的使用。
通过编写程序解决实际问题,我学会了合理地设计程序结构和流程,并能够运用所学知识独立完成简单的编程任务。
通过调试程序,我掌握了解决错误和异常情况的方法和技巧。
通过编写实验报告,我总结了实验过程和结果,并对所学知识进行了巩固和复习。
《C语言程序设计》综合实习报告.doc
课题一:用指针优化学生成绩排名一、目的1.熟悉变量的指针和指向变量的的指针变量的概念和使用2.熟悉数组的指针和指向数组的的指针变量的概念和使用3. 掌握冒泡法或选择法排序的算法4. 掌握函数的定义、调用、声明,以及参数的两种传递方式二、实习环境个人计算机,Windows操作系统,Turbo C 2.0或 WinTC或Visual C++等编译开发环境三、实习内容与步骤1.定义一个数组stu[10]存放10个学生的成绩,从键盘输入数据,要求用指针实现2.将数组stu[10]的内容输出到屏幕上,要求用指针实现3.将成绩数组按照从高到低进行排序,要求用指针实现4.将第三步内容放在函数中实现,在主函数中调用实现排序,用指针实现,输出排序后的成绩单5.采用指针方法,输入字符串“student score ”,复制该字符串并输出(复制字符串采用库函数或用户自定义函数)6.在实习报告中画出程序流程图,说明程序设计的算法,附主要程序段运行结果(屏幕截图)。
7. 在实习报告中说明知识点。
8.在实习报告中说明程序设计过程中的难点、解决办法及编程小结或体会。
四、程序流程图、算法及运行结果1.程序流程图:2.算法:先定义一个函数接收10个学生的成绩,利用指针将数据保存在数组中,再定义第二个函数输出所以学生的成绩,同样也是使用指针,最后定义一个函数用选择排序法对成绩进行由大到小的排序,将指针指向的是数组中的第一个地址,在主函数中依次调用这两个函数; 定义一个字符指针指向字符串,利用库函数中的strcpy 将student score 复制给字符指针,输出字符串 3.程序:#include"stdio.h" #include"string.h" struct student { int grade;int num;}stu[10];void input(struct student *p) { int i; for(i=0;i<10;i++,p++){ printf("请输入第 %-2d 个学生的成绩:",i+1);scanf("%d%d",&p->num,&p->grade); }}void printout(struct student *p){ int i;for(i=0;i<10;i++,p++)printf("第 %-2d个学生的成绩为:%d\n",i+1,p->grade);}void arrow (int *p1,int *p2,int *px,int *py){ int t,m;t=*px; *px=*py; *py=t;m=*p1; *p1=*p2; *p2=m;}void place(struct student stu[]){ int i,j;for(i=1;i<10;i++ )for(j=0;j<10-i;j++)if (stu[j].grade<stu[j+1].grade)arrow(&stu[j].num,&stu[j+1].num,&stu[j].grade,&stu[j+1].grade);}int main(void){ struct student stu[10],*ptr;int i;char string[100],*s;s=string;ptr=stu;input(ptr);printout(ptr);place(stu);printf("排序后的成绩单为:\n");for(i=0;i<10;i++)printf("第 %-2d名 %-2d %-5d\n",i+1,stu[i].num,stu[i].grade);printf("\n");strcpy(s,"student score");printf("%s\n",string);}4.运行结果:五、知识点、难点及解决办法。
《c语言程序设计》实验报告
《c语言程序设计》实验报告《C语言程序设计》实验报告一、引言C语言是一种广泛应用于软件开发领域的高级编程语言。
作为计算机科学专业的学生,学习和掌握C语言程序设计是非常重要的一项基础技能。
本实验报告将对我们在学习过程中进行的一系列实验进行总结和分析,以便更好地理解和应用C语言。
二、实验一:基本语法和数据类型在第一次实验中,我们学习了C语言的基本语法和数据类型。
通过编写简单的程序,我们掌握了变量的声明和定义、输入输出函数的使用以及基本的运算符和控制语句。
这些基础知识为我们后续实验的进行奠定了坚实的基础。
三、实验二:数组和字符串在第二次实验中,我们学习了C语言中数组和字符串的使用。
通过编写程序,我们掌握了数组的声明和初始化、数组元素的访问以及字符串的输入输出和处理。
这些知识使我们能够更好地处理和操作大量数据,提高程序的效率和可读性。
四、实验三:函数和指针第三次实验中,我们深入学习了C语言中函数和指针的使用。
通过编写程序,我们理解了函数的定义和调用、参数传递的方式以及函数的返回值。
同时,我们也学习了指针的概念和使用方法,掌握了指针的声明和初始化、指针与数组的关系以及指针的运算。
这些知识使我们能够更好地组织和管理程序的代码,提高程序的可维护性和可扩展性。
五、实验四:文件操作在第四次实验中,我们学习了C语言中文件操作的相关知识。
通过编写程序,我们掌握了文件的打开和关闭、读写文件以及文件指针的操作。
这些知识使我们能够更好地处理和管理大量的数据,实现数据的持久化和共享。
六、实验五:结构体和链表在第五次实验中,我们学习了C语言中结构体和链表的使用。
通过编写程序,我们理解了结构体的定义和使用、结构体数组的操作以及链表的创建和遍历。
这些知识使我们能够更好地组织和管理复杂的数据结构,实现更加灵活和高效的程序设计。
七、实验六:综合实验在最后一次实验中,我们将前面所学的知识进行综合运用,完成一个综合性的实验项目。
通过实践,我们巩固了前面所学的知识,并提高了解决问题的能力和思维方式。
C语言程序设计实验报告
实验报告一学生姓名:学号:专业班级:实验类型:■验证□综合□设计□创新实验日期:2011年03月09日实验成绩:一、实验项目名称C语言的编程环境二、实验目的1.初步了解C程序的编译、连接和运行的过程。
2.掌握和理解C程序的结构。
三、实验内容1.使用Visual c++6.02.运行一个简单的C程序四、实验环境PC微机;Windows 操作系统;Visual C++ 程序集成环境。
五、实验步骤1.启动Turbo C2.输入程序输入以下程序main(){printf(“How are you!”);}3.运行程序44.保存文件5.退出TC程序6.打开已经存在的文件六、思考题总结实验中在编辑、编译、运行等各环节中所出现的问题及解决方法。
实验报告二学生姓名:学号:专业班级:实验类型:■验证□综合□设计□创新实验日期:2011年03月21日实验成绩:一、实验项目名称数据的输入与输出二、实验目的1.熟练掌握字符数据的输入与输出函数getchar和putchar的使用2.熟练掌握格式输入输出函数scanf和printf的使用3.进一步实习C程序的编辑环境三.实验内容4.4 若a=3,b=4,C=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,cl='a',c2='b',想得到以下输出结果,你写出程序。
要求输出的结果如下:a= 3 b= 4 c= 5x=1.200000,y=2.400000,z=-3.600000x+y= 3.60 y+z=-1.20 z+x=-2.40u= 51274 n= 128765c1='a' or 97(ASCII)c2='B' or 98(ASCII)源程序:#include<stdio.h>main(){int a=3,b=4,c=5;long int u=51274,n=128765;float x=1.2,y=2.4,z=-3.6;char c1='a',c2='b';printf ("a=%2d b=%2d c=%2d\n",a,b,c);printf ("x=%f,y=%f,z=%f\n",x,y,z);printf ("x+y=%5.2f y+z=%5.2f z+x=%5.2f\n",x+y,y+z,z+x);printf ("u=%6ld n=%9ld\n",u,n);printf ("%s%s%d%s\n","c1='a'","or",c1,"(ASCII)");printf ("%s%s%d%s\n","c2='B'","or",c2,"(ASCII)");}运行结果如下:四、实验环境PC微机,Windows 操作系统,Visual c++ 程序集成环境五、实验步骤步骤1、编写程序用printf函数来求得实验内容中表达式的结果步骤2、按要求完成实验内容4.4步骤3、参照实验一的报告书写规范,完成此次实验报告的编写六、实验小结对实验不够熟悉要多加练习才是!实验报告三学生姓名:学号:专业班级:实验类型:■验证□综合□设计□创新实验日期:2011年03月28日实验成绩:一、实验项目名称数据类型、运算符和表达式二、实验目的1.了解C语言中数据类型的意义;2.掌握不同数据类型之间的赋值的规律;3.学会有关C语言的有关运算符,以及包含这些运算符的表达式,特别是是++和—运算符的使用。
C语言程序设计实验报告(四).doc11111111111111111
三、实验内容及要求:
内容:
1.下列程序计算SUM的值。调试该程序,使之能正确地计算SUM。写出调试过程。SUM=1+1/2+1/3+...+1/n
mቤተ መጻሕፍቲ ባይዱin( )
{
int t,s,i,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
t=1/i;
s=s+t;
s=s*i;
printf("%d! = %d",n,s);
}
首次运行先输入n=4,输出结果为4!=24,这时正确的。为了检验程序的正确性,再输入n=10,输出为10!=24320,这显然是错误的。为了找到程序的错误,可以通过单步执行来观察变量的变化。分析产生这种现象的原因,把程序改正过来,再用n=20进行实验,分析所得到的结果。
printf("%2d",j);
for(j=i-1;j>=1;j--)
printf("%2d",j);
printf("\n");
}
}
五、教师评语(或成绩)
教师签字:徐时芳年月日
printf("s=%f\n",s);
}
在调试过程中,用单步执行的方法观察变量s和t的值的变化,找到程序中存在的问题,加以改正。
2.下面程序的功能是计算n!。
main()
{
int i,n,s=1;
printf("Please enter n:");
scanf("%d",&n);
C语言程序设计实验课程设计结果汇报
课程设计报告课程设计题目:C语言程序设计学生姓名:班级:1121813学号:201120181327学院:软件工程指导教师:2011年12 月14 日模块一:要求:1)根据实现的功能,分析出合理的解决问题的方法。
2)编程简练,程序功能齐全,能正确运行。
3)说明书(分析过程思路)、流程图要清楚,规范。
4)课题完成后必须按要求提交课程设计报告,格式规范,内容详实。
考查方式:课程设计作为特定专业技能训练的一个重要环节,应注重过程与结果的同步考核。
1、平时课程设计考核30%考核学生课程设计日常考勤及课程设计的绩效考核,每天完成多少工作量2、课程设计成果40%考核课程设计程序成果的正确性、完整性、编程的规范化等3、课程设计报告30%课程设计报告的完整性、规范化实验任务:完成以下程序的编写1、输入功能:输入30名学生的学号、班级、姓名、上机起始时间。
2、计算功能:计算每个下机学生的上机费用,每小时1元。
(上机费用=上机时间* 1.0/h ,不足一小时按一小时计算)3、查询功能:按条件(班级、学号、姓名)显示学生的上机时间。
4、机器使用情况的显示(显示方式不限但要一目了然)模块二:程序分析说明分析思路:概括:总体上应该非为六个大部分,包括上机登陆,信息查询,计费查询,机器使用情况,登陆下机,退出系统1.登陆上机:学生信息包括学号,班级,姓名,还有上机时间,机器编号,机器使用情况等,应该采用结构体来含括并引用这些信息如:Struct student{Char num;Char name;……..……..……..}student[30];;并且结构体必须至少可以保存30个学生的信息;2.信息查询,采用for循环以及do while语句嵌套使用,根据多种情况查询使用switch语句;3.计费查询,通过获取系统时间,再与上机时间作比较,按每小时1元计费.(注意:获取系统时间的程序从网上查询得知)4.机器使用情况,模仿逻辑运算的知识,无人使用的机器可以标主函数流程图记为mark=0,反之则mark=1;采用循环语句写较为方便,通过比较机器的标记mark 的值,再用另外的变量来记录未使用的机器和已经在使用的机器5.登陆下机,输入用户的信息即可6.退出系统:正在退出系统,感谢您的使用模块三: 流程图如下:程序流程图Choice函数调用流程图Manu()函数调用Out()函数流程图CxPc函数调用流程图SUM()函数流程图模块四:程序代码如下:#include<stdio.h>#include<time.h>#include<string.h>#include<Windows.h>struct student{char num[15];char theClass[8];char name[20];char onTime[8];int mark;int no;}student[30];void add(){for(int m=0,x=0;m<30;m++){if(student[m].mark==0)x++;}printf("\n\t目前空闲可用的机器共有%d 台,学生人数不能多于可用机器总数",x);int n,i;printf("\n请输入要上机的学生的总数:");for(i=0;i<10;i++){scanf("%d",&n);if(n>x){printf(" 空闲机器不够用,请重新输入总数:");continue;}elsebreak;}int a[30];i=0;for(int f=0;f<30;f++){if(student[f].mark==0){a[i]=f;i++;}if(i==n)break;}for(i=0;i<n;i++){printf("\t请输入第%d个学生学号:",i+1);do{scanf("%s",student[a[i]].num);if(strlen(student[a[i]].num)!=12){printf("输入学号出错,请重新输入:");m=31;}else{for(f=0;f<30;f++){if(a[i]==f)f=f+1;if(strcmp(student[a[i]].num,student[f].num)==0){printf("当前有此学号学生在上机,检查是否输入有误,重新输入:");m=31;break;}elsem=32;}}}while(m==31);printf("\t请输入第%d个学生班级:",i+1);do{scanf("%s",student[a[i]].theClass);if(strlen(student[a[i]].theClass)!=7){printf("班级输入错误,请重新输入:");m=31;continue;}elsem=32;}while(m==31);printf("\t请输入第%d个学生姓名:",i+1);scanf("%s",student[a[i]].name);printf("\t请输入第%d个学生上机时间(如08:02,“:”要用英文输入法输入):",i+1);do{scanf("%s",student[a[i]].onTime);if(strlen(student[a[i]].onTime)!=5){printf("输入时间错误,请重新输入(如08:02,“:”要用英文输入法输入):");m=31;continue;}else if(student[a[i]].onTime[2]!=':'){printf("输入有误,请重新输入(如08:02,“:”要用英文输入法输入):");m=31;continue;}else if(student[a[i]].onTime[0]<'3'){if((student[a[i]].onTime[0]=='2')&&(student[a[i]].onTime[1]>'3')){printf("输入时间错误,请重新输入(如08:02):");m=31;continue;}else if(student[a[i]].onTime[3]>'5'){printf("输入时间错误,请重新输入(如08:02):");m=31;continue;}elsem=32;}else if(student[a[i]].onTime[0]>'3'){printf("输入时间错误,请重新输入(如08:02):");m=31;continue;}elsem=32;}while(m==31);student[a[i]].mark=1;printf("您已经成功输入%d个学生的信息",i+1);}//system("cls");}void searchStudent(){int i=0,b,c,d;int a[30];for(int m=0,x=0;m<30;m++){if(student[m].mark==1){a[i]=m;i++;x++;}}do{char find[20];printf("\n查询方式: 1.根据学号查询 2.根据班级查询 3.根据姓名查询\n 请选择:");do{scanf("%d",&b);if(b<1||b>3){printf("选择出错,请重新选择:");m=31;continue;}elsem=32;}while(m==31);switch(b){case 1:d=0;printf("\t请输入学生的学号:");scanf("%s",find);for(i=0;i<x;i++){if (strcmp(student[a[i]].num,find)==0){if(d==0)printf("\n学生姓名\t学生班级\t学生学号\t上机时间\t所用机号\n");printf("%s \t%s \t%s %s %d",student[a[i]].name,student[a[i]].theClass,student[a[i]].num,st udent[a[i]].onTime,student[a[i]].no);d++;}}if(d==0)printf("\n 提示:没有这个学生\n");printf("\n\t1.继续查询\n\t0.返回主菜单");printf("\n\t 请输入您的选择:");do{scanf("%d",&c);if(c<0||c>1){printf("选择出错,请重新选择:");m=31;continue;}elsem=32;}while(m==31);break;case 2:d=0;printf("\t请输入学生的班级:");scanf("%s",find);for(i=0;i<x;i++){if (strcmp(student[a[i]].theClass,find)==0){if(d==0)printf("\n学生姓名\t学生班级\t学生学号\t上机时间\t所用机号\n");printf("%s \t%s \t%s %s %d",student[a[i]].name,student[a[i]].theClass,student[a[i]].num,st udent[a[i]].onTime,student[a[i]].no);d++;}}if(d==0)printf("\n 提示:没有这个班的学生\n");printf("\n\t1.继续查询\n\t2.返回主菜单");printf("\n\t 请输入您的选择:");do{scanf("%d",&c);if(c<1||c>2){printf("选择出错,请重新选择:");m=31;continue;}elsem=32;}while(m==31);break;case 3:d=0;printf("\t请输入学生的姓名:");scanf("%s",find);for(i=0;i<x;i++){if (strcmp(student[a[i]].name,find)==0){if(d==0)printf("\n学生姓名\t学生班级\t学生学号\t上机时间\t所用机号\n");printf("%s \t%s \t%s %s %d",student[a[i]].name,student[a[i]].theClass,student[a[i]].num,st udent[a[i]].onTime,student[a[i]].no);d++;}}if(d==0)printf("\n 提示:没有这个学生\n");printf("\n\t1.继续查询\n\t2.返回主菜单");printf("\n\t 请输入您的选择:");do{scanf("%d",&c);if(c<1||c>2){printf("选择出错,请重新选择:");m=31;continue;}elsem=32;}while(m==31);break;default:printf(" 提示:输入错误");}}while(c);//system("cls");}void calculate(){int fee;char times[30];time_t rawtime;struct tm *timeinfo;time (&rawtime);timeinfo=localtime(&rawtime);strcpy(times,asctime(timeinfo));int a[30];int i=0;for(int m=0,x=0;m<30;m++){if(student[m].mark==1){a[i]=m;i++;x++;}}if(i==0)printf("当前没有学生在上机\n");else{printf("所有学生上机费用如下:\n");for(i=0;i<x;i++){printf(" %d号机\t学生:\t%s\t%s",student[a[i]].no,student[a[i]].num,student[a[i]].name);if((student[a[i]].onTime[3]-48)*10+(student[a[i]].onTime[4]-48)>(times[14]-48)*10+(ti mes[15]-48))fee=(times[11]-48)*10+times[12]-(student[a[i]].onTime[0]-48)*10-student[a[i]].onTime [1];elsefee=(times[11]-48)*10+times[12]-(student[a[i]].onTime[0]-48)*10-student[a[i]].onTime [1]+1;if(fee<0)printf("\t费用为:%d 元\n",fee+24);else printf("\t费用为:%d 元\n",fee);}}}void searchPC(){int n,m=0;printf("\n目前可用的机器为:\n");for(int i=0;i<30;i++){if(student[i].mark==0){n=student[i].no;printf("%d号\t",n);m++;}}printf("\n\t共%d 台机器可用\n",m);}void Out(){int fee;char find[10];char times[30];time_t rawtime;rawtime=time(NULL);strftime(times,29,"%H:%M",localtime(&rawtime));printf("\n\t请输入要下机同学的学号:");scanf("%s",find);int a[30];int i=0;for(int m=0,x=0;m<30;m++){if(student[m].mark==1){a[i]=m;i++;x++;}}for(i=0;i<x;i++){if (strcmp(student[a[i]].num,find)==0){if((student[a[i]].onTime[3]-48)*10+(student[a[i]].onTime[4]-48)>(times[3]-48)*10+(ti mes[4]-48))fee=(times[0]-48)*10+times[1]-(student[a[i]].onTime[0]-48)*10-student[a[i]].onTime[1 ];elsefee=(times[0]-48)*10+times[1]-(student[a[i]].onTime[0]-48)*10-student[a[i]].onTime[1 ]+1;printf("\n学生学号学生姓名所用机号上机时间下机时间费用\n");printf("%s %s %d %s %s %d\ n",student[a[i]].num,student[a[i]].name,student[a[i]].no,student[a[i]].onTime,times,fee);student[a[i]].mark=0;m=31;break;}//system("cls");}if(m!=31)printf("学号可能输入错误,找不到该生\n");}int manu(){int d;printf("\n");printf("\t|-------------欢迎进入机房收费管理系统-------------|\n");printf("\t|您的操作已成功,请继续选择,可供选择的操作有:|\n");printf("\t| 1. 登记上机 2. 学生查询|\n");printf("\t| 3. 计费查询 4. 机器使用情况|\n");printf("\t| 5. 下机登记 6. 退出系统|\n");printf("\t|--------------------------------------------------|\n");printf("\n\t 请输入您的选择:");for(int i=0;i<10;i++){scanf("%d",&d);if(d<1||d>6){printf("输入错误,请重新输入选择:");continue;}elsebreak;}return(d);}void choice(){printf("\n\t\t\t\t提示\n\t学生学号为12个字符(如012345671111)\n\t班级为七位数字(如:1121813)\n\t姓名为20个字符(中英文均可)\n\t输入时间要用英文输入法,特别时间格式中的“:”必须用英文输入如00:00\n");int quit=0;for(int i=0;i<30;i++){student[i].mark=0;student[i].no=i+1;}while(!quit){switch(manu()){case 1:add();break;case 2:searchStudent();break;case 3:calculate();break;case 4:searchPC();break;case 5:Out();break;case 6:printf("\n\t正在退出系统\t谢谢使用\t再见\n");quit=1;break;}}}void main(){ int ch;printf("请自觉遵守校纪校规,严禁通宵上网\n");printf("同意,请按1,不同意请按2");printf("\n请选择");scanf("%d",&ch);system("cls");switch(ch){case 1:choice();break;case 2:printf("\t\t\t\t感谢您的使用,再见\n");break;}}模块五:实验心得:通过此次试验,我认识到对于c语言这门课程的学习还存在着许多的问题,拿到一个程序,感觉到无法下手,这应该是我还是缺少足够的实践能力,无法将所学到的知识运用到实际的编程问题中,打个比方,int指的是整型常量,大家都应该知道,但是在编程中,往往会由于实际需求,数字的大小超过了int的最大数字,这就会导致了一些莫名的问题,而且呢这些问题往往很容易被我们所忽略,这样导致的问题往往比较难找到,找出并且将问题纠正,这样一来就导致了浪费时间,打击了自信心,认为自己很笨,以后也不敢下手去写程序,这样就形成了一个恶性循环,导致这门课程学的很差,甚至挂科,补考,重修,还是不过,后面的结果我就不说了。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《C语言程序设计》实验报告年级:2010级(必修)学号:姓名:专业:实验题目:编写颁奖程序在n个选手中评出一等奖1名、二等奖2名、三等奖3名,输出得奖的情况。
评分过程为:m个裁判给选手打分,去掉一个最高分和一个最低分后,其他分数的平均分即为选手的得分。
根据选手得分情况来评奖。
要求:1.编写排序函数sort()2.编写求从一组数中去掉最大和最小数后的平均值函数average()3.利用以上两个函数评奖源程序清单:#include<stdio.h>#include <string.h>#define P printf("================\n")#define Q printf("---------------------------\n")int average(int m)求平均成绩,m为所有评委人数{int s,k=0,max=0,min=1000,sum=0; //定义最高分和最低分用和初值while(k<m) //以下循环输入每个评委打的分数{scanf("%d",&s); //输入每个评委给的分数if(s>=max)max=s; //评委给分求出最高分if(s<min)min=s; //评委给分求出最低分sum+=s; //评委给分求和k++;}return (sum-max-min)/(k-2); //去掉一个最高分和一个最低分并求平均分}void sort(int a[][2],int n) //排序函数a数组2列,n名选手{int k,j,t,y=0;for(k=1;k<n;k++){for(j=1;j<=n-k;j++){if(a[j][1]<a[j+1][1]) //平均分换位置后,选手号码也要换位。
{ t=a[j][1];a[j][1]=a[j+1][1];a[j+1][1]=t;y=a[j][0];a[j][0]=a[j+1][0];a[j+1][0]=y;}}}}void main(){int i,j,k,m,n,a[10][2]; //n为选手m为评委人数system("color 1a"); //增加屏幕颜色printf("请输入比赛人数和评委n/m分别为:\n");scanf("%d%d",&n,&m);P;for(j=1,i=1;j<=n;i++,j++){a[j][0]=i;printf("请输入%d号选手的评委打分:\n",j);Q;a[j][1]=average(m);}P;for(k=1;k<=n;k++)printf("%d号选手的得分是%d\n",k,a[k][1]);sort(a,n);P;printf("一等奖是第%d号选手\n",a[1][0]);Q;printf("二等奖是第%d和%d号选手\n",a[2][0],a[3][0]);Q;printf("三等奖是第%d、%d和%d号选手\n",a[4][0],a[5][0],a[6][0]);Q;}主要标识符说明:(说明变量、函数、指针、结构体等)见注译实验结果贴图:见右实验环境:interPC机、windowsXP操作系统、VC++6.0 C语言环境。
签名:黄兴鼎以下用结构体做,为了简单起见,设参赛选手7名,评委5名。
/*以下用结构体数组做综合实验题,为简单计设选手10名评委5名*/#include <stdio.h>#define N 7 //设选手10名#define M 5 //评委5名#define P printf("=============================================================\n")struct stu //定义结构体stu{ long int sno; //选手编号float avescore; //平均成绩int score[M]; //5个评委评分组成一个数组int all;}stud[N]; //定义结构体数组void sort(struct stu arr[]) //定义排序函数{ int i,j;struct stu temp; //设临时结构体变量for(i=0;i<N;i++) //简单排序for(j=i+1;j<N;j++)if(arr[i].avescore<arr[j].avescore) //高分在前,低分在后。
{temp=arr[i];arr[i]=arr[j];arr[j]=temp;} //如果高分在后交换位置}float average(int a[],int x){int i;float average=0; //设平均分初值为0int all=0; //设总分初值为0。
int max=0,min=a[0]; //设最高分和最低分都为第一个for(i=0;i<x;i++) //以下排序{if(a[i]>max) //比较找出最高分max=a[i]; //if(a[i]<min) //比较找出最低分min=a[i]; //all+=a[i]; //总成绩}all=all-max-min; //去掉一个最高分去掉一个最低分average=(float)all/(x-2);//求出平均成绩return average; //返回平均成绩}void main(){ int i,j;printf("请输入选手编号和各评委的打分\n");for(i=0;i<N;i++){ scanf("%ld", &stud[i].sno); //输入选手编号for(j=0;j<M;j++)scanf("%d", &stud[i].score[j]); //输入各评委的打分}for(i=0;i<N;i++)stud[i].avescore = (float)average(stud[i].score,M); //调用求平均分函数sort(stud); //调用排序函数P;printf("排名\t编号\t评委1\t评委2\t评委3\t评委4\t评委5\t平均分\n"); //列表输出for(i=0;i<N;i++){printf("%d\t%ld\t",i+1,stud[i].sno); //名次和从高到低排好序的编号 for(j=0;j<M;j++)printf("%d\t",stud[i].score[j]); //评委评分printf("%.1f\t",stud[i].avescore); //输出平均分printf("\n");}P;printf("一等奖是%d\n",stud[0].sno); //以下输出各获奖名单printf("二等奖是%d\t%d\n",stud[1].sno,stud[2].sno);printf("三等奖是%d\t%d\t%d\n",stud[3].sno,stud[4].sno,stud[5].sno);P;}运行结果:也可以用数组指针做:#include <stdio.h>#include <stdlib.h>int main(){int judge,player,i,j,*p3; //定义评委judge和选手player变量和p3指针double *p1,*p2; //定义双精度指针P1,P2.double average(double* p,int length); //平均值原函数声明void sort(double* p,int length,int choice,int *p1); //排序原函数声明printf("请输入选手数(大于6)与裁判数(大于3),并以空格隔开:\n"); //提示信息scanf("%d %d",&player,&judge); //输入选手和评委人数p1=(double*)malloc(judge*sizeof(double)); //定义动态分配内存评委变量地址赋于指针p1p2=(double*)malloc(player*sizeof(double)); //定义动态分配内存选手平均分变量地址赋于指针p2 p3=(int*)malloc(player*sizeof(int)); //定义动态分配内存选手编号变量地址赋于指针p3 for(i=0;i<player;i++) *(p3+i)=i+1; //选手编号赋值for(i=0;i<player;i++){printf("请输入第%d个选手的成绩并以空格隔开:",i+1);for(j=0;j<judge;j++)scanf("%lf",p1+j);printf("%lf",*(p1+j));*(p2+i)=average(p1,judge); //调用求平均值函数printf("它的平均分是%.2f\n",*(p2+i)); //输出平均分}sort(p2,player,1,p3); //调用排序函数对平均值排序printf("\n第%d名序号%d分数%.2f\n",1,*p3,*p2); //输出1等奖选手号和成绩printf("第%d名序号%d分数%.2f\n",2,*(p3+1),*(p2+1)); //输出2等奖选手号和成绩printf("第%d名序号%d分数%.2f\n",2,*(p3+2),*(p2+2));printf("第%d名序号%d分数%.2f\n",3,*(p3+3),*(p2+3)); //输出3等奖选手号和成绩printf("第%d名序号%d分数%.2f\n",3,*(p3+4),*(p2+4));printf("第%d名序号%d分数%.2f\n",3,*(p3+5),*(p2+5));return 0;}double average(double* p,int length) //定义求平均分函数{double sum=0;int i;sort(p,length,0,NULL); //调用排序函数,对评委给分排序for(i=1;i<length-1;i++) //将最高和最低两分排除在求和外{sum+=(*(p+i)); //求和}return (sum/(length-2)); //求平均值}void sort(double* p,int length,int choice,int *p1) //定义排序函数{int i,j,temp1; //定义循环变量和整形临时变量double temp; //定义双精度临时变量for(i=0;i<length-1;i++) //采用简单排序{for(j=i+1;j<length;j++){if(*(p+j)>*(p+i)){if(choice == 1){temp1=*(p1+i);*(p1+i)=*(p1+j);*(p1+j)=temp1;}temp=*(p+i);*(p+i)=*(p+j);*(p+j)=temp;}}}}结果图:也可以用C++即扩展名为.cpp的文件做,并用指针法:#include <stdio.h>#include <stdlib.h>#define N 10 //选手人数#define M 6 //评委人数struct Student //定义结构体{char * id; //选手编号char * Name; //选手姓名double score[M]; //选手成绩double average; //选手平均成绩}stu[N]; //定义结构体数组double getAverage(double * , int n); //求从一组数中去掉最大和最小数后的平均值原函数声明void sort(Student *, int n); //排序原函数声明void printResult(Student * ); //输出结果原函数声明void main() //定义主函数{int i;Student stu[N] = { //定义结构体数组并初始化{"101","aaa",65,45,67,56,85.5,78.4},{"102","bbb",69,75,87,56,95.5,58.4},{"103","ccc",65,45,67,56,95.5,78.4},{"104","ddd",85,54,87,69.8,75.5,88.4},{"105","eee",65,85,77,84,95.5,78.4},{"106","fff",65,69,87,76,85.5,78.4},{"107","ggg",75,45,77,56,95.5,88.4},{"108","iii",67,45,87,86,95.5,86.4},{"109","hhh",75,75,87,56,75.5,68.4},{"110","jjj",80,85,87,86,90,88}};for (i =0 ;i<=N ;i++){stu[i].average = getAverage(stu[i].score , M); //对每一选手的评委成绩调用求平均函数}sort(stu,N); //调用平均值排序函数printResult(stu); //调用输出函数}double getAverage(double * score, int n) //定义求去掉一个最高分和最低分后求平均值{int j;double max = score[0]; //定义最高分double min = score[0];double total= score[0]; //定义最低分for(j=1;j<n; j ++){if (max<score[j])max=score[j]; //找出最高分if (min>score[j])min=score[j]; //找出最低分total+=score[j]; //求总分}return (total-max-min)/(n-2); //返回去掉一个最高分和一个最低分后的平均分}void sort(Student * stu , int n) //定义对所有平均分排序的函数{int i,j;Student tmp; //定义结构体临时变量for (i=0;i<n-1;i++)for(j=i+1;j<n;j++){if(stu[i].average<stu[j].average) //冒泡法排序{tmp = stu[i] ;stu[i] = stu[j] ;stu[j] = tmp;}}}void printResult(Student *stu) //定义输出获奖选手名单函数{int i = 0;printf("The First: \n");printf ("%s\t%s,\t%.2f\n" ,stu[i].id,stu[i].Name , stu[i].average); //输出一等奖选手名单和成绩printf("\nThe Second: \n");for(i =1;i<3;i ++) //输出二等奖选手名单和成绩printf ("%s\t%s,\t%.2f\n" ,stu[i].id,stu[i].Name , stu[i].average);printf("\nThe Third: \n");for(i =3;i<M;i++) //输出三等奖选手名单和成绩printf ("%s\t%s,\t%.2lf\n" , stu[i].id,stu[i].Name , stu[i].average);}运行结果:如果要在C环境下做此题,则本例中所有结构体都要加上struct 要改动的比较多,不适合。