栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

矩阵的交换

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

矩阵的交换

第一行包含两个整数n和m,表示一个矩阵包含n行m列。 (1≤n≤10,1≤m≤10),共输入n*m个数,表示第一个矩阵中的元素。接下来一行输入k,表示要执行k次操作(1≤k≤5)。接下来有k行,每行包括一个字符t和两个数a和b,,t代表需要执行的操作,当t为字符'r'时代表进行行变换,当t为字符'c'时代表进行列变换,a和b为需要互换的行或列(1≤a≤b≤n≤10,1≤a≤b≤m≤10)。当t为别的字符时不需要处理

主要的思路是:先定义一个二位数组,存放他要输入的数据,在定义一个字符变量储存下一步操作所对应的字符,后面在定义两个整型变量是什么就行,其实你运用while循环中的EOF判断条件就不需要管他要循环几次了,eof是会根据系统只要有数据的输入他就会继续循环,一直读到没有数据的输入。

代码如下:

#include
int main()
{
    int n , m;
    scanf("%d%d",&n,&m);
    int a[n][m];
    for( int i = 0 ; i < n ; i++)
    {
        for( int j = 0 ; j < m ; j++)
        {
            scanf("%d",&a[i][j]);
        }
    }
       char op ;//定义op,根据op的值进行判断所要进行的操作
        int h , l;
        while(scanf("%c%d%d",&op,&h,&l) != EOF)
        {
        if( op == 'r')
        {
            int t;
                for( int j = 0 ; j < m; j++)//进行指定行与行之间的转换
                { 
                    t = a[h-1][j];
                    a[h-1][j] = a[l-1][j];
                    a[l-1][j] = t;
                }
        }
        else
            if( op == 'c')
            {
                int t ;
                for( int i = 0 ; i < n ;i++)//进行列与列之间的转换
                {
                    t = a[i][h-1];
                    a[i][h-1] = a[i][l-1];
                    a[i][l-1] = t;
                }
            }
    }
    for( int i = 0 ; i < n ; i++)
    {
        for( int j = 0 ; j < m ; j++)
        {
            printf("%d ",a[i][j]);
        }
        printf("n");
    } 
    return 0;
}

eof的补充:在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以字符的ASCII代码值的形式存放。我们知道,ASCII代码值的范围是0~127,不可能出现-1,因此可以用EOF作为文件结束标志。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/692207.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号