日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

c语言用星号输出沙漏,《算法笔记》学习日记——3.3 图形输出

發(fā)布時(shí)間:2023/12/1 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言用星号输出沙漏,《算法笔记》学习日记——3.3 图形输出 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

3.3 圖形輸出

問題 A: 輸出梯形

題目描述

輸入一個(gè)高度h,輸出一個(gè)高為h,上底邊為h的梯形。

輸入

一個(gè)整數(shù)h(1<=h<=1000)。

輸出

h所對(duì)應(yīng)的梯形。

樣例輸入web

5

樣例輸出數(shù)組

*****

*******

*********

***********

*************

思路

這一類的題目都比較簡(jiǎn)單,只要按照題目要求來(lái)作就行了。這題的話就用一個(gè)for循環(huán)控制輸入的行數(shù),而后每行再分別用兩個(gè)for循環(huán)打印空格和星號(hào),打印完畢以后星號(hào)+2,空格-2便可。

代碼less

#include

#include

int main(){

int h;

char a = '*';

while(scanf("%d", &h) != EOF){

int space, star;

star = h;

space = 2*h-2;

for(int i=1;i<=h;i++){

for(int k=1;k<=space;k++) printf(" ");

for(int m=1;m<=star;m++){

if(m==star) printf("%c\n", a);

else printf("%c", a);

}

star += 2;

space -= 2;

}

}

return 0;

}

問題 B: Hello World for U

題目描述

Given any string of N (>=5) characters, you are asked to form the characters into the shape of U. For example, “helloworld” can be printed as:

h????d

e????l

l?????r

lowo

That is, the characters must be printed in the original order, starting top-down from the left vertical line with n1 characters, then left to right along the bottom line with n2 characters, and finally bottom-up along the vertical line with n3 characters. And more, we would like U to be as squared as possible – that is, it must be satisfied that n1 = n3 = max { k| k <= n2 for all 3 <= n2 <= N } with n1 + n2 + n3 - 2 = N.

輸入

Each input file contains one test case. Each case contains one string with no less than 5 and no more than 80 characters in a line. The string contains no white space.

輸出

For each test case, print the input string in the shape of U as specified in the description.

樣例輸入ide

helloworld!

樣例輸出svg

h !

e d

l l

lowor

提示

這一題須要解決的問題是將一個(gè)字符串寫成U字形。拿到這一題的第一映像是U字的寫法(可沒有茴香豆的“茴”寫法多),先是寫第一排第一個(gè)字符,而后寫第二排第一個(gè)字符……而后是最后一排,而后是倒數(shù)第二排……但在C語(yǔ)言中若是咱們要這樣寫U字形的字符串就須要在數(shù)組中操做了。若是是直接輸出的話,那只能自上至下一行一行輸出。首先是第一行,寫出第一個(gè)字符和最后一個(gè)字符,第二行寫出第二個(gè)字符和倒數(shù)第二個(gè)字符……最后是最后一行。須要注意的是除了最后一行輸出全部字符,前面每一行只輸出兩個(gè)字符。中間還有空格來(lái)隔開每行的兩個(gè)字符(具體有多少空格,待會(huì)計(jì)算)。

思路有了,看看具體的要求。字符串的長(zhǎng)度是N,n1,n3表明兩邊每列字符的數(shù)目。n2表明最后一行的字符數(shù)。題目中給了一個(gè)算式:

n1 = n3 = max { k| k <= n2 for all 3 <= n2 <= N } with n1 + n2 + n3 - 2 = N.

仔細(xì)研究這個(gè)算式,這里的k是不大于n2的,也就是說(shuō)n1和n3是不大于n2且知足n1+n2+n3=N+2的最大值。那么天然有n1=n3=(N+2)/3,n2=N+2-(n1+n3)。也就是說(shuō)設(shè)side為兩邊的字符數(shù)(包括最后一行的兩端),則side=n1=n3=(N+2)/3。設(shè)mid為最后一行除去兩端的兩個(gè)字符后剩下的字符數(shù),mid=N-side*2(總長(zhǎng)度減去兩邊的字符數(shù))。同時(shí)mid也是咱們輸出除最后一行外前面全部行須要空出的空格數(shù)。

最后如何在第一行輸出第一個(gè)字符和最后一個(gè)字符呢?那天然是str[0]和str[len-1-i](len為字符串的長(zhǎng)度,也就是N)。

因而問題完美解決,步驟以下:

1)計(jì)算字符串長(zhǎng)度len;

2)計(jì)算兩邊的字符數(shù)side=(len+2)/3;

3)計(jì)算最后一行中間的字符數(shù)(前面每行中間的空格數(shù));

4)輸出每行相應(yīng)的字符。

因?yàn)樵擃}目不難,也沒有什么須要特別注意的,我也就不寫注意點(diǎn)了。具體細(xì)節(jié)詳見參考代碼。

思路

本題自帶提示,并且寫得很是詳細(xì),看上面的提示吧,基本上把代碼都說(shuō)出來(lái)了。最后,用printf輸出的記得要用%c,我用了%s半天找不到錯(cuò)在哪……

代碼spa

#include

#include

int main(){

char str[1000];

while(scanf("%s", str) != EOF){

int side, mid, len;

len = strlen(str);

side = (len+2)/3;

mid = len-side*2;

for(int i=0;i

if(i==side-1){

for(int m=i;m

printf("\n");

}

else{

printf("%c", str[i]);

for(int j=1;j<=mid;j++) printf(" ");

printf("%c\n", str[len-1-i]);

}

}

}

return 0;

}

問題 C: 等腰梯形

題目描述

請(qǐng)輸入高度h,輸入一個(gè)高為h,上底邊長(zhǎng)為h 的等腰梯形(例如h=4,圖形以下)。

****

******

********

**********

輸入

輸入第一行表示樣例數(shù)m,接下來(lái)m行每行一個(gè)整數(shù)h,h不超過(guò)10。

輸出

對(duì)應(yīng)于m個(gè)case輸出要求的等腰梯形。

樣例輸入code

1

4

樣例輸出orm

****

******

********

**********

思路

這題和問題A是同樣的,用space記錄空格數(shù)(只要記錄一側(cè)的就行了,由于是對(duì)稱的),用star記錄輸出的星號(hào)數(shù)。

代碼xml

#include

#include

int main(){

char a = '*';

int m;

scanf("%d", &m);

while(m--){

int h;

scanf("%d", &h);

int star, space;

star = h;

space = h-1;

for(int i=1;i<=h;i++){

if(i==h){

for(int j=1;j<=3*h-2;j++) printf("%c", a);

printf("\n");

}

else{

for(int x=1;x<=space;x++) printf(" ");

for(int y=1;y<=star;y++) printf("%c", a);

for(int z=1;z<=space;z++) printf(" ");

printf("\n");

}

star += 2;

space -= 1;

}

}

return 0;

}

問題 D: 沙漏圖形 tri2str [1*+]

題目描述

問題:輸入n,輸出正倒n層星號(hào)三角形。首行頂格,星號(hào)間有一空格,效果見樣例

樣例輸入

3

樣例輸出

* * *

* *

*

* *

* * *

思路

這一類圖形輸出的問題其實(shí)都很簡(jiǎn)單,只要按照題目要求來(lái)輸出便可。這題的處理方法和上題相似,用for循環(huán)控制星號(hào)和空格的輸出。這題建議把上部分和下部分分開來(lái)用for循環(huán)輸出,不然太亂了,容易出錯(cuò)。

代碼

#include

#include

int main(){

int n;

while(scanf("%d", &n) != EOF){

for(int i=0;i

for(int x=1;x<=i;x++) printf(" ");

for(int j=1;j<=n-i;j++){

if(j==1) printf("*");

else printf(" *");

}

printf("\n");

}

for(int i=2;i<=n;i++){

for(int x=n-i;x>=1;x--) printf(" ");

for(int j=1;j<=i;j++){

if(j==1) printf("*");

else printf(" *");

}

printf("\n");

}

}

return 0;

}

小結(jié)

圖形輸出這一類的問題仍是比較簡(jiǎn)單的,主要是經(jīng)過(guò)題目尋找規(guī)律(通常都蘊(yùn)含著數(shù)學(xué)規(guī)律),而后再按照要求進(jìn)行編寫便可,要注意的是編寫的時(shí)候思緒要清楚,好比上面的最后一題,寫著寫著思緒容易紊亂,若是思路清晰的話仍是沒什么難度的。

總結(jié)

以上是生活随笔為你收集整理的c语言用星号输出沙漏,《算法笔记》学习日记——3.3 图形输出的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。