做网站建设销售,网络营销推广技巧,建网站服务器用哪种,漳浦县城乡规划建设局网站本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”#xff0c;要求按下列格式打印 ************
*****所谓“沙漏形状”#xff0c;是指每行输出奇数个符号#xff1b;各行符号中心对齐#xff1b;相邻两行符号数差2#xff1b;符号数先从大到小顺序递减… 本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”要求按下列格式打印 ************
*****所谓“沙漏形状”是指每行输出奇数个符号各行符号中心对齐相邻两行符号数差2符号数先从大到小顺序递减到1再从小到大顺序递增首尾符号数相等。 给定任意N个符号不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。 输入格式 输入在一行给出1个正整数N1000和一个符号中间以空格分隔。 输出格式 首先打印出由给定符号组成的最大的沙漏形状最后在一行中输出剩下没用掉的符号数。 输入样例 19 *输出样例 ************
*****
2#includecstdio
#includecmathint main(){int n;char c;scanf(%d %c,n,c);int bottom (int)sqrt(2.0*(n1))-1; //根据不等式推算出第一层的符号的个数 if(bottom % 2 0) bottom--; //题目规定奇数个 int used (bottom1)*(bottom1)/2-1;for(int i bottom; i 1; i-2){ //倒着输出三角形 for(int j (bottom - i)/2; j 0; j--){ //空格个数和层次等式关系 printf( );}for(int j 0; j i; j){printf(%c,c);}printf(\n);}for(int i 3; i bottom; i 2 ){ //输出正三角形形状除去顶部那个点 for(int j 0; j (bottom -i)/2; j){printf( );}for(int j 0; j i; j)printf(%c,c);printf(\n);} printf(%d\n,n-used);return 0;
} //line找的不对第三个测试点么通过。
#includecstdio
#includecmathint getLine(int n){if(n 1000) return 0;int x 1;while(1){if((2*(x-1)*(x-1) n-1) (2*(x2)*(x-1) n - 1))return x;else x;}
}int main(){int n;char c;scanf(%d %c,n,c);int line getLine(n);int used line * line * 2 - 1;int bottom 2*line-1;for(int i bottom; i 1; i - 2){for(int j 0; j (bottom - i)/2; j) printf( );for(int j 0; j i; j) printf(%c,c);printf(\n);}for(int i 3; i bottom; i 2){for(int j 0; j (bottom - i)/2; j) printf( );for(int j 0; j i; j) printf(%c,c);printf(\n);}printf(%d\n,n - used);return 0;
} 转载于:https://www.cnblogs.com/wanghao-boke/p/8534552.html