题解 | #争夺前五名#

争夺前五名

http://www.nowcoder.com/practice/cd052308a1c44a88ad00255f312c3e14

    貌似题解可以附上本题的链接,那就不重复描述了,开冲。
    所有要注意的点都写在注释里了,另外交换两个数的方法用的是左老师推荐的异或,非常好使,nb就vans了。

#include <stdio.h>
int main(){
    int num, i, j;
    scanf("%d", &num);
    // 判断一下学生数量够不
    if(num<5||num>40)
        return false;
    int a[num];
    // 先初始化数组
    for(i=0;i<=num;i++)
        a[i]={0};
    for(i=0;i<num;i++)
    {
        scanf("%d", &a[i]);
        // 对当前位置上的数与它右边的数进行比较
        // 当前数小就往后挪
        // 当前数大就把下标往前移一位,再继续比
        for(j=i;j>=0;j--)
        {
            if(a[j]<a[j+1])
            {
                a[j] = a[j]^a[j+1];
                a[j+1] = a[j]^a[j+1];
                a[j] = a[j]^a[j+1];
            }
        }
    }
    // 最后输出前五个
    for(i=0;i<5;i++)
        printf("%d ", a[i]);
    return 0;
}
全部评论

相关推荐

面试摇了我吧:啊哈哈面试提前五个小时发,点击不能参加就是放弃
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务