前言
自学c语言两周,记录一下PTA的刷题,原题描述为
一、逻辑分析
本题要求打印的沙漏每层都为奇数,故首先需计算出沙漏的最高层的符号数;
1.定义变量x表示最高层符号数;
2.每层符号数逐级+2;
3.计算当前层数剩余符号数;
4.判断剩余符号数是否足够打印下一层;
5.循环上述2~4步,最终计算出最高层符号数(注:此时跳出循环x多进行了一次+2的操作);
int x=1;
int sum=0, dif=0;
int N;
char c;
scanf("%d %c", &N, &c);
do
{
sum += x;
dif = N-(sum*2-1); //当前剩余的符号数
x += 2;
}while(dif>2*x);
x -=