1.利用字符串数组输出图案
思路:
用字符串数组来输出,第一次循环向这个字符串数组中填 ‘ * ’,i 从中间向左(⬅️),j 从中间向右(➡️)。
第二次循环填 ‘ ’,i 从左向右(➡️),j 从右向左(⬅️)。
char str[] = " "; //定义为空
int i = 0,j = 0;
for ( i=(strlen(str)/2),j=(strlen(str)/2); i>=0 && j<=strlen(str); i--,j++ )
{
str[i] = '*';
str[j] = '*';
printf("%s\n",str);
}
for ( i=0,j=(strlen(str)-1); i<(strlen(str)/2) && j>=(strlen(str)/2); i++,j-- )
{
str[i] = ' ';
str[j] = ' ';
printf("%s\n",str);
}
2.单纯用循环输出图案
int line = 0;
int i = 0;
scanf("%d", &line);//7
//1. 打印上半部分
for(i=0; i<line; i++)
{
//打印一行
//1. 打印空格
int j = 0;
for(j=0; j<line-1-i; j++)
{
printf(" ");
}
//2. 打印*
for(j=0; j<2*i+1; j++)
{
printf("*");
}
printf("\n");
}
//2. 打印下半部分
for(i=0; i<line-1; i++)
{
//打印一行
//1. 打印空格
int j = 0;
for(j=0; j<i+1; j++)
{
printf(" ");
}
//2. 打印*
for(j=0; j<2*(line-1-i)-1; j++)
{
printf("*");
}
printf("\n");
}
3.对比两种方法
- 第一种方法循环次数少,高效。
- 第二种方法多次循环,不高效。
- 相比来说,两种方法都很好理解。