A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© bieny 中级黑马   /  2015-4-7 22:05  /  1008 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 bieny 于 2015-4-7 23:34 编辑

虽然出来想要的东西了,但觉得无论是思路还是写法上都不是很满意,大神们看看有什么需要改进的地方咩:handshake

  1. #include <stdio.h>

  2. int main()
  3. {
  4.     //高度/长度
  5.     int GaoDu=21;
  6.     //存每行输出空格 的数量,默认等于长度
  7.     int Blank=GaoDu;
  8.     //存每行输出*的数量,从1开始
  9.     int starSum=1;

  10.     //用于判断是否输出到菱形正中间
  11.     int m=0;

  12.     for (int i=0; i<GaoDu; i++) {
  13.         //
  14.         int JianBan=Blank/2;
  15.         for (int o=0; o<JianBan; o++) {

  16.             printf(" ");

  17.         }
  18.         for (int l=0; l<starSum; l++) {
  19.             printf("*");
  20.         }

  21.         //判断是否输出到菱形中间
  22.         if(m==GaoDu/2)
  23.         {

  24.             Blank+=2;
  25.             starSum-=2;
  26.         }else{

  27.             Blank-=2;
  28.             starSum+=2;
  29.             m++;
  30.         }


  31.         printf(" =%d,*=%d,m=%d\n",Blank,starSum,m);

  32.     }

  33. }
复制代码


5 个回复

倒序浏览
看不懂,我是小白 循环那点咋不注释清楚呢大神
回复 使用道具 举报
举举手 发表于 2015-4-7 22:33
看不懂,我是小白 循环那点咋不注释清楚呢大神

外层循环是循环行数,里边那俩是每行输出的空格和*号
回复 使用道具 举报
本帖最后由 流转少年 于 2015-4-7 23:21 编辑

刚看到这个代码有点蒙圈,仔细看看,好巧妙的想法,学习了,如果非要说点什么,就是可以把if语句里面的顺序颠倒一下,感觉看着会更舒服一点,个人意见,仅供参考:handshake
  1.         if(m != GaoDu/2)
  2.         {
  3.             
  4.             Blank-=2;
  5.             starSum+=2;
  6.             m++;
  7.             
  8.         }else{
  9.             
  10.             Blank+=2;
  11.             starSum-=2;
  12.             
  13.         }
复制代码
回复 使用道具 举报
流转少年 发表于 2015-4-7 23:09
刚看到这个代码有点蒙圈,仔细看看,好巧妙的想法,学习了,如果非要说点什么,就是可以把if语句里面的顺序颠倒 ...

恩恩,逻辑上来讲确实应该换过来
回复 使用道具 举报
额 ,我是这么写的
  1. public class For3{
  2.         public static void main(String arge[]){
  3.                 int u=10;
  4.                 int i;
  5.                 for(i=1;i<u;i++){
  6.                         for(int k=0;k<(u-i);k++){
  7.                         System.out.print(" ");
  8.                         }
  9.                         System.out.print("*");
  10.                         for(int d=0;d<2*i-3;d++){
  11.                                 System.out.print(" ");
  12.                         }
  13.                         if(i>1)System.out.println("*");
  14.                         else System.out.println("");
  15.                 }
  16.                 for(;i>0;i--){
  17.                         for(int k=0;k<(u-i);k++){
  18.                         System.out.print(" ");
  19.                         }
  20.                         System.out.print("*");
  21.                         for(int d=0;d<2*i-3;d++){
  22.                                 System.out.print(" ");
  23.                         }
  24.                         if(i>1)System.out.println("*");
  25.                         else System.out.println("");
  26.                 }
  27.         }
  28. }
复制代码


回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马