标签:for 部分 include sum can int i+1 打印 while
实验代码
#include <stdio.h>
int main()
{
int n;
char c;
scanf("%d %c",&n,&c);
int sum=1;//沙漏需要的字符个数
int i=1;//层数
while(sum<=n)
{
sum+=2*(2*(i+1)-1);//2n-1是一层的个数,乘以2代表两层一共需要的
if(sum<=n)
i++;
}
int j,k;
for(j=0;j<i;j++)//打印上半部分
{
for(k=0;k<j;k++)
printf(" ");
for(k=0;k<2*(i-j)-1;k++)
{
printf("%c",c);
}//输出*
printf("\n");
}
for(j=2;j<=i;j++)
{
for(k=0;k<i-j;k++)
printf(" ");
for(k=0;k<2*j-1;k++)
{
printf("%c",c);
}
printf("\n");
}
printf("%d",n-(sum-2*(2*(i+1)-1)));
}
这一题起初我是不知道从何下手的,在博客里面看了其他的大佬做的后然后自己得出的
1先定义一个数值n和一个字符c
2.然后搞清楚沙漏的形状
3.然后在运用公式进行编程
标签:for 部分 include sum can int i+1 打印 while
原文地址:https://www.cnblogs.com/bramblesrose/p/10387594.html