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、最后输出结果。
#include <stdio.h >void main ()
{
int i ,j, k, n
scanf ("%d ",&n)
for (i =0 i<ni++)
{
for (j =0 j <2*nj++)
printf ("*")
printf ("\n")
}
for (i=1i<=n-2i++)
{for (j =1 j <=ij++)
printf (" ")
for (k =1k<=2*n-2*ik++)
printf ("*")
printf ("\n")}
for (i =2i<=n-2i++)
{for(j =2j>=ij--)
{printf (" ")
}
for(k=1k<=2*n-2*ik++)
printf("*")
printf ("\n")}
for (i =0i<ni++)
{for (j=0j<2*nj++)
printf ("*")
printf ("\n")}
}
因电脑故障这个程序没有调试,若有错误请您见谅
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)