拿纸数、画,别空想
1.上三角
总之:把打印几个星,空个格,分开考虑
首先,两层循环,一层做换行,一层做行内打印
打印空格和分两次做,用内部两个循环
三角形先输出空格" ",后输出 ,发现规律,先打印n-i-1个空格,再打印* 每行2(i-1)+1
int main()
{
int n = 0;
scanf("%d", &n);
// 上三角
for (int i = 1; i<= n; i++)
{
// 空格
for (int j = 1; j <=n-i ; j++)
{
printf(" ");
}
// *
for (int j = 1;j<=2*(i-1)+1; j++)
{
printf("*");
}
printf("\n");
}
return 0;
}
2. 下三角
总之:把打印几个星,空个格,分开考虑
同上两层
*数:2(n-i+1)
空格数:每行空 i-1个空格
int main()
{
int n = 0;
scanf("%d", &n);
for (int i = 1; i <= n; i++)
{
// 空格
for (int j = 1; j <=i-1 ; j++)
{
printf(" ");
}
for (int j = 1;j<=2*(n-i)+1; j++)
{
printf("*");
}
printf("\n");
}
return 0;
}
3. 菱形(拼起来)
思路:N/2 分上下两半做,然后不断调试
开始,我发现,奇数差多了,偶数只是格式不对
后来我想,让偶数也多打一行,结果,奇数偶数会
我让奇数-1成为偶数,然后让下三角部分的从2开始打印,就省去重复的一行
// 菱形 : 奇数多了一层、偶数格式不对
int main()
{
int n = 0;
scanf("%d", &n);
if(n%2!=0)
{ n -= 1; }
int a = n / 2;
int b = n - a;
for (int i = 1; i <= a; i++)
{
// 空格
for (int j = 1; j <= a - i; j++)
{
printf(" ");
}
// *
for (int j = 1; j <= 2 * (i - 1) + 1; j++)
{
printf("*");
}
printf("\n");
}
// 我让奇数-1,然后让下面从2开始打印
for (int i = 2; i <= b; i++)
{
// 空格
for (int j = 1; j <= i - 1; j++)
{
printf(" ");
}
for (int j = 1; j <= 2 * (b - i) + 1; j++)
{
printf("*");
}
printf("\n");
}
return 0;
}