int main()
{int sum,b,i,q,t,k,j,g,N
char c
sum=1b=1
scanf("%d %c",&N,&c)
for(i=1sum<=Ni++)
{ b=b+2//3+5+...
sum=sum+b*2}//当sum大于N时结束循环,所需要的sum应为sum-2*b
i=i-1
q=i//保存沙漏的下半部分有多少行
sum=sum-2*b//最大的沙漏所需要的字符数
k=0
for(j=ij>=1j--)//后面扰猛磨没什么好说的,就是正知态常的分成上下两部分,然后找行数和每行空格、字符数的关系
{ 缓斗for(g=1g<=kg++)
printf(" ")
for(t=1t<=2*j-1t++)
printf("%c",c)
printf("\n")
k++
}
k=k-2
for(j=2j<=qj++)
{for(g=1g<=kg++)
printf(" ")
for(t=1t<=2*j-1t++)
printf("%c",c)
printf("\n")
k--}
printf("%d",N-sum)
return 0
}
1、打开visual C++ 6.0-文件-新建-文件-C++ Source File。
2、输入预处理命令和主函数:#include<stdio.h> /*输入输出头文件*/void main() /*空类型:主函数*/。
3、定义变量并确定行数: int a,b,c=1,d=5,e=5 /*定义变搭神量的数据类型为尺枝桥整型*/for(a=1a<=5a++) /*确定行数*/。
4、确定列数:for(b=1b<=9b++) /*确定列数陵猛*/。
5、判断是输出星号还是输出空格并换行。
6、控制星号的坐标:c++ /*控制星号的坐标*/d--e++。
7、最后输出结果。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)