赛码C++读取未给出行列数的矩阵/二维矩阵转置后进行输出
【输入问题】在考试时,有些时候没有给出数据的行数n,对于矩阵,可能行数n和列数m都未给出,本题就是为了训练这类题目的输入。(做题前可以先阅读:
)
对于给定的一个二维矩阵,请转置后进行输出。
输入描述
对于一个n*m的矩阵,输入有n行,每行是m个以空格分隔的数字。
输出描述
n*m矩阵的转置矩阵。输出m行,每行是n个空格分隔的数据。
示例
输 入:
1 2 3 4 5 6
返回
1 4 2 5 3 6
#include <iostream> #include <vector> #include <string> #include <sstream> using namespace std; /*首先通过getline逐行读取输入直到遇到空行为止, 然后利用字符串流stringstream解析每行数据, 并填充到二维矩阵中。 最后按转置规则输出转置后的矩阵。*/ int main() { // 定义二维矩阵 vector<vector<int>> matrix; string s; int rows=0; // 逐行读取输入直到遇到空行为止 while(getline(cin,s)) { // 如果遇到空行则退出循环 if(s.size()==0) break; // 使用字符串流解析每行数据并填充矩阵 stringstream ss(s); matrix.push_back(vector<int>()); rows++; int x; while(ss >> x) //x是从字符串s中读取的整数 matrix[rows-1].push_back(x);//将x插入matrix[rows-1]末尾 } // 输出转置矩阵 int cols = matrix[0].size(); for (int i = 0; i < cols; i++) { for (int j = 0; j < rows; j++) { cout << matrix[j][i]; if (j != rows - 1) { cout << " "; } } cout << endl; } return 0; } /*while(ss >> x) 这行代码是C++中的一种常用语法,表示从输入流ss中连续读取数据,并将读取的数据赋值给变量x。这里ss >> x是一个输入操作符,用于从流中读取数据,并返回一个引用到该流。这个操作符的作用是将流中的数据按照特定类型读取并赋值给变量。 具体解释如下: ss: 输入流对象,这里是一个字符串流对象。 >>: 输入操作符,表示从流中读取数据。 x: 被赋值的变量,读取到的数据会被赋值给这个变量。 在循环中使用while(ss >> x)可以实现连续读取数据,直到无法读取或遇到流结束为止。这种写法常用于从输入流中读取多个数据并处理,直到流中没有更多数据可读为止。 */
arr = [] while True: s = input() if s != "": arr.append(list(map(int, s.split()))) # print("a", arr) else: break for i in range(len(arr[0])): for j in range(len(arr)): if j < len(arr) - 1: print(str(arr[j][i]) + " ", end="") else: print(str(arr[j][i]))#C++##赛码题库##秋招#
2025届秋招收集题库 文章被收录于专栏
专涵盖众多行业领先企业的真题和高频面试题型,提供全面的能力测试和专业知识考核。通过实战模拟,帮助求职者高效备战秋季招聘,提升机考技巧,增强竞争力,为未来职场之路打下坚实基础。