如何将第1列元素复制到c程序中矩阵的第2列
输入
2 3 4
5 6 7
7 8 9
输出
2 2 3 3 4 4
5 5 6 6 7 7
7 7 8 8 9 9
答案 0 :(得分:0)
如果数组是预定义的,那么代码可以采用以下方式
#include <stdio.h>
#define M 3
#define N 3
int main( void )
{
int a[M][N] =
{
{ 2, 3, 4 },
{ 5, 6, 7 },
{ 7, 8, 9 }
};
int b[M][2*N];
for ( size_t m = 0; m < M; m++ )
{
for ( size_t n = 0; n < N; n++ ) printf( "%d ", a[m][n] );
printf( "\n" );
}
printf( "\n" );
for ( size_t n = 0, i = 0; n < N; n++ )
{
for ( size_t j = 0; j < 2; j++, i++ )
{
for ( size_t m = 0; m < M; m++ ) b[m][i] = a[m][n];
}
}
for ( size_t m = 0; m < M; m++ )
{
for ( size_t n = 0; n < 2 * N; n++ ) printf( "%d ", b[m][n] );
printf( "\n" );
}
printf( "\n" );
return 0;
}
程序输出
2 3 4
5 6 7
7 8 9
2 2 3 3 4 4
5 5 6 6 7 7
7 7 8 8 9 9
那就是你必须复制列&#34;手动&#34;使用循环。
否则,您需要动态分配第二个数组或使用可变长度数组。
答案 1 :(得分:0)
如果我理解你的问题,你可以尝试:
#include<stdio.h>
#define SIZE 3
int main(){
int inMat[SIZE][SIZE];
int outMat[SIZE][SIZE*2];
int i, j, k;
for(i=0; i<SIZE; i++){
for(j=0; j<SIZE; j++) {
scanf("%d", &inMat[i][j]);
}
}
for(i=0; i<SIZE; i++){
for(j=0, k =0; j<SIZE*2; k++, j++){
outMat[i][j] = inMat[i][k];
outMat[i][++j] = inMat[i][k];
}
}
printf("Input Matrix:\n");
for(i=0; i<SIZE; i++){
for(j=0; j<SIZE; j++) {
printf("%d ", inMat[i][j]);
}
printf("\n");
}
printf("Output Matrix:\n");
for(i=0; i<SIZE; i++){
for(j=0; j<SIZE*2; j++) {
printf("%d ", outMat[i][j]);
}
printf("\n");
}
return 0;
}
输出:
2 3 4
5 6 7
7 8 9
Input Matrix:
2 3 4
5 6 7
7 8 9
Output Matrix:
2 2 3 3 4 4
5 5 6 6 7 7
7 7 8 8 9 9