最近在学C的数据结构,顿感C语言for循环不够理解深刻,所以敲一些代码
1.上半部分与下半部分分别用两个循环
#include
#include
#include
#include
/* *
***
*****
******* 上半部分与下半部分分别用两个循环
*****
***
*
*/
int main()
{
int i,j,k;
#include
#include
#define IABS(x)((x)>0?(x):-(x))
/* *
***
*****
******* 将星状图的中心看作是坐标轴的中心,然后打印*满足的条件
***** 是IABS(x)+IABS(y)<=c
***
*
*/
int print(int size)
{
int c,x,y;
c=size;
for(y=-c;y<=c;y++)
{
for(x=-c;x<=c;x++)
{
if(IABS(x)+IABS(y)==c)
printf("*");
else
printf(" ");
}
printf("\n");
}
return 1;
}int main()
{
print(5);
system("pause");
}
2.上半部分与下半部分作为一个整理,只用一个for循环
#include
#include
/* *
***
*****
******* 上半部分与下半部分作为一个整理
***** 只用一个for循环
***
*
*/
int main()
{
int i,j,k,m;
for(i=1;i<=7;i++)
{
if(i<=4)
{
for(j=1;j<=4-i;j++)
printf(" ");
for(k=1;k<=2*i-1;k++)
printf("*");
printf("\n");
}
if(i>4)
{
{
for(j=1;j<=i-3-1;j++)
printf(" ");
for(k=1;k<=2*(5-(i-3))-1;k++)
printf("*");
printf("\n");
}
}
}
system("pause");
}
3. 输入任意长度的星状图
#include
#include
/* *
***
*****
******* 输入任意长度的星状图
*****
***
*
*/
int main()
{
int i,j,k,N;
printf("请输入一个奇数");
while(scanf("%d",&N))
{
for(i=1;i<=N;i++)
{
if(i<=N/2+1)
{
for(j=1;j<=(N/2+1)-i;j++)
printf(" ");
for(k=1;k<=2*i-1;k++)
printf("*");
printf("\n");
}
else
{
{
for(j=1;j<=(N/2+1)-(1+N-i);j++)
printf(" ");
for(k=1;k<=2*(1+N-i)-1;k++)
printf("*");
printf("\n");
}
}
}
}
system("pause");
}
4.利用坐标轴的知识(推荐之):将星状图的中心看作是坐标轴的中心,然后打印*满足的条件 是IABS(x)+IABS(y)<=c
#include
#include
#define IABS(x)((x)>0?(x):-(x))
/* *
***
*****
******* 将星状图的中心看作是坐标轴的中心,然后打印*满足的条件
***** 是IABS(x)+IABS(y)<=c
***
*
*/
int print(int size)
{
int c,x,y;
c=size;
for(y=-c;y<=c;y++)
{
for(x=-c;x<=c;x++)
{
if(IABS(x)+IABS(y)==c)
printf("*");
else
printf(" ");
}
printf("\n");
}
return 1;
}int main()
{
print(5);
system("pause");
}
5.只打印星状的边界
#include
#include
#define IABS(x)((x)>0?(x):-(x))
/*
打印效果:
*
* *
* *
* *
*
*/
int print(int size)
{
int c,x,y;
c=size;
for(y=-c;y<=c;y++)
{
for(x=-c;x<=c;x++)
{
if(IABS(x)+IABS(y)==c)
printf("*");
else
printf(" ");
}
printf("\n");
}
return 1;
}int main()
{
print(5);
system("pause");
}
6.打印十字型
#include
#include
#define IABS(x)((x)>0?(x):-(x))
/*
打印效果:
* *
* *
*
* *
* *
*/
int print(int size)
{
int c,x,y;
c=size;
for(y=-c;y<=c;y++)
{
for(x=-c;x<=c;x++)
{
if(IABS(x)==IABS(y))
printf("*");
else
printf(" ");
}
printf("\n");
}
return 1;
}
int main()
{
print(5);
system("pause");
}
7.星状图的变型:
#include
#include
#define IABS(x)((x)>0?(x):-(x))
/*
打印效果如下
A -
ABA ---
ABCBA --0--
ABA ---
A -
*/
int print(int size)
{
int x,y;
for(y=-size;y<=size;y++)
{
for(x=-size;x<=size;x++)
{
if(IABS(x)+IABS(y)<=size)
printf("%c",'A'+size-IABS(x)-IABS(y));//
else
printf(" ");
}
printf("\n");
}
return 1;
}
int main()
{
print(5);
system("pause");
}
从中可以看出数学的思想挺重要的,这是第一个比较完整的博客文章!加油!