13 条题解

  • 10
    @ 2023-7-16 21:53:39
    #include <iostream>
    using namespace std;
    int a[10][10];
    int main()
    {
        int n,m;
        for (int i = 1; i <= 5; i++)
        {
            for (int j = 1; j <= 5; j++)
            {
                cin >> a[i][j];             
            }
           
        }
    
        cin >> n >> m;
        for (int i = 1; i <= 5; i++)
        {
            int temp = a[n][i];
            a[n][i] = a[m][i];
            a[m][i] = temp;
        }
        for (int i = 1; i <= 5; i++)
        {
            for (int j = 1; j <= 5; j++)
            {
                cout << a[i][j] << " ";
            }
            cout << endl;
        }
        return 0;
    }
    

    解析:

    1.开数组用于存储矩阵。定义两个变量获取要交换的两行。

    2.用循环嵌套获取矩阵的所有元素。

    3.用循环遍历 n 行的五个元素,将对应的 m 行元素与其交换。

    注意! 交换元素要有中间变量,不然会丢失一个变量(emmm……我记得好像有一个函数就是用来专门交换左右两个变量的值的,忘了叫啥名了,也有可能是python里的,同时学有点串)

    4.回归正题,最后用循环挨个输出所有元素。

    注意! 打完一行元素要打一个 endl 或 /n ,免得串成一行。

    5.今天 10 点还在写题解,中途甚至浏览器都崩溃了一次,看我勤勤恳恳,点个赞吧👍 !

    作者の吟唱:没有什么能够阻挡,我对题解的向往~
    • 4
      @ 2023-7-13 12:01:22

      解析

      将矩阵第n行和第m行交换位置,可以理解成将a[n][1~5]和a[m][1~5]交换位置。

      所以可以编写循环,让i从1遍历到5,循环中交换a[n][i]和a[m][i]的值。

      题解

      #include <iostream>
      using namespace std;
      int a[10][10], n, m;
      int main()
      {
          for (int i = 1; i <= 5; i++)
              for (int j = 1; j <= 5; j++)
                  cin >> a[i][j];
          cin >> n >> m;
          for (int i = 1; i <= 5; i++)
          {
              int temp = a[n][i];
              a[n][i] = a[m][i];
              a[m][i] = temp;
          }
          for (int i = 1; i <= 5; i++)
          {
              for (int j = 1; j <= 5; j++)
              {
                  cout << a[i][j] << " ";
              }
              cout << endl;
          }
          return 0;
      }
      
      
      • 1
        @ 2024-6-8 20:26:54
        #include <iostream>
        using namespace std;
        int a[10][10], n, m;
        int main()
        {
            for (int i = 1; i <= 5; i++)
                for (int j = 1; j <= 5; j++)
                    cin >> a[i][j];
            cin >> n >> m;
            for (int i = 1; i <= 5; i++)
            {
                int temp = a[n][i];
                a[n][i] = a[m][i];
                a[m][i] = temp;
            }
            for (int i = 1; i <= 5; i++)
            {
                for (int j = 1; j <= 5; j++)
                {
                    cout << a[i][j] << " ";
                }
                cout << endl;
            }
            return 0;
        }
        

        一维数组

        看解析:

        把老邓第n行和第m行玄冥置换了(徐三石误入)

        so可以编写for,让i从①遍历到⑤,循环中交换a[n][i]和a[m][i]的只

        • 0
          @ 2024-4-16 20:14:26
          #include<iostream>
          using namespace std;
          int main()
          {
              int juzhen[5][5],di1,di2;
              for(int i=0;i<5;i++)//循环输入矩阵
              {
                  for(int j=0;j<5;j++)
                  {
                      cin >> juzhen[i][j];
                  }
              }
              cin >> di1 >> di2;
              for(int i=0;i<5;i++)
              {
                  if (i==di1-1)//注意要是di1-1
                  {
                      for(int j=0;j<5;j++)
                      {
                          swap(juzhen[di1-1][j],juzhen[di2-1][j]);//交换
                      }
                      break;//可以直接跳出循环
                  }
              }
              for(int i=0;i<5;i++)
              {
                  for(int j=0;j<5;j++)
                  {
                      cout << juzhen[i][j]<< " ";
                  }
                  cout << endl;
              }//输出矩阵
              return 0;
          }
          
          • 0
            @ 2024-3-19 20:07:29
            #include <bits/stdc++.h>
            using namespace std;
            int main()
            {
                int a[30];
                int n, m;
                for (int i = 1; i <= 25; i++)
                {
                    cin >> a[i];
                }
                cin >> n >> m;
                for (int i = (n - 1) * 5 + 1; i <= (n - 1) * 5 + 5; i++)
                {
                    swap(a[i], a[i + (m - n) * 5]);
                }
                for (int i = 1; i <= 25; i++)
                {
                    cout << a[i] << ' ';
                    if (i % 5 == 0)
                    {
                        cout << endl;
                    }
                }
                return 0;
            }
            
          • -1
            @ 2024-6-16 9:40:50
            #include <iostream>
            using namespace std;
            int main()
            {
                long long a[10][10],b[10],c[10],m,n;
                for (int i = 1; i <= 5; i++)
                {
                    for (int j = 1; j <= 5; j++)
                    {
                        cin >> a[i][j];
                    }
                }
                cin >> m >> n;
                for (int i = 1; i <= 5; i++)
                {
                    b[i] = a[m][i];
                }
                for (int i = 1; i <= 5; i++)
                {
                    c[i] = a[n][i];
                }
                for (int i = 1; i <= 5; i++)
                {
                    a[m][i] = c[i];
                }
                for (int i = 1; i <= 5; i++)
                {
                    a[n][i] = b[i];
                }
                for (int i = 1; i <= 5; i++)
                {
                    for (int j = 1; j <= 5; j++)
                    {
                        cout << a[i][j] << " ";
                    }
                    cout << endl;
                }
            }
            
          • -1
            @ 2023-8-8 18:31:36

            给定一个5×5的矩阵,将矩阵的第n行和第m交换,输出交换后的结果。


            开一个二维数组存储矩阵,然后有两种思路。

            • 直接交换第m行和第n行.定义一个中间变量用于交换,或使用swap()函数进行交换。代码如下👍
            #include<bits/stdc++.h>
            using namespace std;
            int n,m,a[10][10];
            int main(){
                for(int i=1;i<=5;i++){//输入
                    for(int j=1;j<=5;j++){
                        cin>>a[i][j];
                    }
                }cin>>m>>n;
                swap(a[m],a[n]);//交换第n行和第m行
                for(int i=1;i<=5;i++){//输出
                    for(int j=1;j<=5;j++){
                        cout<<a[i][j]<<' ';
                    }cout<<endl;
                }return 0;
            }
            
            • 不交换,在输出时判断行数,如果是第n行就输出第m行,如果是第m行就输出第n行。代码如下👍
            #include<bits/stdc++.h>
            using namespace std;
            int n,m,a[10][10];
            void line(int i){//用于输出一行的函数
                for(int j=1;j<=5;j++){
                    cout<<a[i][j]<<' ';
                }cout<<endl;
            }
            int main(){
                for(int i=1;i<=5;i++){//输入
                    for(int j=1;j<=5;j++){
                        cin>>a[i][j];
                    }
                }cin>>m>>n;
                for(int i=1;i<=5;i++){//输出
                    if(i==m){line(n);}//判断行数并输出
                    else if(i==n){line(m);}
                    else{line(i);}
                }return 0;
            }
            
            • -1
              @ 2023-7-19 22:05:49

              压缩流,不过为了可读性,就不做成三行了

              #include <iostream>
              using namespace std;
              int main(){
                  int a[10][10],m,n;
                  for (int i=1;i<=5;i++)
                      for (int j=1;j<=5;j++)
                          cin>>a[i][j];
                  cin>>m>>n;
                  swap(a[m],a[n]);
                  for (int i = 1; i <= 5; i++){
                      for (int j = 1; j <= 5; j++) 
                          cout << a[i][j] << " ";
                      cout << endl;}
                  return 0;}
              
              • -1
                @ 2023-7-13 23:11:15

                思路:

                先说明一下:我把数组设为了num

                本题的实质就是在获取了这个二维数组和m,n以后,把num[m][1到5]和num[n][1到5]交换

                我们可以写一个for循环遍历num[m]和num[n],设一个temp用于存储num[m][i],将num[m][i]设为num[n][i],然后把num[n][i]设为temp,就完成了一次交换

                具体代码如下(因为我是从0开始遍历的,所以m和n需要-1才能与数组里的值对应)

                #include <iostream>
                using namespace std;
                
                int main()
                {
                    int num[10][10],m,n;
                    for(int i = 0;i < 5;i++)
                    {
                        for(int j = 0;j < 5;j++)
                            cin >> num[i][j];
                    }
                    cin >> m >> n;
                    m--;
                    n--;
                    for(int i = 0;i < 5;i++)
                    {
                        int temp = num[m][i];
                        num[m][i] = num[n][i];
                        num[n][i] = temp;
                    }
                    for(int i = 0;i < 5;i++)
                    {
                        for(int j = 0;j < 5;j++)
                            cout << num[i][j] << ' ';
                        cout << endl;
                    }
                    return 0;
                }
                
                • -1
                  @ 2023-7-13 22:36:48
                  #include <iostream>
                  using namespace std;
                  int main()
                  {
                      int a[10][10];
                      for (int x=1;x<=5;x++)
                      {
                          for (int y=1;y<=5;y++)
                              cin>>a[x][y];
                      }
                      int m,n;
                      cin>>m>>n;
                      for (int y=1;y<=5;y++)
                      {
                          if (y==m)
                          {
                              for (int x=1;x<=5;x++)
                                  cout<<a[n][x]<<" ";
                          }
                          else if (y==n)
                          {
                              for (int x=1;x<=5;x++)
                                  cout<<a[m][x]<<" ";   
                          }
                          else
                          {
                              for (int x=1;x<=5;x++)
                                  cout<<a[y][x]<<" ";   
                          }
                          cout<<endl;
                      }
                      return 0;
                  }
                  
                  • -1
                    @ 2023-7-13 16:06:57

                    交换核心代码

                    for(int i=1;i<=5;i++)
                    {
                        t=a[m][i];
                        a[m][i]=a[n][i];
                        a[n][i]=t;
                    }
                    
                    • -2
                      @ 2023-11-21 18:52:35
                      #include <iostream>
                      using namespace std;
                      int main()
                      {
                          int n , m , a[5][5] , b;
                          for(int i = 0;i < 5;i++)
                          {
                              for(int j = 0;j < 5;j++)
                              {
                                  cin >> a[i][j];
                              }
                          }
                          cin >> m >> n;
                          for(int i = 0;i < 5;i++)
                          {
                              b = a[n - 1][i];
                              a[n - 1][i] = a[m - 1][i];
                              a[m - 1][i] = b;
                          }
                          for(int i = 0;i < 5;i++)
                          {
                              for(int j = 0;j < 5;j++)
                              {
                                  cout << a[i][j] << " ";
                              }
                              cout << endl;
                          }
                          return 0;
                      }
                      
                      • -2
                        @ 2023-7-15 10:47:23
                        #include <bits/stdc++.h>
                        using namespace std;
                        int a[5][5];
                        int main(){
                        	for (int i=0;i<5;i++){
                                for (int j=0;j<5;j++) cin>>a[i][j];
                            }
                            int m,n;
                            cin>>m>>n;
                            for (int i=0;i<5;i++) swap(a[m-1][i],a[n-1][i]);
                            for (int i=0;i<5;i++){
                                for (int j=0;j<5;j++) cout<<a[i][j]<<' ';
                                cout<<endl;
                            }
                        	return 0;
                        }//数组
                        
                        • @ 2023-7-19 22:07:42

                          你的swap交换可以改成

                          swap(a[m],a[n]);
                          

                          这样不用for浪费速度

                      • 1

                      信息

                      ID
                      288
                      时间
                      1000ms
                      内存
                      128MiB
                      难度
                      4
                      标签
                      递交数
                      1479
                      已通过
                      634
                      上传者