codeup之沙漏图形
Description
问题:输入n,输出正倒n层星号三角形。首行顶格,星号间有一空格,效果见样例
输入样例:
3
输出样例:
* * *
* *
*
* *
* * *
数据规模 1<= n <=50
idea
- 三角形不是空心的,也不是完全实心
- 正负对角线围起来的区域,奇数行的奇数列 或 偶数行的偶数列才为*(交错
- 输入多个n值
solution
#include <stdio.h>
#include <string.h>
int main(){
int n, m;
while(scanf("%d", &n) != EOF){
m = 2*n - 1;
char a[m][m];
memset(a, ' ', sizeof(a));
for(int i = 0; i < m; i++){
if(i % 2 == 0){
a[0][i] = '*';
a[m-1][i] = '*';
}
}
for(int i = 0; i < m; i++)
for(int j = 0; j < m; j++){
if((i%2 == 0 && j%2 == 0) || (i%2 == 1 && j%2 == 1)){
if((i <= j && i <= m - 1 - j) || (i >= j && j >= m - i - 1))
a[i][j] = '*';
}
}
for(int i = 0; i < m; i++){
for(int j = 0; j < m; j++)
printf("%c", a[i][j]);
printf("\n");
}
}
return 0;
}