第一行包含两个整数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是会根据系统只要有数据的输入他就会继续循环,一直读到没有数据的输入。
代码如下:
#includeint 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作为文件结束标志。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)