用c语言循环读取坐标,C语言之For循环--1(星状图)

本文通过多种方法实现星状图的绘制,包括使用两个循环、一个循环、输入任意长度的星状图等,展示了如何利用C语言的数据结构及控制流程来完成不同样式的图形输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在学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");

}

for(i=1;i<=4;i++) { for(j=1;j<=4-i;j++) printf(" "); for(k=1;k<=2*i-1;k++) printf("*"); printf("\n"); } for(i=2;i<=4;i++) { for(j=1;j<=i-1;j++) printf(" "); for(k=1;k<=2*(5-i)-1;k++) printf("*"); printf("\n"); } 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");

}

从中可以看出数学的思想挺重要的,这是第一个比较完整的博客文章!加油!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值