lsmCC 发表于 2023-10-8 16:01:14

牛客李在赣神魔

题目链接:https://ac.nowcoder.com/acm/contest/19306/1024
#include <iostream>
using namespace std;
char a;
int main()
{
    int n;
    cin>>n;
    for(int i=0;i<n;i++ )
    {
      for(int j=0;i<n;i++)
      {
            cin>>a;
      }
    }
    for(int i=0;i<n;i++ )
    {
      for(int j=n-1;j>=0;j--)
      {
            cout<<a;
      }
      cout<<endl;
      
    }
   
}
我感觉逻辑上没有问题,为什么只输出aaa呢,应该怎么改

isdkz 发表于 2023-10-8 16:01:59

问题出在第11行的循环条件上,你错误地使用了 i<n 来代替 j<n。这导致内层循环没有正确执行,只有第一行的数据被正确读取。要修复这个问题,你只需要将第11行的循环条件改为 j<n 即可。

修改后的代码如下:

#include <iostream>
using namespace std;
char a;
int main()
{
    int n;
    cin >> n;
    for(int i = 0; i < n; i++)
    {
      for(int j = 0; j < n; j++)
      {
            cin >> a[ i];
      }
    }
    for(int i = 0; i < n; i++)
    {
      for(int j = n - 1; j >= 0; j--)
      {
            cout << a[ i];
      }
      cout << endl;
    }
    return 0;
}


这样修改后,程序将正确输出矩阵的转置结果。
页: [1]
查看完整版本: 牛客李在赣神魔