用c语言怎么画出这个图,要用循环语句


***
*****
***

不知道为什么发出来的图不对,
是要像菱形那样的

#include<stdio.h>
void main()
{
int i,j,k;
for(i=1;i<=3;i++)
{
for(j=1;j<=3-i;j++)
printf(" ");
for(k=1;k<=2*i-1;k++)
printf("*");
printf("\n");
}
for(i=1;i<=2;i++)
{
for(j=1;j<=i;j++)
printf(" ");
for(k=1;k<=5-2*i;k++)
printf("*");
printf("\n");
}
}

要分成上下两步来做~
第一段循环打印前三行
第二段做后两行
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-07-29
这个问题用数学的方法可以很好的解决,我们先来分析一下:这个图形总共有5行星号,每一行的星号的个数正好是奇数,我们只要找出行号和星号个数的对应关系就好办了:
0---1
1---3
2---5
3---3
4---1
我们先把行号转换成对应的奇数(2n+1):
0---1
1---3
2---5
3---7
4---9
再减去行号并取绝对值:
1---(-4)---4
3---(-2)---2
5---0---0
7---2---2
9---4---4
再用行号减去上面的结果就可以了
5-4---1
5-2---3
5-0---5
5-2---3
5-4---1
最后得出公式:
row - abs((2*i+1)-row)
row:行数
i:行号
abs:取绝对值
至于每行前的空格也可以推出下列公式:
abs(row / 2 - i)

具体程序:
#include <stdio.h>
#include <stdlib.h>

void main()
{
int i, j, k, row;

row = 5;//设置行数
for(i = 0; i < row; i++)
{
//输出空格
for(k = 0; k < abs(row / 2 - i); k++)
printf(" ");
//输出星号
for(j = 0; j < row - abs((2*i+1)-row); j++)
{
printf("*");
}
printf("\n");
}
}
第2个回答  2009-07-29
#include<stdio.h>
#include<stdlib.h>

main()
{
int i,j,k;
for(i=1;i<=3;i++)
{
for(j=1;j<=3-i;j++)
printf(" ");/*打印空格*/
for(k=1;k<=2*i-1;k++)
printf("*");/*打印星号。*/
printf("\n");
}
for(i=1;i<=2;i++)/*反向打印下半部分*/
{
for(j=1;j<=i;j++)
printf(" ");
for(k=1;k<=5-2*i;k++)
printf("*");
printf("\n");
}

system("pause");
}
第3个回答  2009-07-29
#include"stdio.h"
#include"math.h"
int main()
{
int y,i;//y是纵坐标
for(y=-2;y<=2;y++)
{
i=abs(y);//绝对值
while(i!=0)
{
printf(" ");
i--;
}

while(i<2-abs(y))
{
printf("**");
i++;
}
printf("*\n");

}
return 0;
}
不如楼上的做的好。。

用c语言怎么画出这个图,要用循环语句
第一段循环打印前三行 第二段做后两行

用c语言怎么画出这个图,要用循环语句
for ( int i = -MAX; i <= MAX; i ++ ) { \/\/ 主循环,上三角跟下三角组成 for ( int j = -abs(i) ; j <= (MAX - abs(i)) * 2 - 1; j ++ ) \/\/ 计算每一行的长度 j <= 0 ? putchar(' ') : putchar ('*'); \/\/ j为非正数时输出空格,正数时候输出星星 putc...

C语言中如何输出图形
你可以采用循环的方法来做,需要输出A的位置的时候就输出A,其他地方就输出空格,就行了 include<stdio.h> void main(){ int i,j,n;printf("请输入要输出几行:\\n");scanf("%d",&n);for(i=0;i<=n;i++){ for(j=0;j<n-i;j++)\/\/每行前的空格控制 printf(" ");for(int k=0...

C语言循环输出图形
Sleep(1000);\/\/vc用这个 delay(1000);\/\/tc用这个 system("cls");yourprintf4();Sleep(1000);\/\/vc用这个 delay(1000);\/\/tc用这个 }while(getch()!='q');\/\/按q退出图形循环,不然一直循环显示.} 我只简单画了三角形和方形,只要你自己有空用printf试好另外再复杂的图形加入上面4个自定义的...

用C语言如何用递归方法画出下图图形 只需提供思路不用具体代码 急!谢 ...
需要有一个画直线的库函数供使用。以下讲思路。定义点的类型为具有二维坐标,比如 struct point { double x; double y;} 之类。定义多边形的类型为元素是点的线性表,比如链表 struct polygon { struct point *p; struct polygon* next; },需要能按顺序访问各个点,并需要提供insert函数以做插入点...

用C语言写出画一个圆形的代码
可以参考下面的代码:include<math.h> main(){ double y;int x,m;for(y=10;y>=-10;y--){ m=2.5*sqrt(100-y*y);for(x=1;x<50-m;x++)printf(" ");printf("*");for(;x<50+m;x++)printf(" ");printf("*\\n");} } ...

使用c语言编程输出以下图形该怎么写呀?
\/\/这个循环是输出左边的高度的 for(j=0;j<height-2;j++){ printf("*"); \/\/输出左边的 for(k=0;k<width-2;k++)\/\/在输出空格时,要把左边高度的*和右边高度的星减掉,所有减2 { printf(" "); \/\/输出空格 } printf("*"); \/\/输出右边的 printf("\\n");} \/\/输出最后一...

求一段代码,用c语言画个图形出来,能动的最好。谢谢啦
int main(void){ \/* request auto detection *\/ int gdriver = DETECT, gmode, errorcode;int midx, midy;int radius = 100;\/* initialize graphics and local variables *\/ initgraph(&gdriver, &gmode, "");\/* read result of initialization *\/ errorcode = graphresult();if (errorcode...

C语言输出一个菱形图案(有程序)
菱形,就是如下所示的图形,总行数与总列数相等:写一个程序,根据用户输入的总行数,打印出菱形。这个题目主要是找出规律,考察读者的逻辑思维。你可以从第一行开始,遍历所有的列,也可以从第一列开始,遍历所有的行。下面的程序从第一行开始,遍历所有的列。设菱形的总行数为line,总列数为column,...

C语言中switch语句的NS流程图怎么画啊?
绘制C语言中switch语句的NS流程图,需要首先理解switch语句的结构和逻辑,然后根据Nassi-Shneiderman图的规则,使用流程图符号表示出条件判断、执行路径和循环等结构。详细 1. 理解switch语句结构:- switch语句用于根据表达式的值选择多个执行路径中的一个。- 它由一个控制表达式和多个case标签组成,每个case...

相似回答