因为那个k之后是输入字符和两个数字,所以想用下结构体数组,顺便锻炼一下自己对于结构体的应用,可是没想到却弄了这么久。
有几个注意事项,一是结构体数组不能对他进行赋值也就是不能结构体数组.成员变量 = 你读入的某个数,而是应该直接scanf 结构体数组.成员变量即可;二是需要getchar去吃掉空格和回车,不然scanf无法读到想要的r和c,这两点鼓捣了我好一会。
早知道不用结构体数组了,直接for输入转换次数,在循环中每转换一次,用变量读入对应的值就好(也需要注意getchar吃掉空格换行)变一次结果就好。
我用结构体数组相当于多此一举,多了一步去接收变换的参数。
#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]);
}
}
int k;
scanf("%d",&k);
getchar();
struct operation{
char c;
int a;
int b;
};
struct operation op[k];
for(int i = 0;i<k;i++){
scanf("%c",&op[i].c);
scanf("%d",&op[i].a);
scanf("%d",&op[i].b);
getchar();
}
for(int i = 0;i<k;i++){
if(op[i].c == 'r'){
for(int j = 0;j<m;j++){
int temp = a[op[i].a-1][j];
a[op[i].a-1][j] = a[op[i].b-1][j];
a[op[i].b-1][j] = temp;
}
}
else if(op[i].c == 'c'){
for(int j = 0;j<n;j++){
int temp = a[j][op[i].a-1];
a[j][op[i].a-1] = a[j][op[i].b-1];
a[j][op[i].b-1] = temp;
}
}
}
for(int i = 0;i<n;i++){
for(int j = 0;j<m;j++){
printf("%d ",a[i][j]);
}
printf("\n");
}
return 0;
}



京公网安备 11010502036488号