C语言笔记8--趣味算法03

1.题目:对10个数进行排序
分析:利用循环将每一个数和后一个数进行比较,然后交换位置。

#include<stdio.h>
#include<stdlib.h>
void main()
{
    int temp;
    int a[10] = { 12, 45, 78, 2, 44, 36, 95, 102, 405, 302 };
    for (int i = 0; i < 10; i++)
    {
        for (int j = i + 1; j < 10; j++)
            if (a[i]>a[j])//升序
            {
                temp = a[i];
                a[i] = a[j];
                a[j] = temp;
            }
    }
    for (int k = 0; k < 10; k++)
    {
        printf("%d,", a[k]);
    }
    system("pause");
}

打印结果为:
这里写图片描述
2.题目:求一个3*3矩阵对角线元素之和
分析:定义一个二维数组,通过下标求出和

#include<stdio.h>
#include<stdlib.h>
void main()
{
    int a[3][3] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
    int sum=0;
    for (int i = 0; i < 3; i++)//先计算出(0,0),(1,1),(2,2)
    {
        sum += a[i][i];
    }
    for (int j = 2; j >=0; j--)//(0,2),(1,1),(2,0)
    {
        sum += a[2 - j][j];
    }
    printf("%d\n", sum);
    system("pause");
}

打印结果为:
这里写图片描述
3.题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
分析:这里我按照升序的规律插入,比较插入数与数组中每个数的大小,当插入数小于或者等于数组中某个数,该位置就是插入的位置

#define #define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
void main()
{
    int num;
    int a[10] = { 1, 2, 3, 4, 5, 9, 17, 18, 29, 102 };//升序
    int b[11];//用来储存新的数组
    printf("请输入一个要插入的整数:");
    scanf("%d", &num);
    for (int i = 0; i < 10; i++)
    {
        b[i] = a[i];
        if (num <= a[i])//直到有小于或者等于的,即是要插入的位置
        {
            b[i] = num;
            for (int j = i; j < 10; j++)
            {
                b[j + 1] = a[j];
            }
            break;
        }
    }
    for (int i = 0; i < 11; i++)
    {
        printf("%d,", b[i]);
    system("pause");
}

结果:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/weixin_40850689/article/details/82216200