如果我们想在屏幕上输出如上的图案?该怎么做呢?看到这样的图形,一定会联想到我们之前打印过的99乘法表,只不过是将式子换成了*号.
首先我们来考虑,先不看后六行,前七行可以看作是打印与奇数行相对应的*号.
所以我们可以定义一个整型变量i,用来表示行数,用j来表示的数量.由于我们要打印奇数行对应的*号数量,所以我们在利用for循环时,变量i变化一定是i= i + 2.前7行的打印我们很容易做到,后六行该怎么做打印出的数量才能与前六行对称呢?
可以利用两个if循环嵌套在for循环中,也就是第七行为一个边界条件,第七行之前包括第七行都是打印对应行数的*,因此在后六行我们可以将i的值赋给j,当j的值小于总行数时,我们就打印,变量j的变化为++j(即依次加1).此时后六行的*数量就会与前六行呈对称状.
我们要注意的时以上提到的行数都是在考虑有偶数行的情况,由于变量i的变化为i=i+2,也就是说,偶数行在程序运行中不会打印出来.程序如下所示.
#include <stdio.h>
#include <stdlib.h>
int main(){
int i;
int j;
for (i = 1;i <= 25;i+=2){
if (i <= 13){ //前七行打印对应奇数行的*
for (j = 1;j <= i;++j){
printf("*");
}
printf("\n");
}
if (i > 13){
for (j = i;j<=25;++j){ //后六行与前六行*数目对称
printf("*");
}
printf("\n");
}
}
system("pause");
return 0;
}