黑马程序员技术交流社区
标题: 输出菱形问题,大神进来看看 [打印本页]
作者: bieny 时间: 2015-4-7 22:05
标题: 输出菱形问题,大神进来看看
本帖最后由 bieny 于 2015-4-7 23:34 编辑
虽然出来想要的东西了,但觉得无论是思路还是写法上都不是很满意,大神们看看有什么需要改进的地方咩:handshake
- #include <stdio.h>
- int main()
- {
- //高度/长度
- int GaoDu=21;
- //存每行输出空格 的数量,默认等于长度
- int Blank=GaoDu;
- //存每行输出*的数量,从1开始
- int starSum=1;
- //用于判断是否输出到菱形正中间
- int m=0;
- for (int i=0; i<GaoDu; i++) {
- //
- int JianBan=Blank/2;
- for (int o=0; o<JianBan; o++) {
- printf(" ");
- }
- for (int l=0; l<starSum; l++) {
- printf("*");
- }
- //判断是否输出到菱形中间
- if(m==GaoDu/2)
- {
- Blank+=2;
- starSum-=2;
- }else{
- Blank-=2;
- starSum+=2;
- m++;
- }
- printf(" =%d,*=%d,m=%d\n",Blank,starSum,m);
- }
- }
复制代码
作者: 举举手 时间: 2015-4-7 22:33
看不懂,我是小白 循环那点咋不注释清楚呢大神
作者: bieny 时间: 2015-4-7 23:03
外层循环是循环行数,里边那俩是每行输出的空格和*号
作者: 流转少年 时间: 2015-4-7 23:09
本帖最后由 流转少年 于 2015-4-7 23:21 编辑
刚看到这个代码有点蒙圈,仔细看看,好巧妙的想法,学习了,如果非要说点什么,就是可以把if语句里面的顺序颠倒一下,感觉看着会更舒服一点,个人意见,仅供参考:handshake
- if(m != GaoDu/2)
- {
-
- Blank-=2;
- starSum+=2;
- m++;
-
- }else{
-
- Blank+=2;
- starSum-=2;
-
- }
复制代码
作者: bieny 时间: 2015-4-7 23:18
恩恩,逻辑上来讲确实应该换过来
作者: 随缘就好 时间: 2015-4-7 23:27
额 ,我是这么写的- public class For3{
- public static void main(String arge[]){
- int u=10;
- int i;
- for(i=1;i<u;i++){
- for(int k=0;k<(u-i);k++){
- System.out.print(" ");
- }
- System.out.print("*");
- for(int d=0;d<2*i-3;d++){
- System.out.print(" ");
- }
- if(i>1)System.out.println("*");
- else System.out.println("");
- }
- for(;i>0;i--){
- for(int k=0;k<(u-i);k++){
- System.out.print(" ");
- }
- System.out.print("*");
- for(int d=0;d<2*i-3;d++){
- System.out.print(" ");
- }
- if(i>1)System.out.println("*");
- else System.out.println("");
- }
- }
- }
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |