zhaoshuhan_ 2024-04-30 09:27 采纳率: 83.3%
浏览 3
已结题

C语言数组问题求解!😓

随机生成10个1到30以内的整数,并把这10个整数输出在屏幕上。用冒泡排序法,把这个10个整数按照从大到小的顺序排列并输出在屏幕上。从键盘输入数字12,把该数字插入到数组中,使插入之后的数列任然有序,并输出该数列。

  • 写回答

4条回答 默认 最新

  • 专家-皆知 2024-04-30 09:27
    关注

    参考免费微信小程序:皆我百晓生 作答,经由专家-皆知整理回复,如问题解决,望采纳;如仍有疑问,请评论回复。

    当然,我会详细地帮助您解决这个问题。下面的C语言程序将完成您的要求:

    1. 生成并输出10个1到30之间的随机整数
    2. 使用冒泡排序法将这些整数按从大到小排序并输出
    3. 接收键盘输入的数字12,并在保持排序的情况下将其插入数组中,然后输出新的数组。

    首先,我们需要包含必要的头文件,然后定义一个函数来生成随机数,一个用于冒泡排序,以及主函数来完成整个流程。

    #include <stdio.h>
    #include <stdlib.h> // 用于rand()和srand()
    #include <time.h>   // 用于time()
    
    // 生成随机数的函数
    int generateRandomNumber(int min, int max) {
        return rand() % (max - min + 1) + min;
    }
    
    // 冒泡排序函数(从大到小)
    void bubbleSortDescending(int arr[], int n) {
        for(int i = 0; i < n-1; i++) {
            for(int j = 0; j < n-i-1; j++) {
                if(arr[j] < arr[j+1]) {
                    // 交换元素
                    int temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }
    }
    
    // 插入数字并保持排序
    void insertSorted(int arr[], int *size, int value) {
        if(*size == 10) {
            printf("数组已满,无法插入。\n");
            return;
        }
        
        arr[*size] = value;
        (*size)++;
        
        // 再次排序
        bubbleSortDescending(arr, *size);
    }
    
    int main() {
        srand(time(NULL)); // 初始化随机数种子
        
        int numbers[10]; // 存储10个随机数
        int size = 0;    // 数组实际使用的大小,初始化为0
        
        // 生成并填充数组
        for(int i = 0; i < 10; i++) {
            numbers[i] = generateRandomNumber(1, 30);
            printf("%d ", numbers[i]);
            size++; // 每添加一个元素,size增加
        }
        printf("\n"); // 换行
        
        // 冒泡排序
        bubbleSortDescending(numbers, size);
        printf("排序后的数组(从大到小): ");
        for(int i = 0; i < size; i++) {
            printf("%d ", numbers[i]);
        }
        printf("\n");
        
        // 接收用户输入
        int input;
        printf("请输入数字12: ");
        scanf("%d", &input);
        
        // 插入数字并输出结果
        insertSorted(numbers, &size, 12);
        printf("插入12后并排序的数组: ");
        for(int i = 0; i < size; i++) {
            printf("%d ", numbers[i]);
        }
        
        return 0;
    }
    

    这段代码首先生成10个1到30之间的随机数,并打印出来。接着对这些数字进行冒泡排序,使得它们从大到小排列。然后,程序会提示用户输入数字12,将这个数字插入到数组中,并确保数组仍然有序,最后输出排序后的数组。请注意,如果数组已经满了(这里是10个元素),则不会插入新的元素,并会告知用户数组已满。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 5月29日
  • 已采纳回答 5月21日
  • 创建了问题 4月30日

悬赏问题

  • ¥100 matlab2009 32位一直初始化
  • ¥15 Expected type 'str | PathLike[str]…… bytes' instead
  • ¥15 为什么在iis上部署网站,服务器可以访问,但是本地电脑访问不了
  • ¥15 三极管电路求解,已知电阻电压和三级关放大倍数
  • ¥15 ADS时域 连续相位观察方法
  • ¥15 Opencv配置出错
  • ¥15 关于模型导入UNITY的.FBX: Check external application preferences.警告。
  • ¥15 气象网格数据与卫星轨道数据如何匹配
  • ¥100 java ee ssm项目 悬赏,感兴趣直接联系我
  • ¥15 微软账户问题不小心注销了好像