gpt4 book ai didi

c - 当尝试在 C 中打印 char 二维数组时,% 符号继续打印

转载 作者:行者123 更新时间:2023-11-30 15:15:49 24 4
gpt4 key购买 nike

我是 C 新手,我只是想打印出两个 2 数组。这个错误已经困扰了我一整天,我不太确定发生了什么。

#include<stdio.h>

void run(int);

main()
{
run(5);
return 0;
}

//Have to make it a character array as it needs to
//store numbers AND commas.
run(int x)
{
int size = 2*x -1;
char array[size][size];
int i = 0;
int j = 0;
for( i; i < size; i++){
for(j; j< size; j++){
array[i][j] = '1';
}
}

int k = 0;
int l = 0;
for( k; k < size; k++){
for(l; l< size; l++){
printf( "%c" , array[l][k]);
}
printf("%\n", "");
}
}

这是我得到的输出:

1%
%
%
%
%
%
%
%
%

最佳答案

您的代码有几个错误:

最大的问题是你没有在应该初始化的地方初始化循环计数器:

for(i; i < size; i++){
for(j; j < size; j++){

这样,ij 将保持在 for 语句之前的状态。这些陈述的第一部分根本没有做任何事情。虽然这对于 i 来说是无害的(因为它在 for 之前被初始化为 0),但对于 j 来说却是毁灭性的,它永远不会回到 0。代码应该是:

for(i = 0; i < size; i++){
for(j = 0; j < size; j++){

kl 也存在同样的问题,应应用相同的修复:

for(k = 0; k < size; k++){
for(l = 0; l < size; l++){
<小时/>

接下来,您将在阵列中“轮换”访问权限。当您用值填充数组时,外循环中有 i ,内循环中有 j ,并将它们用作 [i][j] :

array[i][j] = '1';

将其视为Out & In --> [Out][In]

当您打印数组时,您会“旋转”,k 是外部,l 是内部,并将它们用作 [l][k ]:

printf("%c", array[l][k]);

这就像执行[In][Out]
虽然所有值都相同('1')且矩阵为正方形(宽度==高度)时这不是问题,但它不适用于其他值或尺寸,并且会令人困惑。

<小时/>

最后,您尝试打印新行是错误的。您有一个 % 说明符,但之后您并没有真正使用任何有效字符,而且您也不需要它,只需打印:

printf("\n");
<小时/>

所以,总而言之,代码应该是这样的:

run(int x)
{
int size = 2*x -1;
char array[size][size];
int i,j;
for(i = 0; i < size; i++){
for(j = 0; j < size; j++){
array[i][j] = '1';
}
}

int k, l;
for(k = 0; k < size; k++){
for(l = 0; l < size; l++){
printf("%c", array[k][l]);
}
printf("\n");
}
}

(顺便说一句,kl 并不是真正必需的,您可以简单地重复使用 ij)

关于c - 当尝试在 C 中打印 char 二维数组时,% 符号继续打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33356568/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com