c語言用星號輸出沙漏,《算法筆記》學習日記——3.3 圖形輸出

3.3 圖形輸出

問題 A: 輸出梯形

題目描述

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

輸入

一個整數h(1<=h<=1000)。

輸出

h所對應的梯形。

樣例輸入web

5

樣例輸出數組

*****

*******

*********

***********

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

思路

這一類的題目都比較簡單,只要按照題目要求來作就行了。這題的話就用一個for循環控制輸入的行數,而后每行再分別用兩個for循環打印空格和星號,打印完畢以后星號+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

提示

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

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

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

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

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

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

1)計算字符串長度len;

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

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

4)輸出每行相應的字符。

因為該題目不難,也沒有什么須要特別注意的,我也就不寫注意點了。具體細節詳見參考代碼。

思路

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

代碼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: 等腰梯形

題目描述

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

****

******

********

**********

輸入

輸入第一行表示樣例數m,接下來m行每行一個整數h,h不超過10。

輸出

對應于m個case輸出要求的等腰梯形。

樣例輸入code

1

4

樣例輸出orm

****

******

********

**********

思路

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

代碼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層星號三角形。首行頂格,星號間有一空格,效果見樣例

樣例輸入

3

樣例輸出

* * *

* *

*

* *

* * *

思路

這一類圖形輸出的問題其實都很簡單,只要按照題目要求來輸出便可。這題的處理方法和上題相似,用for循環控制星號和空格的輸出。這題建議把上部分和下部分分開來用for循環輸出,不然太亂了,容易出錯。

代碼

#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;

}

小結

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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/371515.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/371515.shtml
英文地址,請注明出處:http://en.pswp.cn/news/371515.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JavaOne 2012:101種改進Java的方法-開發人員參與為何如此重要

Bruno Souza &#xff0c; Martijn Verburg和Heather Vancura在希爾頓酒店的大陸宴會廳4中展示了“ 101種改進Java的方法&#xff1a;開發人員參與為何如此重要”。 他們將其分為自己最熟悉的領域。 SouJava的創始人兼協調員 Souza談到了通過用戶組的更大參與。 Verberg也在倫敦…

Java組合實體模式~

組合實體模式用于EJB持久化機制。 組合實體是表示對象圖的EJB實體bean。 當組合實體更新時&#xff0c;內部依賴對象bean將自動更新為由EJB實體bean管理。 以下是組合實體Bean的參與者。 組合實體 - 它是主要的實體bean。 它可以是粗粒度的或可以包含用于持久性目的的粗粒度對象…

python中的一些小知識

在最近學習python中遇到的一些小問題匯總一下&#xff1a; 1.在windows7下安裝python3.5版本時提示安裝不了&#xff0c;缺少ServicePack1. 解決辦法是&#xff0c;打開控制面板\系統和安全\Windows Update&#xff0c;下載和更新計算機安裝&#xff0c;然后卸載以前的python版…

在Java中衡量執行時間– Spring StopWatch示例

有兩種方法可以通過使用System.currentTimeinMillis&#xff08;&#xff09;或通過使用System.nanoTime&#xff08;&#xff09; 來測量Java中經過的執行時間 。 這兩個方法可用于測量 Java中兩個方法調用或事件之間的經過時間或執行時間 。 計算經過的時間是Java程序員要做的…

c語言getch在哪個頭文件,用getch()需要頭文件嗎?

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓#include #include #include "string.h"#includeusing namespace std;struct student{ int num;char name[10];char banji[10];float score[3];struct student *next;};struct student *creat(){struct student *head,*p…

My solution for Git Client Error: Permission denied (publickey)

在使用Git客戶端的過程中遇到的問題以及解決方案分享。 我之前已經安裝Git客戶端并且使用Git開發過公司項目&#xff0c;也已經正確生成PublicKey并且添加到SSH keys on github of my account&#xff0c;但是當我想從github上克隆另一個客戶端push的代碼的時候一直報錯&#x…

OutOfMemoryError:無法創建新的本機線程–問題神秘化

正如您從我以前的教程和案例研究中可能已經看到的那樣&#xff0c;要確定和解決Java Heap Space OutOfMemoryError問題可能很復雜。 我從Java EE生產系統中觀察到的常見問題之一是OutOfMemoryError&#xff1a;無法創建新的本機線程&#xff1b; HotSpot JVM無法進一步創建新的…

求10以內平均數的c語言,求助 給小學生出題,自己選加減乘除 做10題 10以內的數 然后統計分...

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓#include #include #include void Menu(void){printf("1,加法 2,減法 3,乘法 4,除法 5,退出\n");printf("請選擇題目類型:");}int Plus(void){int a, b;a rand() % 10 1;b rand() % 10 1;printf("%-2…

linux常用命令大全(轉)好東西要分享

1、ls命令 就是list的縮寫&#xff0c;通過ls 命令不僅可以查看linux文件夾包含的文件&#xff0c;而且可以查看文件權限(包括目錄、文件夾、文件權限)查看目錄信息等等 常用參數搭配&#xff1a; ls -a 列出目錄所有文件&#xff0c;包含以.開始的隱藏文件 ls -A 列出除.及.…

Cobertura和Maven:集成和單元測試的代碼覆蓋率

在姜黃項目中&#xff0c;我們每晚維護一個儀表板。 在儀表板上&#xff0c;我們收集有關項目的統計信息&#xff0c;包括代碼覆蓋率&#xff0c;findbugs分析和其他指標。 我們一直在使用Maven EMMA插件來提供代碼覆蓋&#xff0c;但是遇到了EMMA問題。 在對類進行檢測后&…

二分圖之匈牙利算法模版

1 /*2 匈牙利算法模版鄰接表版3 最大匹配問題4 時間復雜度&#xff1a;O (nm)5 */6 #include <cstdio>7 #include <vector>8 #include <cstring>9 using namespace std; 10 const int maxn 505; 11 vector<int> v[maxn];//x v[i][j]表示i可以與x匹配…

android 字體描邊實現,android文字描邊功能的實現

這里也要簡單說一下&#xff0c;這些小模塊并不是我原創&#xff0c;也是當時查資料找到的&#xff0c;由于時間比較久&#xff0c;原文鏈接已經忘記了&#xff0c;所以這里就不列出引用鏈接了。不過這些代碼我都修改、完善過&#xff0c;也添加了一些注釋&#xff0c;希望對大…

Factorial vs Power

題意 輸入a&#xff0c;找到滿足n!>a^n 最小的n。 數據 第一行T(1 < T < 1e5)&#xff0c;表示測試樣例數.(2 < a < 1e6)。 輸入 3 2 3 4 輸出 4 7 9 這個東西一看就知道是二分求解的&#xff0c;但是我們還是不知道怎么求的&#xff0c;我們可以吧他們取對數然…

評論:Arun Gupta撰寫的“ Java EE 6 Pocket Guide”

這是我很高興寫的評論。 我的朋友阿倫&#xff08;Arun&#xff09;發布了Java EE 6袖珍指南&#xff0c;該指南將在您訂購時盡早提供。 我很早就知道這本書&#xff0c;因為我很樂意對其進行回顧&#xff0c;也感謝有機會為本書做出一點貢獻&#xff01; Kindle版本已經可用&a…

雙android手機同步工具,手機同步軟件Android Manager使用圖文教程

類型&#xff1a;手機工具大小&#xff1a;23.6M語言&#xff1a;繁體 評分&#xff1a;6.6標簽&#xff1a;立即下載Android Manager 可透過五個簡單的步驟設定&#xff1a;步驟一. 在計算機上安裝 Android Manager請點選以下之下載按鈕或直接于計算機上輸入下載網址&#xff…

Camel:構建基于消息的應用程序

這是一篇長文章&#xff0c;包含三個單獨的主題&#xff1a; Java的Apache Camel入門 使用CamelRunner改善路線的啟動 使用Camel構建基于消息的應用程序 但是&#xff0c;由于我準備了包含所有這些材料的camel-demo-1.0.0-SNAPSHOT-project.zip &#xff0c;因此我認為將它們…

android 網易item廣告,Android仿網易嚴選商品詳情頁

仿照網易嚴選商品詳情頁面&#xff0c;整個頁面分為兩個部分&#xff0c;上面一部分是Native的ScrollView&#xff0c;下面一部分則是WebView&#xff0c;其目的是為了可以進行分步加載。滑動到ScrollView底部時&#xff0c;繼續向上拖動&#xff0c;可以加載下面的WebView部分…

freemarker,數字,日期,布爾值常用的函數

${3.4?floor} ${3.4?ceiling} ${3.45?round} ${3.45?rtf} ${3.458?string("0.##")} ${3.42?string.percent} ${3.42?string.currency} ${date?string("yyyy-MM-dd")} ${date?date} ${date?time} ${date?datetime}${true?c} ${true?string} ${…

mysql聯合索引與Where子句優化淺析

問題描述&#xff1a;把排序、條件等一個一個去除來做測試&#xff0c;結果發現問題就出在排序部分&#xff0c;去除排序時&#xff0c;執行時間由原來的48秒變成0.3x秒。于是&#xff0c;把涉及排序的字段組成一個聯合索引alter table xx add index indexname(x1,x2,x3)&#…

有效使用Eclipse的熱門提示

以下是一些技巧&#xff0c;可以幫助您避免潛在的問題并在使用Eclipse時提高工作效率。 避免安裝問題 切勿在舊版本之上安裝新版本的Eclipse。 首先重命名舊版本&#xff0c;將其移開&#xff0c;然后將新版本解壓縮到干凈的目錄中。 恢復混亂的工作空間 對于許多開發人員來…