zoukankan      html  css  js  c++  java
  • 《乱七八糟》

    /*
    功能:1,矩阵相加
         2,矩阵相乘
         3,矩阵转置
         4,冒泡排序
         5,打雷台算法
    作者:SunHongGuang
    时间:2015/12/13
    */
    #include<stdio.h>
    #include<stdlib.h>
    #define M 2
    #define N 3
    #define P 4
    void JuZhenXiangJia()
    {//两个矩阵相加
        int i,j;
        int A[M][N],B[M][N],C[M][N];
        //由用户输入矩阵A的元素
        printf("请输入矩阵A的元素(矩阵A为两行三列矩阵):
    ");
        for(i=0;i<M;i++)
        {
            for(j=0;j<N;j++)
            {
                scanf("%d",&A[i][j]);
            }
        }
        //在屏幕上显示矩阵A
        printf("
    矩阵A如下所示:
    ");
        for(i=0;i<M;i++)
        {
            for(j=0;j<N;j++)
            {
                printf("%3d",A[i][j]);
            }
            printf("
    ");
        }
        //由用户输入矩阵B的元素
        printf("
    请输入矩阵B的元素(矩阵B为两行三列矩阵):
    ");
        for(i=0;i<M;i++)
        {
            for(j=0;j<N;j++)
            {
                scanf("%d",&B[i][j]);
            }
        }
        //在屏幕上显示矩阵B
        printf("
    矩阵B如下所示:
    ");
        for(i=0;i<M;i++)
        {
            for(j=0;j<N;j++)
            {
                printf("%3d",B[i][j]);
            }
            printf("
    ");
        }
        //矩阵A和矩阵B相加的和放在矩阵C中
        for(i=0;i<M;i++)
        {
            for(j=0;j<N;j++)
            {
                C[i][j]=A[i][j]+B[i][j];
            }
        }
        printf("
    矩阵A与矩阵B的和为矩阵C如下所示:
    ");
        for(i=0;i<M;i++)
        {
            for(j=0;j<N;j++)
            {
                printf("%3d",C[i][j]);
            }
            printf("
    ");
        }
        printf("
    ");
    }
    void JuZhenXiangCheng()
    {//矩阵相乘
        int i,j,k;
        int A[M][N],B[N][P],C[M][P];
        //由用户输入矩阵A的元素
        printf("请输入矩阵A的元素(矩阵A为两行三列矩阵):
    ");
        for(i=0;i<M;i++)
        {
            for(j=0;j<N;j++)
            {
                scanf("%d",&A[i][j]);
            }
        }
        //在屏幕上显示矩阵A
        printf("
    矩阵A如下所示:
    ");
        for(i=0;i<M;i++)
        {
            for(j=0;j<N;j++)
            {
                printf("%3d",A[i][j]);
            }
            printf("
    ");
        }
        //由用户输入矩阵B的元素
        printf("
    请输入矩阵B的元素(矩阵B为三行四列矩阵):
    ");
        for(i=0;i<N;i++)
        {
            for(j=0;j<P;j++)
            {
                scanf("%d",&B[i][j]);
            }
        }
        //在屏幕上显示矩阵B
        printf("
    矩阵B如下所示:
    ");
        for(i=0;i<N;i++)
        {
            for(j=0;j<P;j++)
            {
                printf("%3d",B[i][j]);
            }
            printf("
    ");
        }
        //矩阵A乘以矩阵B积放在矩阵C中
        printf("
    ");
        for(i=0;i<M;i++)
        {
            for(j=0;j<P;j++)
            {
                C[i][j] = 0;
                for(k=0;k<N;k++)
                {
                    C[i][j] = C[i][j]+A[i][k]*B[k][j];
                }
            }
        }
        printf("
    矩阵A乘以矩阵B为矩阵C如下所示:
    ");
        for(i=0;i<M;i++)
        {
            for(j=0;j<P;j++)
            {
                printf("%5d",C[i][j]);
            }
            printf("
    ");
        }
        printf("
    ");
    }
    
    void JuZhenZhuanZhi()
    {//矩阵转置
        int i,j;
        int A[M][N],B[N][M];
        printf("请输入矩阵A的元素(矩阵A为两行三列矩阵):
    ");
        for(i=0;i<M;i++)
        {
            for(j=0;j<N;j++)
            {
                scanf("%d",&A[i][j]);
            }
        }
        printf("
    矩阵A如下所示:
    ");
        for(i=0;i<M;i++)
        {
            for(j=0;j<N;j++)
            {
                printf("%3d",A[i][j]);
            }
            printf("
    ");
        }
        //矩阵A转置为矩阵B
        for(i=0;i<M;i++)
        {
            for(j=0;j<N;j++)
            {
                B[j][i] = A[i][j];
            }
        }
        printf("转置后得到的矩阵B为:
    ");
        for(i=0;i<N;i++)
        {
            for(j=0;j<M;j++)
            {
                printf("%3d",B[i][j]);
            }
            printf("
    ");
        }
    }
    void MaoPaoPaiXu()
    {//冒泡排序
        int i,j,t;
        int a[10];
        printf("请输入10个整数:
    ");
        for(i=0;i<10;i++)
        {
            scanf("%d",&a[i]);
        }
        printf("
    ");
        for(j=0;j<9;j++)    //实现9趟比较
        {
            for(i=0;i<9-j;i++)    //在每一趟比较中比较9-j次
            {
                if(a[i]>a[i+1])
                {
                    t = a[i];
                    a[i] = a[i+1];
                    a[i+1] = t;
                }
            }
        }
        printf("排序后的数组为:
    ");
        for(i=0;i<10;i++)
        {
            printf("%3d",a[i]);
        }
        printf("
    
    ");
    }
    void DaLeiTaiSuanFa()
    {//打雷台算法求二维数组中最大值的行和列
        int i,j,row=0,colum=0,max;
        int a[N][P];
        printf("请输入二维数组的元素(二维数组是三行四列):
    ");
        for(i=0;i<N;i++)
        {
            for(j=0;j<P;j++)
            {
                scanf("%d",&a[i][j]);
            }
        }
        printf("二维数组如下:
    ");
        for(i=0;i<N;i++)
        {
            for(j=0;j<P;j++)
            {
                printf("%3d",a[i][j]);
            }
            printf("
    ");
        }
        max = a[0][0];
        for(i=0;i<N;i++)
        {
            for(j=0;j<P;j++)
            {
                if(a[i][j]>max)
                {
                    max = a[i][j];
                    row = i;
                    colum = j;
                }
            }
        }
        printf("max=%d
    row=%d
    colum=%d
    ",max,row,colum);
    }
    void TuiChu()
    {
        system("pause");
        printf("请按任意键退出...");
        exit(0);
    }
    void XuanZhe()
    {//选择操作函数
        int n;
        printf("	===============================================
    ");
        printf("		<1>矩阵相加	<2>矩阵相乘
    ");
        printf("		<3>矩阵转置	<4>冒泡排序
    ");
        printf("		<5>求二维数组中最大值的行号和列号
    ");
        printf("		<0>退出系统...
    ");
        printf("	===============================================
    ");
        while(1)
        {
            printf("请输入你的选择:");
            scanf("%d",&n);
            switch(n)
            {
            case 1:printf("***矩阵相加***
    ");JuZhenXiangJia();break;
            case 2:printf("***矩阵相乘***
    ");JuZhenXiangCheng();break;
            case 3:printf("***矩阵转置***
    ");JuZhenZhuanZhi();break;
            case 4:printf("***冒泡法排序***
    ");MaoPaoPaiXu();break;
            case 5:printf("***打雷台算法求二维数组中最大值的行号和列号***
    ");DaLeiTaiSuanFa();break;
            case 0:TuiChu();break;
            default:printf("输入的选项不存在!请重新输入:
    ");
            }
        }
    }
    void main()
    {
        XuanZhe();
        system("pause");
        return;
    }
  • 相关阅读:
    MySQL源码编译与初始化
    Nginx基础优化
    企业级NginxWeb服务优化实战(下)
    企业级NginxWeb服务优化实战(上)
    Nginx+Keepalived高可用集群应用实践
    bzoj 2141: 排队
    zoj 2112 Dynamic Rankings
    bzoj 3196: Tyvj 1730 二逼平衡树
    bzoj 4004: [JLOI2015]装备购买
    bzoj 2300: [HAOI2011]防线修建
  • 原文地址:https://www.cnblogs.com/sun-/p/5042469.html
Copyright © 2011-2022 走看看