从“追求尽量不出错”,到正视“出错|

如此而已~~~

园龄:3年3个月粉丝:0关注:12

C语言中的for循环的镶嵌理解(外层一次,内层一周)

C语言中的for循环的镶嵌理解(外层一次,内层一周)

在这里我们使用两个for循环镶嵌来进行理解,采用的是九九乘法表的代码来理解:

测试一:

#include <stdio.h>
int main()
{
int i,j;
for(i=1;i<=9;i++)
{
for(j=1;j<=9;j++)
{
printf("%d*%d=%2d ",i,j,i+j);
}
}
return 0;
}

输入此代码我们可以发现结果有81种且在DEV C++中以3行27列的形式输出,在条件允许的情况下应当只会在一行中输出。

测试二:

#include <stdio.h>
int main()
{
int i,j;
for(i=1;i<=9;i++)
{
for(j=1;j<=9;j++)
{
printf("%d*%d=%2d ",i,j,i+j);
}
printf("\n");
}
return 0;
}

这次我们在原有的基础上增加了一个换行printf("\n")位于外层循环中与内曾循环的语句并列。在由输出结果(81种9行9列第一行的i都等于1而j则是从1~9)我们可以发现外层循环进行一次内层循环就会在这一次当中完成一次自己的循环,我们将其称为”外一次,内一周“。

思考:

我们测试二可以看出在打印结果中仍有重复的部分如:1X2=2与2X1=2等只是交换了顺序实质上并没有什么区别。

那么我们如何来获取更为精确的九九乘法表呢?

答案是进行一定的条件限制,如“j<=9”改为”j<=i“,这样的话在外层循环为1是只有j=1符合要求以此类推

测试三:

#include <stdio.h>
int main()
{
int i,j;
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
{
printf("%d*%d=%2d ",i,j,i+j);
}
printf("\n");
}
return 0;
}

可以看到这一次输出的结果为:

图片

这里直观的看出结果像一个直角三角形且直角在左下角,那么肯定就有人想问是不是还能让他改变形状而并不改变结果啊?答案是肯定的当然方法也有所不同。

这里在测试二的基础上在打印结果之前增加了一个if语句进行输出条件的控制从而达到这个改变的效果。

测试五:

#include <stdio.h>
int main()
{
int i,j;
for(i=1;i<=9;i++)
{
for(j=1;j<=9;j++)
{
if(j>=i)
{
printf("%d*%d=%2d ",i,j,i+j);
}
}
printf("\n");
}
return 0;
}

图片

而这一切都是在掌握测试二和理解测试二的基础上来进行实施的。

当然还能进行其它的改变这里暂时不进行一一的测试需要自己下去进行思考。

本文作者:如此而已~~~

本文链接:https://www.cnblogs.com/fragmentary/p/15657276.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   如此而已~~~  阅读(362)  评论(0编辑  收藏  举报
//雪花飘落效果
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起