这个将数组九十°旋转的函数有啥问题
#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;
} 顺便想问一下怎么插入代码。。。一直不会 你可以发一下原数据,和想要得到结果的数据吗 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: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: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> for(int j=0;j<3;j++)
b=list;
k--;
这里的K一直在往下减,没有重置回2,还少了{}可改为如下:
for(int j=0, k = 2 ;j<3;j++){
b=list;
k--;
} 都已经用 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 傻眼貓咪 发表于 2022-9-9 21:46
都已经用 C++ 了,为什么不利用 C++ 语言的功能?C++ 的强大模板 + 引用 是很方便的功能。
代码:
谢谢,我们是第一节课,老师叫我们可以用c addendum777 发表于 2022-9-11 11:16
谢谢,我们是第一节课,老师叫我们可以用c
好的{:10_254:}
页:
[1]