矩阵的交换

矩阵的交换,第1张

矩阵的交换

第一行包含两个整数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作为文件结束标志。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5692692.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存