传统方法都是分别打印上菱形和下菱形,今天我来提供一种数学找规律的方法
思路
和传统方法相同的点在于,本方法也是通过先打印空格再打印星号来形成菱形,因此要对空格和星号分别找规律。
空格规律
假设总行数为5行
行数 | 空格数 |
---|---|
1 | 2 |
2 | 1 |
3 | 0 |
4 | 1 |
5 | 2 |
假设总行数为n,可以得出规律: 空格数 < |(((n+1)/2)-行数)+1| 。(注:|| 为绝对值)
星号规律
假设总行数为5行
行数 | 星号数 |
---|---|
1 | 1 |
2 | 3 |
3 | 5 |
4 | 3 |
5 | 1 |
假设总行数为n,可以得出规律: 星号数 < n-2* |(((n+1)/2)-行数)+1| 。(注:|| 为绝对值)
代码
#include <stdio.h>
#include <math.h>
int main()
{
int n = 0;
printf("请输入行数n\n");
scanf("%d",&n);
n=2*n-1;//输入的行数为上半菱形的行数,为符合规律,将n赋值总行数
for(int i = 1;i<n+1;i++){
for(int j=1;j<abs(((n+1)/2)-i)+1;j++){
printf(" ");
}
for(int k=1;k<n-2*abs(((n+1)/2)-i)+1;k++){
printf("*");
}
printf("\n");
}
return 0;
}
结果截图展示
奇数:
偶数:
如有错误,欢迎讨论指正!