1027 打印沙漏
水题。在计算层数的时候卡了十几分钟,我好菜。
#include<iostream> using namespace std; int main() { int N; char c; cin>>N>>c; int layer = 1,sum = 1;//sum表示层数layer对应的总字符数 while(N > sum + ((layer+1)*2-1)*2) { //找出上半三角型的层数 layer sum += ((layer+1)*2-1)*2; layer++; } int temp = layer; while(layer > 0) {//输出上半三角形 for(int j = temp - layer; j > 0 ; --j) { printf(" "); } for(int i = 1; i <= 2*layer-1; ++i) { printf("%c",c); } printf("\n"); layer--; } layer = 2; while(layer <= temp) {//输出下半三角形 for(int j = temp - layer; j > 0 ; --j) { printf(" "); } for(int i = 1; i <= 2*layer-1; ++i) { printf("%c",c); } printf("\n"); layer++; } cout<<N-sum;// 输出剩下没用掉的符号数 return 0; }