自測(cè)-1 打印沙漏(20 分)本題要求你寫個(gè)程序把給定的符號(hào)打印成沙漏的形狀。例如給定17個(gè)“*”,要求按下列格式打印*****************所謂“沙漏形狀”,是指每行輸出奇數(shù)個(gè)符號(hào);各行符號(hào)中心對(duì)齊;相鄰兩行符號(hào)數(shù)差2;符號(hào)數(shù)先從大到小順序遞減到1,再從小到大順序遞增;首尾符號(hào)數(shù)相等。給定任意N個(gè)符號(hào),不一定能正好組成一個(gè)沙漏。要求打印出的沙漏能用掉盡可能多的符號(hào)。輸入格式:輸入在一行給出1個(gè)正整數(shù)N(≤1000)和一個(gè)符號(hào),中間以空格分隔。輸出格式:首先打印出由給定符號(hào)組成的最大的沙漏形狀,最后在一行中輸出剩下沒用掉的符號(hào)數(shù)。輸入樣例:19 *輸出樣例:*****************2下面是我的代碼,請(qǐng)問哪里有問題嗎?求好心人回答。。平臺(tái)一直說我部分正確。。。#include <stdio.h>int main() {int n;char c;scanf("%d", &n);getchar();scanf("%c",&c);int rowNum = 1, sum = 1, re;for (int rowTemp = 1; sum <= n;) {rowNum = rowTemp;re = n - sum;rowTemp *= 2;sum += 2 * rowTemp + 2;}for (int rowTemp = rowNum; rowTemp >= 2; rowTemp /= 2) {for(int i=(rowNum-rowTemp)/2;i>=1;i--)printf(" ");for (int i = 1; i <= rowTemp + 1; i++)printf("%c", c);puts("");}for(int i=rowNum/2;i>=1;i--)printf(" ");printf("%c\n", c);if (rowNum<3){printf("%d",re);return 0;}for (int rowTemp = 2; rowTemp <= rowNum; rowTemp *= 2) {for(int i=(rowNum-rowTemp)/2;i>=1;i--)printf(" ");for (int i = rowTemp; i >= 0; i--)printf("%c", c);puts("");}printf("%d",re);return 0;}
關(guān)于打印時(shí)間沙漏的問題
Single丶love
2017-09-09 18:41:36