本文主要是介绍【PAT乙级1027】——打印沙漏,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
控制输入输出题目,自己写的有点复杂,主要是算来算去算的心累;
思路:
先根据给出的n
计算出能打印的最高沙漏需要多少字符,求出多余的,然后找规律分别控制上,中(中间一行),下
部分的输出;
代码如下,提交使用g++
#include<bits/stdc++.h>
using namespace std;int main()
{int n, tmp=0, sum=1, row=0, duoyu=0, i=1; //duoyu就是多余的意思char c;cin >> n >> c;while(i++){tmp = 2*(2*i-1);if(sum+tmp<=n){sum += tmp;row += 2;} elsebreak; }if(n)row++;duoyu = n - sum;int top = row/2;int blank = 0;for(; top>0; top--) //上 {for(int j=0; j<blank; j++)printf(" ");for(int k=1; k<=(2*(top+1)-1); k++)printf("%c", c);blank++;printf("\n");}for(int j=1; j<=blank; j++) //中 printf(" ");printf("%c\n", c);blank--; //下 top = row/2;for(int l=1; l<=top; l++){for(int j=0; j<blank; j++)printf(" ");for(int k=1; k<=(2*l+1); k++)printf("%c", c); blank--;printf("\n");}printf("%d", duoyu);return 0;
}
这篇关于【PAT乙级1027】——打印沙漏的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!