矩阵的交换

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值