【一道C语言图形题,已知内层和外层菱形的高度,输出一空心菱形】

文章详细描述了一个C程序,通过用户输入的两个值hOut和hIn计算差值,并利用嵌套循环生成不同模式的星号输出。程序首先处理hOut大于hIn的情况,然后分别打印hIn、-hIn和-hDiff部分的星号布局。
摘要由CSDN通过智能技术生成

#include <stdio.h>
#include <stdlib.h>

#if 1

#define HMAX 50
int main()
{
  int hOut=0,hIn=0,hDiff=0;
  int x=0,y=0,z=0,g=0;
  int t=0;
  while(1){
    printf("hOut,hIn:\n");
       scanf("%d%d",&hOut,&hIn);
       if(hIn<hOut<HMAX&&hIn>=0){
        break;
       }else{
        printf("error\n");
       }
  }
  hDiff=hOut-hIn;
  for(int i=0;i<(hDiff);i++){ //hDiff
      y=hOut-i-1;
      x=2*i+1;
      while(y--)
      printf(" ");
      while(x--)
      printf("*");
      printf("\n");
  }

  for(int i=0;i<hIn;i++){    //hIn
      y=hOut-i-1-hDiff;
      x=2*i+1;
      t=i+1; //half in
      z=hOut-y-t;
      g=z;
      while(y--)
      printf(" ");

      while(z--)
      printf("*");

      while(x--)
      printf(" ");

      while(g--)
      printf("*");

      printf("\n");
  }


   for(int i=0;i<(hIn-1);i++){    //-hIn
      y=hOut-hDiff-(hIn-i)+1;
      x=(hIn-i-1)*2-1;
      t=i+1; //half in
      z=hDiff;
      g=hDiff;
      while(y--){
      printf(" ");
      //printf("y=%d \n",y);
      }
      while(z--)
      printf("*");

      while(x--)
      printf(" ");

       while(g--)
      printf("*");
      printf("\n");

  }
 hDiff=hOut-hIn;
for(int i=0;i<(hDiff);i++){ //-hDiff
      y=hOut-hDiff+(i); //print space out
      x=(hDiff*2-2*(i))-1;  //print space in
      while(y--)
      printf(" ");
      while(x--)
      printf("*");
      printf("\n");
  }



}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值