第八单元 数组2(二维数组+简单排序算法)

1 矩阵变换

#include <stdio.h>
int main()
{
    int a[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}, i, j, k;
    for (i = 0; i < 3; i++)
    {
        a[i][i] *= a[i][i];
        for (j = 0; j < i; j++)
        {
            a[i][j] *= 2;
        }
        for (k = 2; k > i; k--)
        {
            a[i][k] += 3;
        }
    }
    for (i = 0; i < 3; i++)
    {
        for (j = 0; j < 3; j++)
        {
            printf("%3d", a[i][j]);
        }
        printf("\n");
    }
    return 0;
}

2 对称矩阵判断

#include<stdio.h>
#define N 4
int fun(int a[N][N]);
int main()
{
    int a[N][N], i, j;
    for (i = 0; i <= N - 1; i++)
        for (j = 0; j <= N - 1; j++)
            scanf("%d", &a[i][j]);
    if (/*1*/ fun(a)==1/*1*/)
        printf("YES\n");
    else
        printf("NO\n");
    return 0;
}
int fun(int a[N][N])
{
    /* 2 */
    int i, j;
    for (i = 0; i < N;i++){
        for (j = 0; j < i;j++){
            if(a[i][j]!=a[j][i]){
                return 0;
            }
        }
    }
    return 1;
    /*2*/
}
/*
1 2 3 4
2 1 4 3
3 4 1 2
4 3 2 1
*/

3 选择排序

#include <stdio.h>
int main()
{
    int n, i, j, min_at, temp, i1, flag;
    scanf("%d", &n);

    int a[n];
    for (i = 0; i < n; i++)
    {
        scanf("%d", &a[i]);
    }
    for (i = 0; i < n - 1 || n==1; i++)
    {
        min_at = i;
        flag = 0;
        for (j = i + 1; j < n; j++)
        {

            if (a[min_at] > a[j])
            {
                min_at = j;
                flag = 1;
            }
        }

        temp = a[min_at];
        a[min_at] = a[i];
        a[i] = temp;

        if (flag || n==1)
        {
            for (i1 = 0; i1 < n; i1++)
            {
                printf("%d ", a[i1]);
                if (n==1)
                {
                    n = 0;
                }
            }
            printf("\n");
        }
        else
        {
            break;
        }
    }

    return 0;
}

4 冒泡排序

#include <stdio.h>
int main()
{
    int n, i, j, temp, i1, flag;
    scanf("%d", &n);

    int a[n];
    for (i = 0; i < n; i++)
    {
        scanf("%d", &a[i]);
    }
    for (i = 0; i < n - 1 || n == 1; i++)
    {
        flag = 0;
        for (j = 0; j < n - i - 1; j++)
        {
            if (a[j] > a[j + 1])
            {
                temp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = temp;
                flag = 1;
            }
        }
        if (flag || n == 1)
        {
            for (i1 = 0; i1 < n; i1++)
            {
                printf("%d ", a[i1]);
                if (n == 1)
                {
                    n = 0;
                }
            }
            printf("\n");
        }
        else
        {
            break;
        }
    }
    return 0;
}

5 杨辉三角

#include <stdio.h>
int main()
{
    int n, i, j;
    scanf("%d", &n);
    int a[n][n] = {1};
    for (i = 0; i < n; i++)
    {
        for (j = 0; j <= i; j++)
        {
            a[i][j] = 1;
            if (j > 0)
            {
                a[i][j] = a[i - 1][j] + a[i - 1][j - 1];
            }
        }
    }
    for (i = 0; i < n; i++)
    {
        /*for (j = 1; j <= n - i; j++)//杨辉金字塔
         {
             printf("  ");
         }*/
        for (j = 0; j <= i; j++)
        {
            printf("%4d", a[i][j]);
        }
        printf("\n");
    }
    return 0;
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值