C语言请用字符串输出菱形,如何更好地用c语言如何输出菱形

如何更好地用c语言如何输出菱形

引导语;不少考生疑惑如何才能更好c语言如何输出菱形,以下是百分网小编推荐给大家的c语言如何输出菱形,欢迎阅读!

题目:输出行列都相等的菱形,如5行5列:

行列 12345

1 *

2 ***

3 *****

4 ***

5 *

分析:

当行数等于总行数的一半时,'*'是递增的,递增为2。

当行数大于总行数的一半时,'*'是递减的,递增为2。

设有一个行列为n的菱形,

我们用变量i作为行数,以0开始,i

k作为n菱第i行要输出的'*'个数。

则i<=n的中值(用m表示,m=(n-1)/2)时,k递增,i>m时,k递减。

因为k相对于m行对称,所以:

当i>m时,i每增加i-m时的k值就和第m-i行的k值相等,即第i-m行和第m-(i-m)相对称。

所以得出结果:

当i<=m时,k=2i+1

当i>m时,k=2(m-(i-m))+1,(m=(n-1)/2)。即k=2n-2i-1

由于我们只需要输出'*'左边的'空格即可,所以每行'*'左边的空格的个数为:(n-每行的k)/2。

每行循环输出空格,再循环输出每行的'*',再输出回车,结束一行。

这样我们就可以开始编程了。

#include

int main()

{

int i,j,k,n;//定义四个变量:i是行,j每行*号前的空格数,k每行的*号数

printf("please input odd n:");

scanf("%d",&n); //输入奇数n

for (i=0;i

{

if(n>=2*i+1) //判断k值

k=2*i+1;

else

k=2*n-2*i-1;

for(j=(n-k)/2;j>0;j--) //循环输出空格

printf(" ");

for(;k>0;k--) //循环输出*号

printf("*");

printf("n"); //输出回车结束一行

}

本来呢题目就到止结束了,但上面的程序还不够完美

比如说,别人输入n值为偶数怎么办?输入非数值呢?

我们加一点东西进去:

#include

int main()

{

int i,j,k,n=0; //这里给n赋初值,即使输入非数值,n也可有确切的值。

do{ //增加一个大循环,可以令n可以输入多次以观察不同的结果。

printf("please input odd n, 0 to exit:");//当输入0的时候,退出大循环,结束程序。

scanf("%d",&n);

if (!(n%2)) //增加对输入偶数的判断。

{

printf("you input a even, please input again.n");

continue;

}

for (i=0;i

{

if(n>=2*i+1)

k=2*i+1;

else

k=2*n-2*i-1;

j=(n-k)/2;

for(;j>0;j--)

printf(" ");

for(;k>0;k--)

printf("*");

printf("n");

}

}while(n);

return 0;

}

【如何更好地用c语言如何输出菱形】相关文章:

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值