C语言 【数组的综合练习】

ed03158deef643cd85ad394a3cab3574.png

 原题链接:https://www.imooc.com/code/5738​​​​​​​​​​​​​​​​​​​​​​​

这道题主要想考察做题者灵活使用数组的能力,主要有以下两个点。

1.正确认识和理解数组。

2.是否能熟练的使用冒泡排序法对一个数组进行排序。

好,废话不多说。我们直接上代码!

​​​​​​​//在一个长度为10的整型数组里面,保存了班级10个学生的考试成绩。要求编写5个函数,分别实现计算考试的总分,最高分,最低分,平均分和考试成绩降序排序。

#include<stdio.h>

int main(void)

{

      int score[10]={67,98,75,63,82,79,81,91,66,84};

       int x,a;

       int y;

      int sum = 0;//学生成绩总和

      int max;//学生成绩的最高分

      int min;//学生成绩的最低分

       max = min = score[0];

      int average = 0;//学生成绩的平均分

     int arr[10];//降序排列后的数组

      

     for(int k = 0;k<10;k++)

     {

         sum +=score[k];

        

         if(score[k]<max) {

             max=score[k];}

        if(score[k]>min){

           min = score[k];

        }   

     }

average = sum/10;

for(x = 0;x<=10;x++)

 for(a = 0;a<=10;a++)

 {

   if(score[x]<score[a])

   { y = score[x];

      score[x]=score[a];

      score[a]=y;

    }

 }

 printf("降序排列后的成绩是:\n");

 for(int k = 0;k<=10;k++)

 { if(score[k]==0)

      continue;

   printf("%d\n",score[k]);

 }

printf("全班成绩的总分是:%d\n平均成绩是:%d\n最低成绩是:%d\n最高成绩是:%d\n",sum,average,max,min);

}

a7cb3857d53d4c51a6558e20e1ff09e6.png

 这段代码先利用循环求出最大值和最小值,我来解释一下为什么要用两个if,因为冒泡排序是从第二个数和后面一个数字比较;如果大于前面这个就和前面这个数交换位置。所以最大值和最小值的数组下标都在score【0】,也就是数组第一个值。这是我们完成的第一个需求。6b769d03116a45e996f6191b0c76534b.gif

 

bd5e739de1db4333976a1dacd7b1e3c1.png

 这才是我们完整的排序过程。

下面是运行结果,可以看到我们的数组都按照从小到大的顺序排序好了,那么冒泡排序的任务就完成了。

2c2f28a157c54e02a4a6254a6d4928de.png

 


这是我的第一期分享自己的见解,如果有误导的地方欢迎各位指正我的错误,不过既然来都来了,就求求各位看官给个三连吧!

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术鼠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值