二维数组课后习题问题求教
// row 取行数最大值row = M > P ? M : P;
for (i = 0; i < row; i++)
{
// 打印A
printf("|");
for (j = 0; j < P; j++)
{
if (i < M)
{
printf("\b%d ", a);
printf("|");
}
else
{
printf("\b\b\b ");
}
}
// 打印 * 号
if (i == row / 2)
{
printf(" * ");
}
else
{
printf(" ");
}
printf("|");
// 打印B
for (j = 0; j < N; j++)
{
if (i < P)
{
printf("\b%d ", b);
printf("|");
}
else
{
printf("\b\b\b ");
}
}
// 打印 = 号
if (i == row / 2)
{
printf(" = ");
}
else
{
printf(" ");
}
// 打印C
printf("|");
for (j = 0; j < N; j++)
{
if (i < M)
{
printf("\b%d ", c);
printf("|");
}
else
{
printf("\b\b\b ");
}
}
printf("\n");
}
return 0;
}
输出:
| 1 2 3 | | 1 4 | | 1432 |
| 4 5 6 | * | 2 5 | = | 32 77 |
|3 6 |
最开始前面一些代码省略 了,在打印A和后面的地发 里面“\b%d” "\b\b\b " 为什么要这么写呢? 我查了\b 是退格的意思,但是还是不是很明白在这里为什么要这么用,这几句代码具体是什么意思呢? 谢谢!
// 打印A
printf("|");
for (j = 0; j < P; j++)
{
if (i < M)
{
printf("\b%d ", a);
printf("|");
}
else
{
printf("\b\b\b ");
}
} //打印A
printf("|"); //注意这里“|”后面跟着两个空格
for (j = 0; j < P; j++)
{
if (i < M)
{
printf("\b%d ", a); //这句的意思是如果在有效行数M(就原来有M行东西)里面,打印整数%d,但是由于前面有两个空格,为了美观,可以退回一格。(其实空格还有占位的作用,还有,\b是退回上一格的位置,如果没有新内容覆盖的话,退格就没有作用哦,它跟删除还是有区别的)
printf("|");
}
else
{
printf("\b\b\b "); //这一行就是把“|”这一个整体全都删除,由于“|”占了三个位置,就退三格,然后用三个空字符替换“ ”
}
}
懂了记得采纳哈,不懂再问 suweixuan1998 发表于 2020-1-4 17:39
//打印A
printf("|"); //注意这里“|”后面跟着两个空格
for (j = 0; j ...
我可以这么理解吗:
//打印A
printf("|"); //注意这里“|”后面跟着两个空格
到这里,输出是:
| (“|”后面和两个空格)
然后进入了for循环,i代表行,j代表列
所以:
for (j = 0; j < P; j++)
{
if (i < M)
{
printf("\b%d ", a);
\b%d:相当于:| 1(“|”后面和一个空格)然后加上数字1。
这里数字1后面还有一个空格把?因为\b只是往前推一个并不是删除,所以这里就是:“|”空格1空格
然后print“|” 输出就是| 1 |
第二次进入for:
| 1 | 往前推一个再打印数字和“|”就是: | 1 2||这个时候2后面没有空格了吧?
同理第三次for:
| 1 2|| ———— | 1 2 3|||
第四次进入的时候就是else判断:
\b\b\b 就是退到了三后面一个,三个空字符替换完后不就变成了 | 1 2 3 了吗? 3后面一个空格加“|”是怎么打印出来的呢?
谢谢! LXMARCO 发表于 2020-1-4 22:51
我可以这么理解吗:
//打印A
理解错了,第一次进入for循环这里没有问题。第二次进入for循环的时候,在循环发生之前是“| 1 |”
接着打印“\b%d ”,输出就变成了“| 1 2 |”。(这里退一个回到“| 1 |”右边的“|”位置上,用2将“|”覆盖了,所以这条竖杆就不见了,其他按你理解就行)第三次循环同理。 suweixuan1998 发表于 2020-1-5 09:58
理解错了,第一次进入for循环这里没有问题。第二次进入for循环的时候,在循环发生之前是“| 1 |”
接着 ...
好的,明白了,谢谢 LXMARCO 发表于 2020-1-5 22:12
好的,明白了,谢谢
不客气,一起加油。
页:
[1]