问题 D: 沙漏图形 tri2str [1*+] codeup

问题:输入n,输出正倒n层星号三角形。首行顶格,星号间有一空格,效果见样例

输入样例:

3

输出样例;

* * *
 * * 
  *
 * * 
* * *

参考代码:

#include
int main(){
	int n;
	while(scanf("%d",&n) != EOF){
		int k = 2*n - 1;//一行最多的元素数
		int maxrow;	//一行包含多少个元素
		int jg1;//判断标志,是输出空格还是*
		for(int i = 0; i < n; i++){
			maxrow = k - i;	
			jg1 = 0;
			//开始输出第一个*号前有几个空格
			for(int j = 0; j < i; j++){
				printf(" ");
			}
			for(int j = i; j < maxrow; j++){
				if(jg1 % 2 == 0){
					printf("*");
				}
				else{
					printf(" ");
				}
				jg1++;
			}
			printf("\n");
		}
		//倒着再输出一遍,注意别重复输出一个*的那一行
		for(int i = n-2; i >= 0; i--){
			maxrow = k - i;	
			jg1 = 0;
			for(int j = 0; j < i; j++){
				printf(" ");
			}
			for(int j = i; j < maxrow; j++){
				if(jg1 % 2 == 0){
					printf("*");
				}
				else{
					printf(" ");
				}
				jg1++;
			}
			printf("\n");
		}
	}
	return 0;
}

你可能感兴趣的:(codeup习题)