大家过来围观下啊。。。。
这个用for语句的嵌套怎样实现的求注释 本帖最后由 风扫地 于 2011-3-15 20:36 编辑我曾经写过一个空心菱形的。。边界打印的判断。是用直角坐标系的直线方程来理解的。(横轴,竖轴)代码有点长,希望对你有所提示。。
#include "stdio.h"
void LingXing(int);
void main()
{
int n;
printf("Please input a integer!");
scanf("%d",&n);//边长为n..
LingXing(n);
}
void LingXing(int n)
{
int i,j;
for(i=1;i<2*n;i++)//控制行边长为n,在横轴上就有2*n-1个位置
{
for(j=1;j<2*n;j++)//控制列 边长为n,在纵轴上就有2*n-1个位置
{
if(i<=n) //上半个三角行
{
if(j==(n+1-i)||j==(n-1+i))
/*
左上边的边界是直线,直角坐标系中的直线方程为X+Y=n+1,所以当行数为i(即纵轴y)是需要打印的坐标为(n+1-i,i)
而右上边的边界可以通过同行数的边界相加等于2n这个条件来算出,也可以通过直线方程来得到。。。(n-1+i,i)
如果是实心的判断条件改为j>=(n+1-i)&&j<=(n-1+i) 在边界之内。。
*/
printf("*");
else printf(" ");
}
else //下半个三角
{
if(j==(i+1-n)||j==(3*n-i-1))//j>=(i+1-n)&&j<=(3*n-i-1)
printf("*");
else printf(" ");
}
}
printf("\n");//一行结束
}
} 无限感激中。。。。费解啊 本帖最后由 风扫地 于 2011-3-20 00:22 编辑
见笑。。
希望大家多多斧正。。 //这样的程序如何,神一样的,哈哈自己佩服自己
int main(int argc, char* argv[])
{
int length=11,i,m;
printf("请输入菱形中间长度奇数哦\n");
//scanf("%d",&length);
for(i=1;i<=length;i++)//行
{
for(m=1;m<=length;m++)//列
{
if(i<=length/2+1)
{
if((length/2+2-i<=m)&&(length/2+i>=m))
{
printf("*");
}
else
printf(" ");
}
else
{
if((m>=i-length/2)&&(m<=length+length/2+1-i))
{
printf("*");
}
else
printf(" ");
}
}
printf("\n");
}
return 0;
} #include "stdio.h"
void LingXing(int);
void main()
{
int n;
printf("Please input a integer!");
scanf("%d",&n);//边长为n..
LingXing(n);
}
void LingXing(int n)
{
int i,j;
for(i = 1;i < 2*n;i++)
{
if(i <= n)
{
for(j = 1;j < 2*n;j++)
{
if(j >=n+1-i && j <= n+i-1)
{
printf("*");
}
else
{
printf(" ");
}
}
}
else
{
for(j= 1;j < 2*n;j++)
{
if(j >i -n && j <= 3*n-1-i)
{
printf("*");
}
else
{
printf(" ");
}
}
}
putchar('\n');
}
} 照着葫芦画个瓢{:5_109:}
页:
[1]