系统随机输出n个数,求出第二大数的值

该博客介绍了三种方法来找出系统随机生成的n个数中的第二大的数值。第一种方法通过比较每次生成的随机数与当前最大值更新最大值和次大值。第二种方法同样利用比较更新次大值,但在找到新的次大值时会调整最大值。第三种方法通过排序整个数列然后返回倒数第二个元素作为第二大的数值。
部署运行你感兴趣的模型镜像



    int max1 = 0, max2 = 0;

    int n = 0;

    printf("Enter n : ");

    scanf("%d", &n);


    for (int i = 0; i < n; i++){

        unsigned int random = arc4random();

        printf("%u\n", random);

        if (random > max1){

            max2 = max1;

            max1 = random;

        }

        if (random <= max1 && random >= max2){

            max2 = random;

        }

    }

    printf("第二大值为%u\n", max2);





    

    int max1 = 0, max2 = 0;

    int n = 0;

    printf("enter n :");

    scanf("%d", &n);

    

    for (int i = 0; i < n; i++) {

        unsigned int random = arc4random();

        printf("%u\n", random);

        if(max2 < random){

            max2 = random;

            if (max1 < max2){

                int temp = 0;

                temp = max2;

                max2 = max1;

                max1 = temp;

            }

        }

    }

    

    printf("第二大值为%u\n", max2);

    

    

    

    

    



    int n = 0;

    printf("enter geshu n : ");

    scanf("%d", &n);


    unsigned int array[10000] = {0};


    for (int i = 0; i < n; i++) {

        unsigned int random = arc4random();

        array[i] = random;

        printf("array[%d] = %u\n", i, random);

    }


    for (int i = 0; i < n - 1; i++) {

        for (int j = 0; j < n - i - 1; j++) {

            if (array[j] > array[j + 1]) {

                unsigned int temp = 0;

                temp = array[j];

                array[j] = array[j + 1];

                array[j + 1] = temp;

            }

        }

    }


    printf("%u\n", array[n - 2]);


    for (int i = 0; i < n; i++){

        printf("[%2d] : %u\n", i, array[i]);

    }


您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

图灵学校举办了一个有趣的活动,N 名同学站成一排,他们的年龄恰好是 1 到N,需要注意的是他们并不是按照年龄的小排列的,而是随机排列的。 游戏的规则是同学们快速计算出,如果在这 N 名同学的小组中,取出所有区间长度 ≥ 2 ≥2 的包含连续数的区间,并求出每个区间中第 2 的数,那么这些数的和最终是多少? 比如有 4 名同学,他们排好队之后,4 个人的年龄分别是 4 2 3 1。 如果取长度为 2 的区间可以取:(4,2)(2,3)(3,1),这 3 个区间的次大数的和为 2+2+1=5。 如果取长度为 3 的区间可以取:(4,2,3)(2,3,1),这 2 个区间的次大数的和为 3+2=5。 如果取长度为 4 的区间可以取:(4,2,3,1),这 1 个区间的次大数的和为 3。 因此,所有长度≥2 的包含连续数的区间中的次大数的和为 5+5+3=13。 输入格式 输入文件 activity.in。 第一行,一个整数 N,表示同学的人数。 第二行,N 个整数,这 N 个整数一定是数字 1 到 N 打乱次序后的结果。 输出格式 输出文件 activity.out。 输出一个整数,表示所有区间长度≥2 的包含连续数的区间中第 2 的数的和。 样例 1 输入 4 4 2 3 1 样例 1 输出 13 样例 2 输入 6 1 6 2 4 3 5 样例 2 输出 50 样例 3 输入 12 12 1 3 2 10 8 9 7 6 4 5 11 样例 3 输出 493 数据范围 30 % 的数据,保证 2 ≤ N ≤ 100 。 30%的数据,保证2≤N≤100。 100 % 的数据,保证 2 ≤ N ≤ 1000 。 100%的数据,保证2≤N≤1000。(c++)
10-18
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值