实验六 函数
【例5】写一函数,用“冒泡法”对输入的10个字符按由小到大顺序排序。 源程序如下: /*冒泡法排序*/ #include 【例6】编写程序,从键盘分别输入年、月、日,计算出该天时这年中的第几天。 示例输出: Input year_month_day: 2005 12 12 是这年的第346天。 请按下面程序中的提示完成整个程序。 #include ―stdio.h‖ Int day_tab[2][13]={ {0,31,28,31,30,31,30,31,31,30,30,31}, {0,31,29,31,30,31,30,31,31,30,30,31}}; /*统计天数函数的头部*/ { int i,j; /*判断该年是否是闰年,并将其逻辑值赋给变量i*/ 39 实验六 函数 for(j=1;j /*返回总的天数*/ } void main( ) { int y,m,d; /*提示输入年月日*/ /*分别输入年月日*/ printf(―是这年的第%d天\\n‖,day_year(y,m,d)); } 【思考】 a. 不使用二维数组存放每个月的天数,用两个一维数组分别存放闰年和非闰年的天数,重 新编写程序。 b. 用if语句对年、月、日的正确性进行验证,若不符合年、月、日的要求就退出程序。 c. 将存放每个月天数的二维数组说明为局部数组,要如何修改程序? 编程作业 1.定义一个函数,功能是计算n个学生的成绩中,高于平均成绩的人数,并作为函数值。用主函数来调用它,统计50个学生成绩中,高于平均成绩的有多少人? 40 实验六 函数 2.编写一个对n个数据从大到小的排序C函数,再编写一个计算最后得分的C函数,计算方法是:去除一个最高分,去除一个最低分,其余的平均分为参赛选手的最后得分。并在主函数中调用它们对有n个评委评分,m个选手参赛的最后得分,从大到小排序输出。 3.用一个函数来实现将一行字符串中最长的单词输出。此行字符串从主函数传递给该函数.(习题8.10) 【注意】此题要求实现两个版本,第一个版本要求把两个函数放在同一个程序文件中,作为一个文件进行编译和运行。第二个版本把两个函数分别放在两个程序文件中,作为两个文件进行编译、连接和运行。 41 实验六 函数 选做题 1.编写一个程序,包括主函数和如下子函数。 (1) 输入10个无序的整数; (2) 用冒泡法从大到小排序; (3) 要求输入一个整数,用折半查找法找出该数,若存在,在主函数中输出其所处的位置,否则,插入适当位置。 【提示】用input函数完成10个整数的录入,sort函数完成冒泡法排序,search函数完成输入数的查找。 2.根据条件进行学生成绩排名 (1)在函数中进行10个学生成绩从高到低排名 sort(int a[10]); (2)改进第一步的函数为sort(int a[],int n),进行n个学生成绩从高到低排名; (3)改进第二步的函数为sort(int a[],int n, char style), 将n个学生成绩从高到低排名,排名方式根据sort()函数的style参数进行,如style为‘a’按升序排,style为’d’按降序排;(a:ascending 升,d:descending 降) (4)在main() 函数中调用它们,实现完整的功能。 知识点描述及编程体会 实验成绩 签名 年 月 日 42