输出菱形

题目:输出菱形。

分析:观察规律:因为菱形是对称图形,可以分为上半部分和下半部分。

总体上看,上半部分随着行数的增加,*个数在增加,空格数在减小。下半部分恰好相反,行数增加,*个数减小,空格数增加。

具体来看,上半部分,假设共有7行。第一行*前有6个空格,只有1个*;第二行*前有5个空格,共有3个*;第三行*前有4个空格,共有5个*……所以,第i行*前有(行数-i)个空格,有(2*i-1)个*。每打印完一行即换行。

下半部分恰好和上半部分相反,行数比上半部分少一行,即有6行。第一行*前有1个空格,后有11个*;第二行*前有2个空格,有9个*;第三行*前有3个空格,有7个*……所以,第i行*前有i个空格,后有(2*(下半部分的行数+1-i)-1)个*,即有(2*(7-i)-1)个*。同样,每打印完一行即换行。

现在从键盘上输入行数,设为line。则上半部分第i行*前有(line-i)个空格,有(2*i-1)个*;下半部分共有(line-1)行,第i行*前有i个空格,后有(2*(line-1)-1)个*。则上半部分为line行的菱形程序如下:

#include<stdio.h>
int main( )
{
int line=0,i=0;//line表示上半部分的行数,i控制输出的行数。
printf("请输入行数:");
scanf("%d",&line);
//输出上半部分
for(i=1;i<=line;i++)
{
int j=0,k=0;//j控制输出的空格数,k控制输出的*个数。
//输出空格
for(j=1;j<=line-i;j++)
{
printf(" ");
}
//输出*
for(k=1;k<=2*i-1;k++)
{
printf("*");
}
//换行
printf("\n");
}
//输出下半部分
for(i=1;i<=line-1;i++)//下半部分共有line-1行
{
int j=0,k=0;//j控制输出的空格数,k控制输出的*个数。
//输出空格
for(j=1;j<=i;j++)
{
printf(" ");
}
//输出*
for(k=1;k<=2*(line-i)-1;k++)
{
printf("*");
}
//换行
printf("\n");
}
return 0;
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值