按照給定小菱形的數(shù)量n,利用字符打印菱形,要求
成都創(chuàng)新互聯(lián)公司主要從事成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)泰安,10余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):028-86922220/
,\
,空格,回車四種字符。具體格式見(jiàn)樣例。
比如邊長(zhǎng)為3的菱形,最少有5個(gè)小菱形(左邊的情況),最多有9個(gè)小菱形(右邊的情況)。
/\ /\ /\/\ /\/\ /\/\/ /\/\/\ \/\/ \/\/\/ \/\/ \/
對(duì)應(yīng)的編號(hào)分別為
1 1 2 3 2 3 4 5 4 5 6 7 8 9輸入格式
存在多個(gè)樣例,每個(gè)樣例是一個(gè)整數(shù)n(1≤n≤100)。如果n為0,表示輸入結(jié)束,這個(gè)樣例不需要處理。
輸出格式依次按要求輸出對(duì)應(yīng)數(shù)量的菱形。
樣例輸入1 2 3 4 5 6 7 0樣例輸出
/\ \/ /\ /\/ \/ /\ /\/\ \/\/ /\ /\/\ \/\/ \/ /\ /\/\ /\/\/ \/\/ /\ /\/\ /\/\/\ \/\/\/ /\ /\/\ /\/\/\ \/\/\/ \/代碼:
#include#includeint main(){
int n = 1;
while(n!=0){
scanf("%d",&n);
if(n==0) break;
int a = ceil(sqrt((float)n));
int head = a;
int last = a;
int count = 0;
int up = (a*a-a)/2+a;
for(int x = 0;x< a;x++){
for(int y = 1;y< last||y == last;y++){
if(y< head) printf(" ");
else{
if((y-head)%2==0){
printf("/");
printf("\\");
count=count+1;
if(count == n) break;
y++;
}
}
}
head = head-1;
last = last+1;
if(x != a-1) printf("\n");
if(x == a-1){
if(countup){
printf("\n");
count = up;
for(int x = 0;x< a-1;x++){
head = head+1;
last = last-1;
for(int y = 0;y
運(yùn)行結(jié)果:思路:于是再次進(jìn)行題目分析:? 首先菱形可以分為上半部分up和下半部分down,經(jīng)過(guò)計(jì)算,我們可以得到
up=(a^2-a)/2+a
down=(a^2-a)/2
? 畫(huà)菱形無(wú)非三種情況:
所以上層一定會(huì)畫(huà)到最后一層,我們只需要把上層的最后一層根據(jù)最后一層所畫(huà)的結(jié)點(diǎn)數(shù)去補(bǔ)一個(gè)/
——>如果是情況1則在最后補(bǔ)一個(gè)/,然后換行
——>如果是情況2則不需要補(bǔ),直接換行
記錄下最后一層所畫(huà)的節(jié)點(diǎn)數(shù)count=count-(a^2-a)/2+a
換行之后,因?yàn)樽詈笠粚又蝗盶/了,畫(huà)count個(gè)\/即可
至此為止,上半部分就畫(huà)好了
下半部分我們經(jīng)過(guò)分析,發(fā)現(xiàn)直接在節(jié)點(diǎn)處畫(huà)\/即可
注意每好一個(gè)節(jié)點(diǎn)需判斷畫(huà)好的節(jié)點(diǎn)數(shù)是否等于n,等于則結(jié)束循環(huán)直接輸出,不等于則下一步;
畫(huà)節(jié)點(diǎn)的算法:? 1、將菱形分為上界和下界,上界a層,下界a-1層
? 2、兩層for循環(huán):
? 第一層for循環(huán)遍歷層數(shù)
? 第二層for遍歷打印每一層的數(shù)據(jù)
? 對(duì)每一層又根據(jù)第一個(gè)節(jié)點(diǎn)head和最后一個(gè)節(jié)點(diǎn)last劃分區(qū)域
? 當(dāng)當(dāng)前位置在head之前,打印空格,當(dāng)當(dāng)前位置與head的差值為2的倍數(shù)時(shí),打印/\,計(jì)數(shù)點(diǎn)跳過(guò)\往前走一步;
? 內(nèi)層循環(huán)結(jié)束后換行;
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧