输入a={{1,2,3},{4,5,6}}
输出a={{3,2,1},{6,5,4}}
#include <stdio.h>
int main() {
// 定义一个二维数组 a
int a[2][3] = {{1, 2, 3}, {4, 5, 6}};
int i, j, temp;
// 遍历数组的每一行
for (i = 0; i < 2; i++) {
// 遍历行的一半
for (j = 0; j < 3 / 2; j++) {
// 使用临时变量 temp 来交换元素的位置
temp = a[i][j];
a[i][j] = a[i][3 - j - 1];
a[i][3 - j - 1] = temp;
}
}
// 输出结果
for (i = 0; i < 2; i++) {
for (j = 0; j < 3; j++) {
printf("%d ", a[i][j]);
}
printf("\n");
}
return 0;
}
逐行首尾交换就行
#include <stdio.h>
int main()
{
int a[2][3] = {{1,2,3},{4,5,6}};
for(int i=0;i<2;i++)
{
for(int j=0;j<3/2;j++)
{
int t = a[i][j];
a[i][j] = a[i][2-j];
a[i][2-j] = t;
}
}
for(int i=0;i<2;i++)
{
for(int j=0;j<3;j++)
printf("%d ",a[i][j]);
printf("\n");
}
}
思路:遍历二维数组,对每一行进行逆序操作。
代码示例:
#include <stdio.h>
#define ROW 2
#define COL 3
void reverse(int arr[], int n)
{
int temp;
for(int i=0; i<n/2; i++)
{
temp = arr[i];
arr[i] = arr[n-i-1];
arr[n-i-1] = temp;
}
}
int main()
{
int a[ROW][COL] = {{1, 2, 3}, {4, 5, 6}};
for(int i=0; i<ROW; i++)
{
reverse(a[i], COL);
}
for(int i=0; i<ROW; i++)
{
for(int j=0; j<COL; j++)
{
printf("%d ", a[i][j]);
}
printf("\n");
}
return 0;
}
输出结果:
3 2 1
6 5 4
思路:
int a[2][3] = { {1,2,3},{4,5,6} };
代码如下:
// 给定二维数组版本
#include <stdio.h>
int main() {
int a[2][3] = { {1,2,3},{4,5,6} }; // 定义并初始化二维数组 a,2行3列 a[2][3],行下标从0到1,列下标从0到2
// 遍历二维数组a的每一行
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3 / 2; j++) { // 对于每一行,进行逆序操作
int temp = a[i][j];
a[i][j] = a[i][2-j]; // 注意列有3列,从 a[i][0] - a[i][2],所以首尾的下标之和为 0 + 2 = 2,j列的对称位置是 2-j
a[i][2-j] = temp;
}
}
// 输出逆序后的二维数组a
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", a[i][j]);
}
printf("\n");
}
return 0;
}
输出如下:
如果要手动输入几行几列的二维数组,代码如下:
#include <stdio.h>
int main() {
int m, n; // m 行 n 列
int a[50][50]; // 定义并初始化二维数组 a
scanf("%d %d", &m,&n); // 输入 m 行 n 列
// 逐行输入 二维数组
for(int i = 0; i < m; i++){
for(int j = 0; j < n; j++){
scanf("%d", &a[i][j]);
}
}
// 遍历二维数组a的每一行
for (int i = 0; i < m; i++) {
for (int j = 0; j < n / 2; j++) { // 对于每一行,进行逆序操作
int temp = a[i][j];
a[i][j] = a[i][n-1-j]; // 注意列有n列,从 a[i][0] - a[i][n-1],所以首尾的下标之和为 0 + (n-1) = n-1,j列的对称位置是 n-1-j
a[i][n-1-j] = temp;
}
}
// 输出逆序后的二维数组a
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
printf("%d ", a[i][j]);
}
printf("\n");
}
return 0;
}
输出:
以下答案由GPT-3.5大模型与博主波罗歌共同编写:
以下是C语言实现该功能的代码:
#include <stdio.h>
#define ROW 2
#define COL 3
void reverse_2d_array(int a[][COL], int row, int col);
int main()
{
int a[ROW][COL] = { {1, 2, 3}, {4, 5, 6} };
printf("Original array:\n");
for (int i = 0; i < ROW; i++)
{
for (int j = 0; j < COL; j++)
printf("%d ", a[i][j]);
printf("\n");
}
reverse_2d_array(a, ROW, COL);
printf("Reversed array:\n");
for (int i = 0; i < ROW; i++)
{
for (int j = 0; j < COL; j++)
printf("%d ", a[i][j]);
printf("\n");
}
return 0;
}
void reverse_2d_array(int a[][COL], int row, int col)
{
int temp;
for (int i = 0; i < row; i++)
for (int j = 0; j < col / 2; j++)
{
temp = a[i][j];
a[i][j] = a[i][col - j - 1];
a[i][col - j - 1] = temp;
}
}
程序中定义了一个名为 reverse_2d_array
的函数来逆序存放每行元素。该函数的参数为二维数组 a
、行数 row
和列数 col
,采用了双重循环,其中外层循环控制行数,内层循环控制每行元素的逆序。
程序中采用了宏定义 ROW
和 COL
来定义二维数组的行数和列数,方便修改和调整。在 main 函数中,首先输出原始数组,然后调用 reverse_2d_array
函数逆序存放每行元素,最后输出结果。
以上代码执行结果如下:
Original array:
1 2 3
4 5 6
Reversed array:
3 2 1
6 5 4
如果我的回答解决了您的问题,请采纳!
可以借鉴下
#include <stdio.h>
int main()
{
int a[2][3] = { {1,2,3},{4,5,6} }, i, j, k, n;
for (i = 0; i < 2; i++)
{
for (j = 0, k = 2; j < k; j++, k--)
{
n = a[i][j];
a[i][j] = a[i][k];
a[i][k] = n;
}
}
for (i = 0; i < 2; i++)
{
for (j = 0; j < 3; j++)
{
printf("%d,", a[i][j]);
}
}
return 0;
}
以下是C语言的代码实现,具体思路是使用双重循环遍历二维数组,对每一行进行逆序操作:
#include <stdio.h>
int main()
{
int a[2][3] = {{1, 2, 3}, {4, 5, 6}};
int i, j, temp;
// 对每一行进行逆序操作
for (i = 0; i < 2; i++) {
for (j = 0; j < 3 / 2; j++) {
temp = a[i][j];
a[i][j] = a[i][2 - j];
a[i][2 - j] = temp;
}
}
// 输出结果
for (i = 0; i < 2; i++) {
for (j = 0; j < 3; j++) {
printf("%d ", a[i][j]);
}
printf("\n");
}
return 0;
}
输出结果为:
3 2 1
6 5 4
以上代码中,首先定义一个二维数组a并初始化,然后使用两个for循环对每一行进行逆序操作,最后输出结果。具体逆序操作是利用一个temp变量来交换数组元素的值,从而完成每行的逆序。
#include <stdio.h>
#define ROW 2
#define COL 3
void reverse(int arr[][COL], int row)
{
int i, j, temp;
for(i = 0; i < row; i++)
{
for(j = 0; j < COL / 2; j++)
{
temp = arr[i][j];
arr[i][j] = arr[i][COL - j - 1];
arr[i][COL - j - 1] = temp;
}
}
}
int main()
{
int arr[ROW][COL] = {{1, 2, 3}, {4, 5, 6}};
int i, j;
printf("原数组:\n");
for(i = 0; i < ROW; i++)
{
for(j = 0; j < COL; j++)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
reverse(arr, ROW);
printf("\n逆序后的数组:\n");
for(i = 0; i < ROW; i++)
{
for(j = 0; j < COL; j++)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
输出结果如下:
原数组:
1 2 3
4 5 6
逆序后的数组:
3 2 1
6 5 4
该程序中,使用双重循环遍历每一行的元素,然后交换对称位置的元素,实现逆序存放。函数reverse的参数arr表示输入的二维数组,参数row表示行数,通过传递参数的方式进行处理,使得函数具有通用性。最后,主函数中调用reverse函数,实现对输入数组的逆序存放,输出结果即为所求。
#include <stdio.h>
int main() {
int array_test[2][3] = {{1,2,3},{4,5,6}}; // 定义并初始化二维数组
int i, j k;
int temp;
// 遍历二维数组的每一行,对每一行进行逆序操作
for (i = 0; i < 2; i++) {
j = 2; // j指向当前行最后一个元素
for (k = 0; k < 3 / 2; k++) { // 对每一行进行逆序操作
temp = array_test[i][k];
array_test[i][k] = array_test[i][j];
array_test[i][j] = temp;
j--; // 移动j指针
}
}
// 输出逆序后的二维数组
printf("{");
for (i = 0; i < 2; i++) {
printf("{");
for (j = 0; j < 3; j++) {
printf("%d, ", array_test[i][j]);
}
printf("}, ");
}
printf("}");
return 0;
}
太卷了,回答了这么多答案还没被采纳