随笔?刘萌萌??呵呵

 1 #include <stdio.h>

 2 #include <cstdlib>

 3 int main()

 4 {

 5     do

 6     {

 7         int h=0;

 8         printf("请输入行数(输入0结束):");

 9         scanf("%d",&h);

10         if(h==0)

11             break;

12         else if(h<0)

13         {

14             printf("%d输入有误,请输入正整数\n",h);

15         }

16         else 

17         {

18             if(h%2==0)

19             {

20                 //偶数行

21                 int c_h=h/2;//转折行

22                 int i=1;//当前行

23                 int j=0;//行内循环计数

24                 for(i;i<=h;i++)//总行数循环

25                 {

26                     if(i<=c_h)//上半部分

27                     {

28                         //  空格数+*数=c_h+i-1

29                         //      空格数=c_h-i

30                         //         *数=2*i-1

31                         j=1;

32                         for(j;j<=c_h+i-1;j++)//空格加*

33                         {

34                             if(j<=c_h-i)//画空格

35                                 printf(" ");

36                             else

37                                 printf("+");

38                         }

39                         printf("\n");

40                     }else

41                     {

42                         //下半部分  i行跟c_h-(i-c_h)+1行情况一样的  2c_h-i+1

43                         int hh=2*c_h-i+1;//临时行

44                         j=1;

45                         for(j;j<=c_h+hh-1;j++)

46                         {

47                             if(j<=c_h-hh)

48                                 printf(" ");

49                             else

50                                 printf("+");

51                         }

52                         printf("\n");

53                     }

54                 }

55             }else

56             {

57                 //奇数行

58                 int c_h=(h+1)/2;

59                 int i=1;//当前行

60                 int j=0;//行内循环计数

61                 for(i;i<=h;i++)

62                 {

63                     if(i<=c_h)//上半部分

64                     {

65                         //  空格数+*数=c_h+i-1

66                         //      空格数=c_h-i

67                         //         *数=2*i-1

68                         j=1;

69                         for(j;j<=c_h+i-1;j++)

70                         {

71                             if(j<=c_h-i)

72                                 printf(" ");

73                             else

74                                 printf("+");

75                         }

76                         printf("\n");

77                     }else

78                     {

79                         //下半部分  i行跟c_h-(i-c_h)行情况一样的  2c_h-i

80                         int hh=2*c_h-i;//临时行

81                         j=1;

82                         for(j;j<=c_h+hh-1;j++)

83                         {

84                             if(j<=c_h-hh)

85                                 printf(" ");

86                             else

87                                 printf("+");

88                         }

89                         printf("\n");

90                     }

91                 }//行循环结束

92             }//奇数结束

93             printf("------------------\n");

94         }//正整数结束

95 

96     }while(true);

97     system("pause");

98     return 0;

99 }

 

你可能感兴趣的:(随笔)