《乱七八糟》

/*
功能: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;
}
原文地址:https://www.cnblogs.com/sun-/p/5042469.html