C语言之For循环--1(星状图)


最近在学C的数据结构,顿感C语言for循环不够理解深刻,所以敲一些代码

1.上半部分与下半部分分别用两个循环

#include<stdio.h>
#include<stdlib.h>
#include<stdio.h>
#include<stdlib.h>
/*    *     
     ***   
    *****
   *******   上半部分与下半部分分别用两个循环 
    *****        
     ***
      *   
*/
int main()
{
  int i,j,k; 
#include<stdio.h>
#include<stdlib.h>
#define IABS(x)((x)>0?(x):-(x))
/*    *     
     ***   
    *****
   *******     将星状图的中心看作是坐标轴的中心,然后打印*满足的条件 
    *****             是IABS(x)+IABS(y)<=c
     ***
      *    
*/
int print(int size)
{
 int c,x,y;
 c=size;   
 for(y=-c;y<=c;y++)
  {
  for(x=-c;x<=c;x++)
   {
    if(IABS(x)+IABS(y)==c)
       printf("*");
    else 
       printf(" ");
   }
   printf("\n"); 
  }
  return 1;
}int main()
{
   print(5);
  system("pause");    
} 


for(i=1;i<=4;i++) { for(j=1;j<=4-i;j++) printf(" "); for(k=1;k<=2*i-1;k++) printf("*"); printf("\n"); } for(i=2;i<=4;i++) { for(j=1;j<=i-1;j++) printf(" "); for(k=1;k<=2*(5-i)-1;k++) printf("*"); printf("\n"); } system("pause");}

2.上半部分与下半部分作为一个整理,只用一个for循环

#include<stdio.h>
#include<stdlib.h>
/*    *     
     ***   
    *****
   *******   上半部分与下半部分作为一个整理 
    *****        只用一个for循环 
     ***
      *
      
*/
int main()
{
    int i,j,k,m;
    for(i=1;i<=7;i++)
     {  
       if(i<=4)
       {
        for(j=1;j<=4-i;j++)
          printf(" ");
        for(k=1;k<=2*i-1;k++)
          printf("*");  
          printf("\n");   
       }    
       if(i>4) 
       {
           
           { 
       for(j=1;j<=i-3-1;j++)
            printf(" ");
       for(k=1;k<=2*(5-(i-3))-1;k++)
            printf("*");
         printf("\n");
    
           }
       }                    
    } 
    system("pause"); 
}
 

3.   输入任意长度的星状图

#include<stdio.h>
#include<stdlib.h>
/*    *    
     ***  
    *****
   *******     输入任意长度的星状图
    *****       
     ***
      *
     
*/
int main()
{
    int i,j,k,N;
    printf("请输入一个奇数");
    while(scanf("%d",&N))
  {
       for(i=1;i<=N;i++)
     { 
       if(i<=N/2+1)
       {
        for(j=1;j<=(N/2+1)-i;j++)
          printf(" ");
        for(k=1;k<=2*i-1;k++)
          printf("*"); 
          printf("\n");  
       }   
       else 
       {                             
          
           {
       for(j=1;j<=(N/2+1)-(1+N-i);j++)
            printf(" ");
       for(k=1;k<=2*(1+N-i)-1;k++)
            printf("*");
         printf("\n");
   
           }
       }                   
    }
   }
    system("pause");
}
 
4.利用坐标轴的知识(推荐之):将星状图的中心看作是坐标轴的中心,然后打印*满足的条件 是IABS(x)+IABS(y)<=c

#include<stdio.h>
#include<stdlib.h>
#define IABS(x)((x)>0?(x):-(x))
/*    *     
     ***   
    *****
   *******     将星状图的中心看作是坐标轴的中心,然后打印*满足的条件 
    *****             是IABS(x)+IABS(y)<=c
     ***
      *    
*/
int print(int size)
{
 int c,x,y;
 c=size;   
 for(y=-c;y<=c;y++)
  {
  for(x=-c;x<=c;x++)
   {
    if(IABS(x)+IABS(y)==c)
       printf("*");
    else 
       printf(" ");
   }
   printf("\n"); 
  }
  return 1;
}int main()
{
   print(5);
  system("pause");    
} 

5.只打印星状的边界

#include<stdio.h>
#include<stdlib.h>
#define IABS(x)((x)>0?(x):-(x))
/*
 打印效果:
         *
       * * 
      *   *   
       * * 
        * 
*/ 
int print(int size)
{
 int c,x,y;
 c=size;   
 for(y=-c;y<=c;y++)
  {
  for(x=-c;x<=c;x++)
   {
    if(IABS(x)+IABS(y)==c)
       printf("*");
    else 
       printf(" ");
   }
   printf("\n"); 
  }
  return 1;
}int main()
{
   print(5);
  system("pause");    
} 

6.打印十字型

#include<stdio.h>
#include<stdlib.h>
#define IABS(x)((x)>0?(x):-(x))
/*
  打印效果:
    *   * 
     * * 
      *
     * *
    *   *         
*/ 
int print(int size)
{
 int c,x,y;
 c=size;   
 for(y=-c;y<=c;y++)
  {
  for(x=-c;x<=c;x++)
   {
    if(IABS(x)==IABS(y))
       printf("*");
    else 
       printf(" ");
   }
   printf("\n"); 
  }
  return 1;
}
int main()
{
   print(5);
  system("pause");    
} 

7.星状图的变型:

#include<stdio.h>
#include<stdlib.h>
#define IABS(x)((x)>0?(x):-(x))
/*
打印效果如下 
   A         - 
  ABA       --- 
 ABCBA     --0-- 
  ABA       --- 
   A         - 
*/ 
   int print(int size)
{
 int x,y;
 for(y=-size;y<=size;y++)
  {
  for(x=-size;x<=size;x++)
   {
    if(IABS(x)+IABS(y)<=size)
       printf("%c",'A'+size-IABS(x)-IABS(y));// 
    else 
       printf(" ");
   }
   printf("\n"); 
  }
  return 1;
}
int main()
{
   print(5);
  system("pause");    
} 




 

 从中可以看出数学的思想挺重要的,这是第一个比较完整的博客文章!加油!





  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值