最近在学C的数据结构,顿感C语言for循环不够理解深刻,所以敲一些代码
1.上半部分与下半部分分别用两个循环
#include<stdio.h> #include<stdlib.h> #include<stdio.h> #include<stdlib.h> /* * *** ***** ******* 上半部分与下半部分分别用两个循环 ***** *** * */ int main() { int i,j,k;
#include<stdio.h> #include<stdlib.h> #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<stdio.h> #include<stdlib.h> /* * *** ***** ******* 上半部分与下半部分作为一个整理 ***** 只用一个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<stdio.h>
#include<stdlib.h>
/* *
***
*****
******* 输入任意长度的星状图
*****
***
*
*/
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<stdio.h> #include<stdlib.h> #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<stdio.h> #include<stdlib.h> #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<stdio.h> #include<stdlib.h> #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<stdio.h> #include<stdlib.h> #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"); }
从中可以看出数学的思想挺重要的,这是第一个比较完整的博客文章!加油!