解题思路:
注意事项:
参考代码:
#include <stdio.h>
typedef struct {
int r;
int c;
int d; //数据存储
}tup;
typedef struct {
int rows;
int cols;
int number; //非零元素的个数
tup data[100000];
}num;
void change(num x,num *y){
int n=0;
y->rows=x.cols;
y->cols=x.rows;
y->number=x.number;
for (int i=0;i<x.cols;i++){ //按列来查找
for (int j=0;j<x.number;j++){ //在所有非零元素中查找
if (x.data[j].c==i){ //如果列坐标相同,则将x中的元素转置到y中
y->data[n].r=x.data[j].c;
y->data[n].c=x.data[j].r;
y->data[n].d=x.data[j].d;
n++;
}
}
}
}
int main (){
int m,n,t;
num x,y;
scanf ("%d %d",&n,&m);
x.number=0;
x.rows=n;
x.cols=m;
for (int i=0;i<n;i++){
for (int j=0;j<m;j++){
scanf ("%d",&t);
if (t!=0){
x.data[x.number].d=t;
x.data[x.number].r=i;
x.data[x.number].c=j;
x.number++;
}
}
}
change(x,&y);
t=0;
for (int i=0;i<y.rows;i++){
for (int j=0;j<y.cols;j++){
if (y.data[t].r==i&&y.data[t].c==j) //y中元素下标对应则输出
printf ("%d ",y.data[t++].d);
else
printf ("0 ");
}
printf ("\n");
}
}
0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复