项目场景:
项目场景:使用C语言打印出99乘法表,加深对for循环的理解。打印99乘法表这个应该是一个比较典型的例子。
问题描述
打印乘法表时打印出来的是
1*1=1
2*2=4
3*3=9
4*4=16
5*5=25
6*6=36
7*7=49
8*8=64
9*9=81
#include <stdio.h>
int main(){
int i=1,j=1;
for(i;i<10;i++){
for(j;j<=i;j++){
printf("%d*%d=%d ",j,i,i*j);
}
printf("\n");
}
return 0;
}
原因分析:
两层for循环为什么只打印出9个,最后通过检查代码发现是变量j在第一层for循环结束之后没有重置为1,在下一次的for时j变量和i变量是相同的,所以只会打印一次。
解决方案:
这里有两种解决方案:
第一种:在第一层for循环结束之后将j重置为1,代码如下:
#include <stdio.h> int main(){ int i=1,j=1; for(i;i<10;i++){ for(j;j<=i;j++){ printf("%d*%d=%d ",j,i,i*j); } j=1; printf("\n"); } return 0; }
第二种:将变量i和j写在for循环里面,给他一个初始值为1即可,代码如下:
#include <stdio.h> int main(){ int i,j; for(i=1;i<10;i++){ for(j=1;j<=i;j++){ printf("%d*%d=%d ",j,i,i*j); } printf("\n"); } return 0; }
其实是只需要将j变量的赋值写在for循环里面就行,i变量的赋值可以在它声明的同时直接赋值。
最后成功的打印出了99乘法表,如下图:
版权声明:本文为aa2325727631原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。