啊哈磊_编程从这里起步
标题:
【初学者】关于【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