多种图形的打印(c语言)
私以这篇文章记录下多种图形的打印(以*为例)
关键在于空格个数,字符个数,找规律,for的嵌套调用
(一些小点,我标注在代码里或标注在代码后)
1.先从较基础的直角三角形开始
int main(){
int n,i,j,k;
scanf("%d",&n);
for(i=0;i<n;i++)
{
for(k=0;k<=i;k++)//*依次加1
{
printf("* ");
}printf("\n");
}return 0;
}
2、倒直角三角形
#include<stdio.h>
int main(){
int n,i,j,k;
scanf("%d",&n);
for(i=0;i<n;i++)
{
for(k=0;k<n-i;k++)//输出的 * 依次减一
{
printf("*");
}printf("\n");
}return 0;
}
3、反直角三角形
#include<stdio.h>
int main(){
int n,i,j,k;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=1;j<=n-i;j++)//空格依次减1
{
printf(" ");
}for(k=0;k<i;k++)//*依次加1
{
printf("*");
}printf("\n");
}return 0;
}
tip:第一个for控制图形共几行
第二个for控制空格规律,敲出几行
第三个for控制 * 规律,个数
4、倒反直角三角
#include<stdio.h>
int main(){
int n,i,j,k;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=1;j<=i;j++)//空格依次减1
{
printf(" ");
}for(k=0;k<=n-i;k++)//*依次加1
{
printf("*");
}printf("\n");
}return 0;
}
5、金字塔
#include<stdio.h>
int main(){
int n,i,j,k;
scanf("%d",&n);
for(i=0;i<n;i++)
{
for(j=0;j<n-i;j++)//空格依次减一
{
printf(" ");
}for(k=0;k<=i;k++)//* 依次加一
{
printf("* ");
}printf("\n");
}return 0;
}
tip: 后有空格,没了空格就变成反三角形*
6、边长为n的菱形
#include<stdio.h>
int main(){
int n,i,j,k;
scanf("%d",&n);
for(i=0;i<n;i++)
{
for(j=0;j<n-i;j++)
{
printf(" ");
}for(k=0;k<=i;k++)
{
printf("* ");//!!*后有一个空格
}printf("\n");
}for(i=1;i<=n;i++)//与上一个相反,且少打一行
{
for(j=0;j<=i;j++)
{
printf(" ");
}for(k=1;k<=n-i;k++)
{
printf("* ");
}printf("\n");
}
return 0;
}
7、高为n的菱形
#include<stdio.h>
int main(){
int n,i,j,k;
scanf("%d",&n);
for(i=0;i<=n/2+1;i++)
{
for(j=0;j<n-i;j++)
{
printf(" ");
}for(k=0;k<2*i-1;k++)//要输出奇数个
{
printf("*");
}printf("\n");
}for(i=1;i<=n/2;i++)
{
for(j=0;j<=i+1;j++)
{
printf(" ");
}for(k=1;k<=n-2*i;k++)
{
printf("*");
}printf("\n");
}
return 0;
}
tip:上行比下行多一行
8、空心三角形
#include<stdio.h>
int main(){
int n,i,j,k;
scanf("%d",&n);
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i;j++)
{
printf(" ");
}if(i==0)
printf("*");//第一行打一个*
else{
for(k=0;k<2;k++)//到最后一行前,每行两个
{printf("*");
for(int a=0;a<2*i-1;a++)
{
printf(" "); //中间插入奇数个空格
}
}
}
printf("\n");
}for(int b=0;b<n;b++){//最后一行分开讨论
printf(" *");
}
return 0;
}
tip: 间的空格要放在输出*的后面*
9、平形四边形
#include<stdio.h>
int main(){
int n,i,j,k;
scanf("%d",&n);
for(i=0;i<n;i++)
{
for(j=0;j<n-i;j++)//空格依次减1
{
printf(" ");
}for(k=0;k<n;k++)
{
printf("* ");
}printf("\n");
}return 0;
}
我就总结这些啦,若有不足请多见谅 -
走前点个赞呗!