C语言程序设计(第5章数组)5 |
|
www.nanhushi.com 佚名 不详 |
5.5 应用程序举例 [例5-6] 为比赛选手评分。 计算方法:从1 0名评委的评分中扣除一个最高分,扣除一个最低分,然后统计总分,并除以8,最后得到这个选手的最后得分(打分采用百分制)。 #include<stdio.h> main( ) { int score[10]; / * 10 个评委的成绩* / float mark; /* 最后得分* / int i; int max = -1; / *最高分* / int min = 101; /*最低分* / int sum = 0; /*10个评委的总和* / for( i = 0 ; i < 10 ; i ++) { printf("Please Enter the Score of No. %d",i + 1 ) ; scanf("%d\n",&score[i]); sum = sum + score[i]; } for(i = 0 ; i < 10 ; i++) { if(score[i] > max) max = score[i]; } for(i = 0;i < 10 ; i++) { if(score[i]<min) min = score[i]; } mark = ( sum - min - max ) / 8.0; printf("The mark of the player is %.1f\n" ,mark); }
[例5-7] 数列排序,采用选择法实现对有5个数的数列进行排序。 选择法的算法思想是:(降序) 1. 将待排序的n个数放入数组num中,即num[0]、num[1]、. . . num[n-1]。 2. 让num[ 0 ]与后续num[1] . . . num[ n - 1 ]依次比较,保证大数在前、小数在后。此次比较,num[0]是数组中最大。 3. 余下n - 1个元素 4. num[1]与num[ 2 ] . . . num[ n - 1]依次比较,大数在前、小数在后,此次num[ 1 ]是全部元素的最大。 num[ n - 2 ]与num[ n - 1 ]比较,num[ n - 2 ]存大数。 num[ n - 1 ]存小数,比较结束,整理有序。 例:待排序5个数为: 44 76 82 63 71 一趟排序: 1次比较:76 44 82 63 71 2次比较:82 44 76 63 71 3次比较:82 44 76 63 71 4次比较:82 44 76 63 71 最大 #include <stdio.h> main( ) { int num[5]; int i,j ; int temp; num[0]=94; num[1]=76; num[2]=82; num[3]=63; num[4]=71; for(i=0; i<4; i++) for(j=i+1; j<5; j++) { if(num[i]>num[j]) { temp = num[i]; num[i] = num[j]; num[j] = temp; } } for(i=0; i<5; i++) printf("%4d" ,num[i]); printf("ok\n"); } 这是一个非常简单的排序程序,我们只需稍加扩展就可以编制出很多功能强大的管理程序,如学生统计总分、平均排列年级名次等。
[例5-8] 简易学生成绩查询系统。 图5 - 3为学生成绩登记表,下例程序完成如下功能: 1) 根据输入的学生学号,给出各次考试成绩及平均成绩; 2) 根据输入考试的次数,打印出该次考试中每个学生的成绩,并给出平均分; 3) 根据学号查出学生某次考试成绩; 4) 录入考试成绩。
#include <stdio.h> main( ) { int select; int i,j ; int score[5][7]; int average=0; int sum=0; do{ printf("本程序有4项功能\n"); printf("1、根据学号查询学生成绩\n"); printf("2、根据考试号统计成绩\n"); printf("3、根据考试号和学号查询成绩\n"); printf("4、成绩录入\n"); printf("0、退出\n"); printf("请输入选择(0 - 4 ):"); scanf("%d\n",&select); switch(select) { case 0: printf("OK\n"); exit(0) break; case 1: printf("输入学号:"); scanf("%d\n",&i); for(j=1; j<7; j++) { printf("第%d科成绩是%d\n",j,score[i][j]); sum += score[i][j]; } average = sum/6; printf("学生的平均成绩是%d\n",average); break; case 2: printf("输入考试号:"); scanf("%d\n",&j); for(i=1; i<5; i++) { printf("第%d号学生本科成绩是%d\n",i,score[i][j]); sum += score[i][j]; } average = sum/4; printf("本科平均成绩是%d\n",average); break; case 3: printf("输入学号和考试号:"); scanf("%d %d\n",&,i,&j); printf("第%d 号学生的第%d 科考试成绩是%d\n",i, j,score[i][j]); break; case 4: printf("请输入成绩\n"); for(i=1; i<5; i++) for(j=1; j<7; j++) scanf("%d\n",&score[i][j]); break; default: break; }while(1); } 从本例中可以看出,当涉及到二维数组时,通常用两重for循环来存取元素。
|
|
|
文章录入:杜斌 责任编辑:杜斌 |
|
上一篇文章: C语言程序设计(第5章数组)4 下一篇文章: C语言程序设计(第6章指针) |
【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |
|
|