啊哈磊_编程从这里起步

标题: 【初学者】关于【for循环】打印菱形的问题 [打印本页]

作者: Hillman    时间: 2016-2-29 09:24
标题: 【初学者】关于【for循环】打印菱形的问题
编程界诸君,请教一个问题。说实话,for打印菱形我看了很多答案,有时候能看懂,但是真的回味着编写时,总是莫名地出错。
比如说,对我来讲理解起来比较容易的代码就是for循环里嵌套一个if +else的语句来实现“*”和“空格”的打印。
我有点迷茫,不知道作为一个编程的人,他的策略和思路是怎么来的。。。。我想培养,可是有点找不到入门点。
请教热心的朋友指点迷津。

——一个工作多年,初接触编程的理工科老男孩。

作者: huyu_shuang    时间: 2016-3-2 22:36
本帖最后由 huyu_shuang 于 2016-3-2 22:37 编辑

最简单的方法是分上下两部分输出:
#include <stdio.h>
int main()
{
    int i,j;
    for(i=1;i<=5;i++)//输出上三角形
      {
          for(j=5-i;j>0;j--)//输出空格
           printf(" ");
         for(j=1;j<=2*i-1;j++)//输出"*"
            printf("*");
        printf("\n");  
      }
    for(i=1;i<5;i++)//输出下三角形
      {
         for(j=1;j<=i;j++)//输出空格
            printf(" ");
        for(j=9-2*i;j>0;j--)//输出"*"
           printf("*");
        printf("\n");
      }
    return (0);
  }
作者: 杨瑞666    时间: 2016-3-22 15:42
你其实可以这么想,用for语句循环是为了完成输出9行*,for语句主要是完成九行,具体你要输出什么怎么输出和他关系并不大,然后你明确你要输出“*”但是是组成菱形的就涉及到空格的问题,仔细观察你会发现第一行空的格数和第九行一样,同理第二行和第8行一样,一直到第五行输出9个*没有空格。所以我们想只要满足第一行和第九行输出" 四个空格一个*“就可以了其他行数以此类推,那么什么控制行数呢,是a,for循环中控制行数的是a,判断行数是否为第一行或第九行涉及判断语句if,只要满足if语句中的判断输出要输出的内容不就是答案了看下面的代码。
int main()
{
        int a;
    for(a=1;a<=9;a++)
    {
    if(a==1||a==9)
    printf("    *\n");
    if(a==2||a==8)
    printf("   ***\n");
    if(a==3||a==7)
    printf("  *****\n");
    if(a==4||a==6)
    printf(" *******\n");
    if(a==5)
    printf("*********\n");
    }
        system("pause");
        return 0;
}
满足第一行或第九行就输出”四个空格一个*".满足第二行或第八行就printf ("三个空格三个*")
作者: 杨瑞666    时间: 2016-3-22 15:49
int main()
{
        int a;//设变量a
    for(a=1;a<=9;a++)//完成输出九行内容
    {
    if(a==1||a==9)//判断当前行数是不是第一行或第九行
    printf("    *\n");//是则输出四个空格一个*,不是则继续向下运行
    if(a==2||a==8)//判断当前行数是否为第二行或第八行
    printf("   ***\n");//是则输出三个空格三个*,不是则继续向下运行
    if(a==3||a==7)//判断当前行数是否为第三行或第七行
    printf("  *****\n");//是则输出两个空格5个*,不是则继续向下运行
    if(a==4||a==6)//判断当前行数是否为第四行或第六行
    printf(" *******\n");//是则输出一个空格7个*,不是则继续向下运行
    if(a==5)//判断当前行数是否为第五行
    printf("*********\n");//是则输出9个*,不是则继续向下运行
    }
        system("pause");
        return 0;
}
作者: 杨瑞666    时间: 2016-3-22 15:51
输出语句后还有/n记得写
为了到下一段,所有*都会在一排




欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/) Powered by Discuz! X3.2