614—维数组应用举例 【例6.1】将10个人的成绩输入计算机后按逆序显示。 #define n 10 main( i int i; float scoreNIi for(i=0; K<N; i++) scanf(%f, &scoreiD for (i=N-1; i>=0; i--) printf(%o6.1f, score i; }「运行情况如下: 67748992346783957378k 78.073.095.083.067.034.092.089.074.067.0 2021/2/21
2021/2/21 11 6.1.4 一维数组应用举例 【例6.1】将10个人的成绩输入计算机后按逆序显示。 #define N 10 main( ) { int i;float score[N]; for (i=0; i<N; i++) scanf("%f",&score[i]); for (i=N-1; i>=0; i--) printf("%6.1f",score[i]); } 运行情况如下: 67 74 89 92 34 67 83 95 73 78 78.0 73.0 95.0 83.0 67.0 34.0 92.0 89.0 74.0 67.0
【例62】输入5个整数,找出最大数和最小数 所在位置,并把二者对调,然后输出。 思路: ●求最大/小值采用打擂台的方法。 ●定义一维数组a存放被比较的数。 ●定义变量max:最大值,min:最小值, k:最大值下标,j:最小值下标 ●各数依次与擂主进行比较, 若a[i>max则:max=alil;k 否则判断:若ali<min则:min=ai;j=i; ●当所有的数都比较完之后,将ai-=max;=min; ●输出a数组。 2021/2/21
2021/2/21 【例 12 6.2】输入5个整数,找出最大数和最小数 所在位置,并把二者对调,然后输出。 思路: ⚫求最大/小值采用打擂台的方法。 ⚫定义一维数组a存放被比较的数。 ⚫定义变量max:最大值, min:最小值, k:最大值下标 , j:最小值下标 。 ⚫各数依次与擂主进行比较, 若a[i]>max 则: max=a[i]; k=i; 否则判断: 若a[i]<min 则: min=a[i]; j=i; ⚫当所有的数都比较完之后,将a[j]=max; [k]=min; ⚫输出a数组
13 main () i int a 5l, max, min, i,j, k; 程序运行情况如下: for(i=0;i<5;i++) 57231 scanf(%od", &aiD; 5 23 min=a 0]; max=a0; j=k=0; for(i=1;i5;i++) if(ai]<min)i min=ai; j=i;) else if(ai>max)i max=ail; ki; ajl=max; a k=min; for〔i=0;i5;i++) printf(%o5d"ali; printf(in); 2021/2/21
2021/2/21 13 main( ) { int a[5],max,min,i,j,k; for(i=0; i<5; i++) scanf("%d",&a[i]); min=a[0]; max=a[0]; j=k=0; for (i=1; i<5; i++) if (a[i]<min) { min=a[i]; j=i; } else if (a[i]>max) { max=a[i]; k=i ; } a[j]=max; a[k]=min; for (i=0; i<5; i++) printf("%5d",a[i]); printf("\n"); } 程序运行情况如下: 5 7 2 3 1 5 1 2 3 7
14 例64】冒泡法排序(从小到大)。 以6个数:3、7、5、6、8、0为例。 第一趟排序情况如下 375680 第一次3和7比较,不交换375680 第二次7和5比较,交换357680 第三次7和6比较,交换356780 第四次7和8比较,不交换356780 第五次8和0比较,交换356708 在第一趟排序中,6个数比较了5次,把6个数中 的最大数8排在最后。 2021/2/21
2021/2/21 14 【例6.4】冒泡法排序(从小到大)。 以6个数:3、7、5、6、8、0为例。 第一趟排序情况如下: 3 7 5 6 8 0 第一次 3和7比较,不交换 3 7 5 6 8 0 第二次 7和5比较,交换 3 5 7 6 8 0 第三次 7和6比较,交换 3 5 6 7 8 0 第四次 7和8比较,不交换 3 5 6 7 8 0 第五次 8和0比较,交换 3 5 6 7 0 8 在第一趟排序中,6个数比较了5次,把6个数中 的最大数8排在最后
冒泡法排序(续) 15 第二繃排序情况如下 356708 第一次3和5比较,不交换356708 第二次5和6比较,不交换356708 第三次6和7比较,不交换356708 第四次7和0比较,交换356078 在第二趟排序中,最大数8不用参加比较,其余的5个数比 较了4次,把其中的最大数7排在最后,排出78。 以此类推 第三趟比较3次,排出678 第四趟比较2次,排出5678 第五趟比较1次,排出35678 最后还剩下1个数0,不需再比较,得到排序结果: 035678 2021/2/21
2021/2/21 15 冒泡法排序 (续) 第二趟排序情况如下: 3 5 6 7 0 8 第一次 3和5比较,不交换 3 5 6 7 0 8 第二次 5和6比较,不交换 3 5 6 7 0 8 第三次 6和7比较,不交换 3 5 6 7 0 8 第四次 7和0比较,交换 3 5 6 0 7 8 在第二趟排序中,最大数8不用参加比较,其余的5个数比 较了4次,把其中的最大数7排在最后,排出7 8。 以此类推: 第三趟比较3次,排出 6 7 8 第四趟比较2次,排出 5 6 7 8 第五趟比较1次,排出 3 5 6 7 8 最后还剩下1个数0,不需再比较,得到排序结果: 0 3 5 6 7 8