for循环打印菱形

发布时间 2023-04-27 19:16:48作者: harper886

for循环打印菱形


今天我们来看一个使用双重for循环打印菱形的经典题目
总体来说还是要找到规律,用外层循环控制行数。内层循环控制空格和星星的数量
关键是要找到需要打印多少个空格和星星

#include <stdio.h>

int main()
{
/*
  我们就先写一个7行的菱形然后再写n行的菱形
  */
//先写前4行
//for(int i=0;i<4;i++){
//	if(i!=0){
//		printf("\n");
//	}
//	for(int j=0;j<3-i;j++){
//		printf("  ");
//	}
//	for(int k=0;k<2*i+1;k++){
//		printf(" *");
//		
//	}
//	
//}
////打印下面三行
//  for(int i=0;i<3;i++){
//	  printf("\n");
//	  for(int j=0;j<i+1;j++){
//		  printf("  ");
//	  }
//	  for(int k=0;k<2*(3-i)-1;k++){
//		  printf(" *");
//		  
//	  }
//  }
//  
  //下面我们来打印n行菱形
  int n;
  scanf("%d",&n);
  n=(n+1)/2;//这个是得到上面的部分有几行
  
  
  for(int i=0;i<n;i++){
	  if(i!=0){
		  printf("\n");//这里是在每行结束进行换行,且第一行不换行
	  }
	  for(int j=0;j<n-1-i;j++){
		  printf("  ");//我这里是直接打印了两个空格
	  }
	  for(int k=0;k<2*i+1;k++){//关键是找到循环规律
		  printf("* ");//复制代码来看每个星星后面有个空格
		  
	  }
	  
  }
	
  
	
  /*
	打印下半部分,关键是要找到规律
	
	可以先用一个确定的值进行打印最后换成n;这样比较直观
   */
  
  for(int i=0;i<n-1;i++){
	  printf("\n");
	  for(int j=0;j<i+1;j++){
		  printf("  ");
	  }
	  for(int k=0;k<2*(n-1-i)-1;k++){
		  printf("* ");
		  
	  }
  }
  
	return 0;
}