99乘法表左上打印,为什么这个代码只打印了第一行
#include <stdio.h>int main()
{
int i,j = 1;
for(i = 1;i <= 9;i++)
{
for(;j <= 9;j++)
{
printf("%d * %d = %d ",i,j,i * j);
}
printf("\n");
j += 1;
}
return 0;
} 这段代码只打印了第一行,是因为在第二次外层循环时,内层循环的初始值j已经等于9了,所以内层循环直接跳过了。可以修改代码如下:
#include <stdio.h>
int main()
{
int i,j;
for(i = 1;i <= 9;i++)
{
for(j = 1;j <= 9;j++)
{
printf("%d * %d = %d ",i,j,i * j);
}
printf("\n");
}
return 0;
}
这样就可以正确输出99乘法表了。 为什么这个代码只打印了第一行:
在给定的代码中,问题出现在外层循环的初始条件和内层循环的控制条件之间的关系上。具体来说,导致只打印了第一行的原因是:
1. 外层循环的初始条件 j = 1 在第一次执行完毕后并没有重置为1,在进入下一个外层循环时,j 的值依然是9,不满足内层循环的控制条件 j <= 9,因此内层循环不会执行。
2. 由于内层循环没有执行,导致内层循环中的 printf 语句没有执行,因此只打印了一行结果。
为了修复这个问题,你可以将内层循环的控制条件改为 j = 1,以确保在每次进入外层循环时,都从第一列开始打印乘法表。
修改后的代码如下:
#include <stdio.h>
int main()
{
int i, j;
for(i = 1; i <= 9; i++)
{
for(j = 1; j <= 9; j++) // 将j的初始值设置为1
{
printf("%d * %d = %d ", i, j, i * j);
}
printf("\n");
}
return 0;
}
这样修改后的代码就会正确地打印出完整的99乘法表。
希望能够解答你的问题,如果还有其他疑问,请随时提出。
球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:} isdkz 发表于 2023-10-5 11:18
这段代码只打印了第一行,是因为在第二次外层循环时,内层循环的初始值j已经等于9了,所以内层循环直接跳过 ...
要求只打印左上部分的乘法表,这个怎么修改呀,就是像这样的
1 * 2 = 2 ......
2 * 2 = 4 2 * 3 = 6 ......
3 * 3 = 9 3 * 4 = 12 ......
czwccc 发表于 2023-10-5 08:26
要求只打印左上部分的乘法表,这个怎么修改呀,就是像这样的
1 * 2 = 2 ......
2 * 2 = 4 2 * 3 ...
要求只打印左上部分的乘法表,需要修改内层循环的范围,让它只在j小于等于i的情况下执行打印操作,可以将内层循环的终止条件改为j <= i。下面是修改后的代码:
#include <stdio.h>
int main() {
int i,j;
for (i = 1; i <= 9; i++) {
for (j = 1; j <= i; j++) {
printf("%d * %d = %-2d", j, i, i * j);
}
printf("\n");
}
return 0;
}
在每一行输出时,内层循环只打印乘积小于等于当前行号的部分,这样就实现了只打印左上部分的乘法表。
希望能帮到你。 Mike_python小 发表于 2023-10-5 12:35
要求只打印左上部分的乘法表,需要修改内层循环的范围,让它只在j小于等于i的情况下执行打印操作,可以将 ...
灵活利用内外循环的判定条件
页:
[1]