本章重点,难点:
重点是掌握3种循环结构:for语句,while语句,do while语句。
for语句的一般形式为:
for(<初始表达式>;<条件表达式>;<循环变量表达式>)
{
<循环体语句>
}
while语句的一般形式为:
while(<条件表达式>)
{
循环语句
循环变量表达式
}
do while语句的一般形式为:
{
<循环体语句>
}while(<条件表达式>);
还要注意do while和while的区别:do while循环中的<循环体语句>至少会执行一次,而while循环中可能一次也不执行。
难点:我觉得条件表达式很重要,决定了一个程序是否正确运行。
课内反思
#include<stdio.h>
main()
{
int i,j,k,x=7;
for(i=1;i<=5;i++)
{
for(j=i;j<5;j++)
printf(" ");
for(k=1;k<=(2*i-1);k++)
printf("*");
printf("
");
}
for(i=1;i<=4;i++)
{
for(j=1;j<i+1;j++)
printf(" ");
for(k=i;k<=(x-i+1);k++)
printf("*");
printf("
");
}
}
分析:如图所示,我把这个图像分成了两部分来做,分成前五行和后四行。这个参考的是92页中的e和f.e中是七行,第一行有1个星,12个空格,后面6个其实不用去管,看前面的六个就行,所以j<7。同理上五行也是这样。
这样后面四行也同f一样。
总结:我觉得这个可以参考老师前面讲的那几个例题(也就是p92的那六个例题),如果听懂了其实可以发现看懂其中的规律。
#include<stdio.h>
main()
{
int i,j;
for(i=1;i<=5;i++)
{
for(j=1;j<=(2*i-1);j++)
printf("*");
printf("
");
}
for(i=1;i<=4;i++)
{
for(j=1;j<=(9-2*i);j++)
printf("*");
printf("
");
}
}
总结:之所以用j<=(2*i-1)是因为第一行一个第二行有三个,根据规律就是2i-1.也是把它分成前五行和后四行。
#include<stdio.h>
main()
{
int i,j;
for(i=1;i<=5;i++)
{
for(j=0;j<9-2*i+1;j++)
printf(" ");
for(j=1;j<=2*i-1;j++)
printf("*");
printf("
");
}
for(i=1;i<=4;i++)
{
for(j=1;j<=2*i;j++)
printf(" ");
for(j=1;j<=9-2*i;j++)
printf("*");
printf("
");
}
}
#include<stdio.h>
main()
{
int i,j;
for(i=1;i<=5;i++)
{
for(j=0;j<=i-1;j++)
printf(" ");
for(j=i;j<=10-i;j++)
printf("*");
printf("
");
}
for(i=2;i<=5;i++)
{
for(j=i;j<=5;j++)
printf(" ");
for(j=1;j<=2*i-1;j++)
printf("*");
printf("
");
}
}
#include<stdio.h>
main()
{
int i,j,k;
for(i=1;i<=5;i++)
{
for(j=1;j<=i;j++)
printf(" ");
for(k=1;k<=7;k++)
printf("*");
printf("
");
}
for(i=1;i<=4;i++)
{
for(j=i;j<=4;j++)
printf(" ");
for(k=1;k<=7;k++)
printf("*");
printf("
");
}
}
最后一个我是先把它看做前七行,先把前七行的代码打出来,前七行又可以分成前五行和后两行,前五行和第一个题一样的代码,
后面两行都是星,就可以写
后面还有四行,排列为星空格星,所以后面应该有三个for
所以就好了,完整的如图
总结:
1.多去看老师讲的那些例题,把他们研究透了,其实也不是很难。
2.动手实践很重要,只有当动手实践过了才知道怎么去改,哪里错了,为什么错了。
3.碰到难图的时候学会拆分成自己所会的一些图形,这样分开解答会方便很多,就像最后一个,将它分成三部分,一部分一部分解决。