迴圈的圖形問題

更新於 發佈於 閱讀時間約 7 分鐘

前導

圖形題也是考驗你掌握迴圈的好考題,以下幾題供你參考:

你可以把輸出想成是二維的座標系統,橫的為列,直的為行,用兩個變數分別表示:

輸出直角三角形

#include<stdio.h>
int main() {
int i, j, n;
printf("請輸入層數:");
scanf("%d", &n);
for (i = 1; i <= n; i++) { // 控制層數
for (j = 1; j <= i; j++) { // 控制每層的星星數量
printf("*");
}
printf("\n");
}
return 0;
}
/* 輸出

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

*/

範例: 輸出倒直角三角形

#include<stdio.h>
int main() {
int i, j, n;
printf("請輸入層數:");
scanf("%d", &n);
for (i = n; i >= 1; i--) { // 控制層數
for (j = 1; j <= i; j++) { // 控制每層的星星數量
printf("*");
}
printf("\n");
}
return 0;
}
/* 輸出

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

*/

輸出自訂底邊的三角形

#include<stdio.h>
int main() {
int i, j, n;
printf("請輸入基底寬度(必須是奇數):");
scanf("%d", &n);
for (i = 0; i < n / 2 + 1; i++) { // 控制層數,高度為 n/2 + 1
for (j = 0; j < n / 2 - i; j++) { // 控制空格數量
printf(" ");
}
for (j = 0; j < 2 * i + 1; j++) { // 控制星星數量
printf("*");
}
printf("\n");
}
return 0;
}
/* 輸出

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

*/
  • 層,輸出3個空格然後接1*
  • 層,輸出2個空格然後接3*
  • 層,輸出1個空格然後接5*
  • 層,輸出0個空格然後接7*

輸出自訂底邊的空三角形

#include<stdio.h>
int main() {
int i, j, n;
printf("請輸入底邊:");
scanf("%d", &n);
for (i = 0; i < n / 2 + 1; i++) { // 控制層數,高度為 n/2 + 1
for (j = 0; j < n / 2 - i; j++) {
printf(" ");
}
if (i == 0) {
printf("*");
} else if (i == n / 2) {
for (j = 0; j < n; j++) {
printf("*");
}
} else {
printf("*");
for (j = 0; j < 2 * i - 1; j++) {
printf(" ");
}
printf("*");
}
printf("\n");
}
return 0;
}
/* 輸出

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

*/

根據 i 的不同,星號排列方式不同:

  • i == 0(第一層): 只有一顆 *
  • i == n/2(最後一層): 直接印出 n*
  • 其他情況:
    • 兩側各有一顆 *
    • 內部用空格填充,空格數量為 2*i - 1,即:
      • i = 1:中間 1 個空格
      • i = 2:中間 3 個空格
      • i = 3:中間 5 個空格
      • 依此類推...

輸出三角形(要求給定三角形的高度)

#include <stdio.h>

int main() {
int height, i, j;

// 請使用者輸入三角形的高度
printf("請輸入三角形的高度: ");
scanf("%d", &height);

// 輸出等腰三角形
for (i = 1; i <= height; i++) { // 外層迴圈控制層數 (高度)
for (j = 1; j <= height - i; j++) { // 內層迴圈控制空格數量
printf(" ");
}
for (j = 1; j <= 2 * i - 1; j++) { // 內層迴圈控制星星數量
printf("*");
}
printf("\n"); // 每行輸出後換行
}

return 0;
}
/* 輸出
請輸入三角形的高度: 5
*
***
*****
*******
*********

*/

for (j = 1; j <= height - i; j++)

這控制了每層的前置空格數:

  • i = 1height - 1 個空格
  • i = 2height - 2 個空格
  • ...
  • i = height0 個空格

for (j = 1; j <= 2 * i - 1; j++)

這控制了每層的 * 數量:

  • i = 11*
  • i = 23*
  • i = 35*
  • i = 47*
  • i = height2 * height - 1*
留言
avatar-img
留言分享你的想法!
avatar-img
電資鼠 - 您的學習好夥伴
10會員
215內容數
在當今數位時代,電資領域人才需求爆發式成長,不論是前端網頁設計、嵌入式開發、人工智慧、物聯網還是軟硬體整合,這些技術都在改變世界。而掌握 C/C++、Python、數位邏輯、電路學與嵌入式開發等大學電資領域的課程,正是進入這個高薪、高需求產業的關鍵!
2025/03/07
本章節將探討左下三角稀疏矩陣。
Thumbnail
2025/03/07
本章節將探討左下三角稀疏矩陣。
Thumbnail
2025/03/07
相信讀者現在對於鏈結串列有了更多的認識,所以我再進一步,示範更多關於鏈結串列的操作,這部分示範會將程式模組化。將鏈結串列的操作寫進一個標頭檔,並在主程式中引入。
Thumbnail
2025/03/07
相信讀者現在對於鏈結串列有了更多的認識,所以我再進一步,示範更多關於鏈結串列的操作,這部分示範會將程式模組化。將鏈結串列的操作寫進一個標頭檔,並在主程式中引入。
Thumbnail
2025/03/07
本章節示範透過「陣列索引」和「指標運算」兩種方式來存取同一個二維陣列 a,並印出相同的數值以及對應的位址,以說明它們其實指向的是同一塊連續的記憶體空間。本文將依序解釋各段程式碼,並示範可能的執行結果與背後原理。
Thumbnail
2025/03/07
本章節示範透過「陣列索引」和「指標運算」兩種方式來存取同一個二維陣列 a,並印出相同的數值以及對應的位址,以說明它們其實指向的是同一塊連續的記憶體空間。本文將依序解釋各段程式碼,並示範可能的執行結果與背後原理。
Thumbnail
看更多
你可能也想看
Thumbnail
家中修繕或裝潢想要找各種小零件時,直接上網採買可以省去不少煩惱~看看Sylvia這回為了工地買了些什麼吧~
Thumbnail
家中修繕或裝潢想要找各種小零件時,直接上網採買可以省去不少煩惱~看看Sylvia這回為了工地買了些什麼吧~
Thumbnail
👜簡單生活,從整理包包開始!我的三款愛用包+隨身小物清單開箱,一起來看看我每天都帶些什麼吧🌿✨
Thumbnail
👜簡單生活,從整理包包開始!我的三款愛用包+隨身小物清單開箱,一起來看看我每天都帶些什麼吧🌿✨
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
多邊形空心線圈十分類似方形線圈,同樣會有個線圈外膨的現象,使得完成線型可能不如預期。在方形空心線圈的討論文章中,著重討論的是兩彎角之間的距離及漆包線徑的剛性強度影響,這些要素在多邊形線圈當中依然存在。簡單的描述,就是兩彎角越近,則彎角中間的直線段外擴越嚴重;漆包線越粗,代表線材越不容易彎折,也會增加
Thumbnail
多邊形空心線圈十分類似方形線圈,同樣會有個線圈外膨的現象,使得完成線型可能不如預期。在方形空心線圈的討論文章中,著重討論的是兩彎角之間的距離及漆包線徑的剛性強度影響,這些要素在多邊形線圈當中依然存在。簡單的描述,就是兩彎角越近,則彎角中間的直線段外擴越嚴重;漆包線越粗,代表線材越不容易彎折,也會增加
Thumbnail
本處的方形空心線圈泛指四邊形,包括正方形、長方形及梯形等;方形空心線圈的型態與馬達繞線較為相似,主要是馬達矽鋼片留給線圈的走線空間皆為四邊形,故兩者往往會有相同的問題,在直線區段的線圈會有種向外膨起的現象。 理想的方形空心線圈應當是等距的層疊,最終完成的形狀應如下圖當中最左側的範例。然而在實務執行
Thumbnail
本處的方形空心線圈泛指四邊形,包括正方形、長方形及梯形等;方形空心線圈的型態與馬達繞線較為相似,主要是馬達矽鋼片留給線圈的走線空間皆為四邊形,故兩者往往會有相同的問題,在直線區段的線圈會有種向外膨起的現象。 理想的方形空心線圈應當是等距的層疊,最終完成的形狀應如下圖當中最左側的範例。然而在實務執行
Thumbnail
圓形為空心線圈中最常出現的形狀,但很多設計者在規劃時,常常漏了一點,導致實際生產的尺寸有落差,那就是爬層空間。 如下圖所示,過往在空心線圈排列規劃時免不了兩種形式,左側的方形排列以及右側的緊實排列兩種,生產上是右側較為接近現實。但無論是左右兩種規劃,設計者往往都忽略了從線圈從第一層往上爬至第二層時
Thumbnail
圓形為空心線圈中最常出現的形狀,但很多設計者在規劃時,常常漏了一點,導致實際生產的尺寸有落差,那就是爬層空間。 如下圖所示,過往在空心線圈排列規劃時免不了兩種形式,左側的方形排列以及右側的緊實排列兩種,生產上是右側較為接近現實。但無論是左右兩種規劃,設計者往往都忽略了從線圈從第一層往上爬至第二層時
Thumbnail
有別於傳統空心線圈的成形,大多僅在二維平面上有所差異,如圓形、方形、三角形、梯形等等,然而此一案例則是將線圈造型延伸三維空間當中,採用了U型及I型的空間配置,同時後續還有個組裝的配合條件,十分具有挑戰性,故紀錄其改善內容。 一、嘗試初期 已知此空心線圈後續還有組裝排列的工序,故單顆線圈完成後就需
Thumbnail
有別於傳統空心線圈的成形,大多僅在二維平面上有所差異,如圓形、方形、三角形、梯形等等,然而此一案例則是將線圈造型延伸三維空間當中,採用了U型及I型的空間配置,同時後續還有個組裝的配合條件,十分具有挑戰性,故紀錄其改善內容。 一、嘗試初期 已知此空心線圈後續還有組裝排列的工序,故單顆線圈完成後就需
Thumbnail
這一節談的是向量的定義,以及如何運用向量來建立模擬物體運動時,關於位置和速度間的關係式。
Thumbnail
這一節談的是向量的定義,以及如何運用向量來建立模擬物體運動時,關於位置和速度間的關係式。
Thumbnail
直觀理解 導數:考慮的是單一變數的函數,描述的是函數在某點的斜率或變化率。 偏導數:考慮的是多變數函數,描述的是函數在某個變數變化時的變化率,其他變數保持不變。  (針對各維度的調整 或者稱變化 你要調多少) 應用 導數:在物理學中應用廣泛,例如描述速度和加速度。 偏導數:在多變量分析、優
Thumbnail
直觀理解 導數:考慮的是單一變數的函數,描述的是函數在某點的斜率或變化率。 偏導數:考慮的是多變數函數,描述的是函數在某個變數變化時的變化率,其他變數保持不變。  (針對各維度的調整 或者稱變化 你要調多少) 應用 導數:在物理學中應用廣泛,例如描述速度和加速度。 偏導數:在多變量分析、優
Thumbnail
這篇文章,會帶著大家複習以前學過的BFS框架, 並且以圖論的應用題與概念為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個演算法框架。 BFS 框架 + 演算法 虛擬碼 # Queue 通常初始化成根結點,作為起點 BFS_queue = deque([root])​ # 先
Thumbnail
這篇文章,會帶著大家複習以前學過的BFS框架, 並且以圖論的應用題與概念為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個演算法框架。 BFS 框架 + 演算法 虛擬碼 # Queue 通常初始化成根結點,作為起點 BFS_queue = deque([root])​ # 先
Thumbnail
這篇文章,會帶著大家複習以前學過的前綴和框架, 並且以區間和的概念與應用為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個演算法框架。 前綴和 prefix sum框架 與 區間和計算的關係式 接下來,我們會用這個上面這種框架,貫穿一些同類型,有關聯的題目 (請讀者、或觀眾
Thumbnail
這篇文章,會帶著大家複習以前學過的前綴和框架, 並且以區間和的概念與應用為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個演算法框架。 前綴和 prefix sum框架 與 區間和計算的關係式 接下來,我們會用這個上面這種框架,貫穿一些同類型,有關聯的題目 (請讀者、或觀眾
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News