zoukankan      html  css  js  c++  java
  • C语言 百炼成钢12

    //题目34:对10个数进行排序
    
    #include<stdio.h>
    #include<stdlib.h>
    
    //分析:使用冒泡排序
    
    void main(){
        int arr[10] = { 9, 2, 4, 7, 5, 71, 45, 46, 7, 8 };
        //定义临时变量
        int temp = 0;
        //冒泡排序  双循环
        for (int i = 0; i < 10; i++)
        {
            for (int j = i+1; j <10; j++)
            {
                if (arr[j-1]>arr[j])
                {
                    temp = arr[j];
                    arr[j] = arr[j - 1];
                    arr[j - 1] = temp;
                }
            }
        }
        for (int i = 0; i < 10; i++)
        {
            printf("%d--", arr[i]);
        }
        system("pause");
    }

    //题目35:求一个3*3矩阵对角线元素之和 
    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<stdlib.h>
    
    //分析:就是一个二维数组,求a[0][0]+a[1][1]+a[2][2]的和,
    
    void main(){
        int arr[3][3] = { 0 };
        //二维数组的遍历需要使用双for循环
        for (int i = 0; i < 3; i++)
        {
            for (int j = 0; j < 3; j++)
            {
                scanf("%d", &arr[i][j]);
            }
        }
        int sun = 0;
        for (int i = 0; i < 3; i++)
        {
            for (int j = 0; j < 3; j++)
            {
                //对角线上的元素满足i=j
                if (i==j)
                {
                    sun += arr[i][j];
                }
                printf("%5d",arr[i][j]);
            }
            printf("
    ");
        }
        printf("
    求一个3*3矩阵对角线元素之和是%d",sun);
        system("pause");
    }

    //题目36:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
    
    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<stdlib.h>
    
    //分析:for循环,遍历每个数,设定数组从大到小,一个个与输入的数进行比较,插入对应的空中
    //这里需要用到动态分配内存,因为数组的元素是固定的不可以随意插入
    
    void main(){
        int *p = (int *)calloc(sizeof(int), 10);
        printf("原来的数组
    ");
        //为这个数组赋值
        for (int i = 0; i < 10; i++)
        {
            *(p + i) = i*2;
            printf("%5d", *(p + i));
        }
        printf("
    ");
        //已经排好序的数组已经准备好了
        int num = 0;
        printf("请输入要插入的数字
    ");
        scanf("%d",&num);
        //再次用realloc函数分配内存
        //新的大小可大可小(但是要注意,如果新的大小小于原内存大小,可能会导致数据丢失,慎用!)
        int *p1 = realloc(p, sizeof(int)*11);
        //给最后一个元素赋值0
        *(p1 + 10) = 0;
        int temp = 0;
        //从前往后排序,存在着逻辑上的不方便。因为就算我找到了位置,后面的所有元素都要向后移动一位
        //那么有可能需要再写一个循环,来移动数组元素的位置
        /*for (int i = 0; i < 11; i++)
        {
            if (*(p1+i)>num)
            {
    
            }
        }*/
        //我决定从后往前排序,因为最后面一个位置本来就是空着的
        for (int i = 9; i>=0; i--)
        {
            if (*(p1 + i)<num)
            {
                *(p1 + i + 1) = num;
                //换完位置后退出循环
                break;
            }
            else{
                //将指针内的数据向后移动一位,此时p1+i这个位置已经空出来了
                *(p1 + i + 1) = *(p1 + i);
            }
        }
        printf("
    新排序的数组
    ");
        for (int i = 0; i < 11; i++)
        {
            printf("%5d",*(p1+i));
        }
        //释放堆内存
        free(p1);
    
        system("pause");
    }

  • 相关阅读:
    新概念第二册(1)--英语口语听力课1
    外企面试课程(一)---熟悉常见的缩略词
    公司 邮件 翻译 培训 长难句 结课
    workflow
    公司 邮件 翻译 培训 长难句 20
    公司 邮件 翻译 培训 长难句 19
    Engineering Management
    公司 邮件 翻译 培训 长难句 18
    公司 邮件 翻译 培训 长难句 17
    第14.5节 利用浏览器获取的http信息构造Python网页访问的http请求头
  • 原文地址:https://www.cnblogs.com/zhanggaofeng/p/5153614.html
Copyright © 2011-2022 走看看