addendum777 发表于 2022-9-9 10:51:00

这个将数组九十°旋转的函数有啥问题

#include<iostream>
using namespace std;

void rotate(int list[])
{
        int b;
        int k=2;
        for(int i=0;i<3;i++)
        {
                for(int j=0;j<3;j++)
                b=list;
                k--;
        }
       
}
int main()
{
        int a;
        for(int i=0;i<3;i++)
        {
                for(int j=0;j<3;j++)
                cin>>a;
                void rotate(int a);
        }
       
        return 0;
}

addendum777 发表于 2022-9-9 10:51:32

顺便想问一下怎么插入代码。。。一直不会

pjcpjc 发表于 2022-9-9 10:57:03

你可以发一下原数据,和想要得到结果的数据吗

addendum777 发表于 2022-9-9 11:00:53

pjcpjc 发表于 2022-9-9 10:57
你可以发一下原数据,和想要得到结果的数据吗

1 2 3
4 5 6
7 8 9
变为
7 4 1
8 5 2
9 6 3

jhq999 发表于 2022-9-9 11:37:27

本帖最后由 jhq999 于 2022-9-9 11:47 编辑

addendum777 发表于 2022-9-9 11:00
1 2 3
4 5 6
7 8 9


void rotate(int list[])
{
      int b;
      int k=2;
      for(int i=0;i<3;i++)
      {
                for(int j=0;j<3;j++)
                        b=list;////// b=list;b和a行列对调(b=list)且b的列是从后向前,所以b=list

      }
      for(int i=0;i<3;i++)
      {
                for(int j=0;j<3;j++)
                  printf("%2d",b);
                printf("\n");

      }

}
int main()
{
      int a;
      for(int i=0;i<3;i++)
      {
                for(int j=0;j<3;j++)
                cin>>a;

      }
      rotate(a);
      return 0;
}

jackz007 发表于 2022-9-9 13:29:48

本帖最后由 jackz007 于 2022-9-9 13:32 编辑

#include <iostream>
using namespace std                                                                ;

void rotate(int list[])
{
      int b , i , j                                                      ;
      for(i = 0 ; i < 3 ; i ++) for(j = 0 ; j < 3 ; j ++) b = list ;
      for(i = 0 ; i < 3 ; i ++) for(j = 0 ; j < 3 ; j ++) list = b   ;
}

int main(void)
{
      int i , j , a                                                      ;
      for(i = 0 ; i < 3 ; i ++) for(j = 0 ; j < 3 ; j ++) cin >> a         ;
      for(i = 0 ; i < 3 ; i ++) {
                cout << a                                                    ;
                for(j = 1 ; j < 3 ; j ++) cout << " , " << a               ;
                cout << "\n"                                                       ;
      }
      rotate(a)                                                                  ;
      cout << "\n"                                                               ;
      for(i = 0 ; i < 3 ; i ++) {
                cout << a                                                    ;
                for(j = 1 ; j < 3 ; j ++) cout << " , " << a               ;
                cout << "\n"                                                       ;
      }
}
      编译、运行实况:
D:\\C>g++ -o x x.c

D:\\C>x
1 2 3 4 5 6 7 8 9
1 , 2 , 3
4 , 5 , 6
7 , 8 , 9

7 , 4 , 1
8 , 5 , 2
9 , 6 , 3

D:\\C>

两手空空儿 发表于 2022-9-9 16:12:28

for(int j=0;j<3;j++)
         b=list;
         k--;

这里的K一直在往下减,没有重置回2,还少了{}可改为如下:

for(int j=0, k = 2 ;j<3;j++){
         b=list;
         k--;
}

傻眼貓咪 发表于 2022-9-9 21:46:11

都已经用 C++ 了,为什么不利用 C++ 语言的功能?C++ 的强大模板 + 引用 是很方便的功能。
代码:#include <iostream>

template <size_t m>
void rotate(int (& matrix)) {

        // 上下对调位置
        for (int i = 0; i < m >> 1; ++i) {
                for (int j = 0, temp; j < m; ++j) {
                        temp = matrix;
                        matrix = matrix;
                        matrix = temp;
                }
        }

        // 对角线对调位置
        for (int i = 0; i < m; ++i) {
                for (int j = i, temp; j < m; ++j) {
                        temp = matrix;
                        matrix = matrix;
                        matrix = temp;
                }
        }
}

int main(void) {
        int matrix = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
       
        rotate<3>(matrix);

        using std::cout, std::endl;
        for (const auto &arr : matrix) {
                for (const int &num : arr) {
                        cout << num << " ";
                }
                cout << endl;
        }
        return 0;
}7 4 1
8 5 2
9 6 3

addendum777 发表于 2022-9-11 11:16:40

傻眼貓咪 发表于 2022-9-9 21:46
都已经用 C++ 了,为什么不利用 C++ 语言的功能?C++ 的强大模板 + 引用 是很方便的功能。
代码:

谢谢,我们是第一节课,老师叫我们可以用c

傻眼貓咪 发表于 2022-9-11 12:04:37

addendum777 发表于 2022-9-11 11:16
谢谢,我们是第一节课,老师叫我们可以用c

好的{:10_254:}
页: [1]
查看完整版本: 这个将数组九十°旋转的函数有啥问题