C语言实现循环打印星号图形再镂空
作者:粥ou
这篇文章主要介绍了C语言实现循环打印星号图形再镂空,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
C语言 循环打印星号图形再镂空
镂空的原理
判断什么时候打印星号,什么时候打印空格
如果把这个图形镂空 成下面这个图形
int i,j; //外层控制行数和换行 for(i=0;i<5;i++) { //内存循环控制列数和星数量 for(j=0;j<=3-i;j++) { printf(" "); } for(j=0;j<=i*2;j++) { if(i==0 || i==4 || j ==0 || j == 2*i) //第一行和最后一行不要镂空,然后就是中间的两边,分别是j=0和j取最大值的时候 printf("*"); else printf(" ");0 } printf("\n"); } return 0;
第二种:
#include <stdio.h> #include <stdlib.h> int main() { int i,j; for(i=0;i<9;i++) { for(j=0;j<9;j++) { if(i == 0 || i == 8 || j == 0 || j == 8) { printf("*"); } else printf(" "); } printf("\n"); }
第三种效果图:
int main() { //上半部分 int i,j; for(i=0;i<3;i++) { for(j=0;j<2-i;j++) { printf(" "); } for(j=0;j<=2+2*i;j++) { if(i == 0 || j == 0 || j == 2+2*i) printf("*"); else printf(" "); } printf("\n"); } //中间部分 for(i=0;i<3;i++) { for(j=0;j<7;j++) { if(j == 0 ||j == 6) printf("*"); else printf(" "); } printf("\n"); } //下半部分 for(i=0;i<3;i++) { for(j=0;j<i;j++) { printf(" "); } for(j=0;j<=6-2*i;j++) { if(i == 2 || j == 0 || j ==6-2*i ) printf("*"); else printf(" "); } printf("\n"); } return 0; }
第四种:
int main() { int i,j; //上半部分 for(i=0;i<3;i++) { for(j=0;j<2-i;j++) { printf(" "); } for(j=0;j<=2*i;j++) { printf("*"); } printf("\n"); } //下半部分 for(i=0;i<7;i++) { for(j=0;j<5;j++) { if(j == 2) printf("*"); else printf(" "); } printf("\n"); } return 0;
C语言 打印菱形星号“*”图案
题目
打印菱形星号“*”图案。输入一个正整数n(n为奇数),打印一个高度为n的“*”菱形图案。试编写相应程序。
程序简易流程图如下:
#include<stdio.h> /*打印菱形图案*/ int main (void) { int n,j,i; /*i为行数,j为每行中的项数*/ printf("(n为奇数)输入图案高度n:\n"); scanf("%d",&n); if (n<=0||n%2==0) /*判断n输入正误*/ printf("输入错误!"); else { for(i=1;i<=n/2+1;i++) /*打印上三角,(包括中间行)*/ { for(j=1;j<=n/2+i;j++) { if(j>=n/2-i+2) printf(" *"); else printf(" "); } printf("\n"); } for(i=n/2;i>=1;i--) /*打印下三角,(不包括中间行)*/ { /*将i改为倒序,这样就不必再次考虑每行中项的打印,下个for循环可以直接复制上三角部分*/ for(j=1;j<=n/2+i;j++) /*这个for循环与上三角一致 */ if(j>=n/2-i+2) printf(" *"); else printf(" "); printf("\n"); } } return 0; }
运行结果:
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。