C 如何根据用户的输入将二维矩阵的元素打印成矩形
我在我们学院的一次评估中遇到了这个问题。我的朋友都帮不了我。我甚至检查了所有领先的在线平台,以获得我想要的输出标准。但是没有用,所以我想把我的问题发布在堆栈溢出中 我请求观看此标签的人帮助我。尽管我的评估已经完成,但我急切地想解决这个问题,但我做不到C 如何根据用户的输入将二维矩阵的元素打印成矩形,c,multidimensional-array,C,Multidimensional Array,我在我们学院的一次评估中遇到了这个问题。我的朋友都帮不了我。我甚至检查了所有领先的在线平台,以获得我想要的输出标准。但是没有用,所以我想把我的问题发布在堆栈溢出中 我请求观看此标签的人帮助我。尽管我的评估已经完成,但我急切地想解决这个问题,但我做不到 #include <stdio.h> int main() { int a[4][4] = {{1, 2, 3, 4}, {5, 6, 7, 8},
#include <stdio.h>
int main()
{
int a[4][4] = {{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15, 16}};
int k, l, m, n, o, r;
int temp[4][4] = {0};
printf("Enter index of row & column: ");
int p, q;
scanf("%d %d", &p, &q);
for (int i = p; i < 4; i++)
{
for (int j = q; j < 4; j++)
{
temp[i][j] = a[i][j];
// initial given index number to left_most number
}
k = i + 1, l = 4 - q;
for (k; k <= l; k++)
{
temp[k][l] = a[k][l];
//rightmost element to bottom
}
m = k - 1, n = l - 1;
for (n; n >= q; n--)
{
temp[m][n] = a[m][n];
//bottomright to left elements upto the column index provided by user
}
o = m, r = q;
for (o; o >= i + 1; o--)
{
temp[o][r] = a[o][r];
//bottomleft to initial index element
}
break;
}
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
//if the element is zero then priting a space else printing the number
if (temp[i][j] == 0)
{
printf(" ");
}
else
{
printf("%d ", temp[i][j]);
}
}
printf("\n");
}
return 0;
}
我的代码仅适用于示例输入和以下列
因此,我需要帮助,了解如何使我的代码能够处理用户提供的任何输入,它必须打印出零(0)形状。对于初学者来说,如果任务只是输出原始数组的子数组,则无需声明辅助数组 C语言中的一种简单方法如下所示
#include <stdio.h>
void rectangle_pattern( size_t n, int a[][n], size_t row, size_t col )
{
for ( size_t i = row; i < n; ++i )
{
if ( i == row || i == n - 1 )
{
for ( size_t j = col; j < n; j++ )
{
printf( "%2d ", a[i][j] );
}
}
else
{
printf( "%2d", a[i][col] );
if ( col != n - 1 ) printf( "%*d", ( int )( 3 * ( n - col - 1 ) ), a[i][n-1] );
}
putchar( '\n' );
}
}
int main(void)
{
enum { N = 4 };
int a[N][N]=
{
{ 1, 2, 3, 4 },
{ 5, 6, 7, 8 },
{ 9, 10, 11, 12 },
{ 13, 14, 15, 16 }
};
size_t row = 0, col = 0;
rectangle_pattern( N, a, row, col );
putchar( '\n' );
row = 0, col = 1;
rectangle_pattern( N, a, row, col );
putchar( '\n' );
row = 0, col = 2;
rectangle_pattern( N, a, row, col );
putchar( '\n' );
row = 0, col = 3;
rectangle_pattern( N, a, row, col );
putchar( '\n' );
return 0;
}
函数声明使用可变长度数组作为参数。您可以更改函数声明,将参数声明为具有固定大小的数组。这个问题有一个非常简洁的解决方案
for (int r = 0; r < numrows; r++) {
for (int c = 0; c < numcols; c++) {
if (r >= p && c >= q &&
(c == q || c == numcols - 1 || r == p || r == numrows - 1)){
printf("%2d ",a[r][c]);
}
else {
printf(" ");
}
}
printf("\n");
}
for(int r=0;r=p&c>=q&&
(c==q | | c==numcols-1 | | r==p | | r==numrows-1)){
printf(“%2d”,a[r][c]);
}
否则{
printf(“”);
}
}
printf(“\n”);
}
<> > <代码> NUROSUS=4 < /COD>和
1 2 3 4
5 8
9 12
13 14 15 16
2 3 4
6 8
10 12
14 15 16
3 4
7 8
11 12
15 16
4
8
12
16
for (int r = 0; r < numrows; r++) {
for (int c = 0; c < numcols; c++) {
if (r >= p && c >= q &&
(c == q || c == numcols - 1 || r == p || r == numrows - 1)){
printf("%2d ",a[r][c]);
}
else {
printf(" ");
}
}
printf("\n");
}