迴圈的圖形問題

更新於 發佈於 閱讀時間約 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*
在當今數位時代,電資領域人才需求爆發式成長,不論是前端網頁設計、嵌入式開發、人工智慧、物聯網還是軟硬體整合,這些技術都在改變世界。而掌握 C/C++、Python、數位邏輯、電路學與嵌入式開發等大學電資領域的課程,正是進入這個高薪、高需求產業的關鍵!
留言
avatar-img
留言分享你的想法!

































































本章節將提供各迴圈實作九九乘法表的邏輯。最後以條件運算子再次改寫,形成更簡潔的程式架構。
本章將介紹 C 語言的鏈結串列 (Linked List),這是一種 動態數據結構,也是較進階的單元。透過本章學習,你將能夠 靈活操作 C 語言的鏈結串列,並為進一步學習 進階數據結構做好準備。
本章將深入解析 C 語言的檔案處理 ,學習如何使用 標準 I/O 函式 (fopen(), fclose(), fgets(), fprintf()等) 來讀取與寫入檔案。檔案處理是 儲存與管理數據 的核心技術,適用於日誌記錄等應用。 透過本章學習,你將能夠 熟練操作 C 語言的檔案處理
C Preprocessor 負責在編譯之前對原始程式碼進行處理。其所執行的一些動作包刮了: 將其它檔案含入編譯的檔案中、定義符號常數和巨集、程式碼的條件式編譯、以及條件式執行的前置處理器命令。所有前置處理器命令都會以# 開始。本章會讓你對前置處理器有一些初步的認識與了解。
上節我們有提到過指標陣列,即陣列元素是指標,這與「指向陣列的指標」不同,千萬不要混淆。 今天這節要來講函式指標、指標型態轉換。
本篇文章深入淺出地介紹 C 語言中的資料型別,包含 enum、struct、union 和 typedef 的使用方法與應用情境。並透過圖解說明 struct 的記憶體配置和 union 的特性,以及位元組順序 (Endianness) 的概念。文末並附帶練習題,幫助讀者理解相關知識。
本章節將提供各迴圈實作九九乘法表的邏輯。最後以條件運算子再次改寫,形成更簡潔的程式架構。
本章將介紹 C 語言的鏈結串列 (Linked List),這是一種 動態數據結構,也是較進階的單元。透過本章學習,你將能夠 靈活操作 C 語言的鏈結串列,並為進一步學習 進階數據結構做好準備。
本章將深入解析 C 語言的檔案處理 ,學習如何使用 標準 I/O 函式 (fopen(), fclose(), fgets(), fprintf()等) 來讀取與寫入檔案。檔案處理是 儲存與管理數據 的核心技術,適用於日誌記錄等應用。 透過本章學習,你將能夠 熟練操作 C 語言的檔案處理
C Preprocessor 負責在編譯之前對原始程式碼進行處理。其所執行的一些動作包刮了: 將其它檔案含入編譯的檔案中、定義符號常數和巨集、程式碼的條件式編譯、以及條件式執行的前置處理器命令。所有前置處理器命令都會以# 開始。本章會讓你對前置處理器有一些初步的認識與了解。
上節我們有提到過指標陣列,即陣列元素是指標,這與「指向陣列的指標」不同,千萬不要混淆。 今天這節要來講函式指標、指標型態轉換。
本篇文章深入淺出地介紹 C 語言中的資料型別,包含 enum、struct、union 和 typedef 的使用方法與應用情境。並透過圖解說明 struct 的記憶體配置和 union 的特性,以及位元組順序 (Endianness) 的概念。文末並附帶練習題,幫助讀者理解相關知識。
你可能也想看
Google News 追蹤
Thumbnail
多邊形空心線圈十分類似方形線圈,同樣會有個線圈外膨的現象,使得完成線型可能不如預期。在方形空心線圈的討論文章中,著重討論的是兩彎角之間的距離及漆包線徑的剛性強度影響,這些要素在多邊形線圈當中依然存在。簡單的描述,就是兩彎角越近,則彎角中間的直線段外擴越嚴重;漆包線越粗,代表線材越不容易彎折,也會增加
Thumbnail
本處的方形空心線圈泛指四邊形,包括正方形、長方形及梯形等;方形空心線圈的型態與馬達繞線較為相似,主要是馬達矽鋼片留給線圈的走線空間皆為四邊形,故兩者往往會有相同的問題,在直線區段的線圈會有種向外膨起的現象。 理想的方形空心線圈應當是等距的層疊,最終完成的形狀應如下圖當中最左側的範例。然而在實務執行
Thumbnail
圓形為空心線圈中最常出現的形狀,但很多設計者在規劃時,常常漏了一點,導致實際生產的尺寸有落差,那就是爬層空間。 如下圖所示,過往在空心線圈排列規劃時免不了兩種形式,左側的方形排列以及右側的緊實排列兩種,生產上是右側較為接近現實。但無論是左右兩種規劃,設計者往往都忽略了從線圈從第一層往上爬至第二層時
Thumbnail
有別於傳統空心線圈的成形,大多僅在二維平面上有所差異,如圓形、方形、三角形、梯形等等,然而此一案例則是將線圈造型延伸三維空間當中,採用了U型及I型的空間配置,同時後續還有個組裝的配合條件,十分具有挑戰性,故紀錄其改善內容。 一、嘗試初期 已知此空心線圈後續還有組裝排列的工序,故單顆線圈完成後就需
Thumbnail
這一節談的是向量的定義,以及如何運用向量來建立模擬物體運動時,關於位置和速度間的關係式。
Thumbnail
直觀理解 導數:考慮的是單一變數的函數,描述的是函數在某點的斜率或變化率。 偏導數:考慮的是多變數函數,描述的是函數在某個變數變化時的變化率,其他變數保持不變。  (針對各維度的調整 或者稱變化 你要調多少) 應用 導數:在物理學中應用廣泛,例如描述速度和加速度。 偏導數:在多變量分析、優
Thumbnail
這篇文章,會帶著大家複習以前學過的BFS框架, 並且以圖論的應用題與概念為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個演算法框架。 BFS 框架 + 演算法 虛擬碼 # Queue 通常初始化成根結點,作為起點 BFS_queue = deque([root])​ # 先
Thumbnail
這篇文章,會帶著大家複習以前學過的前綴和框架, 並且以區間和的概念與應用為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個演算法框架。 前綴和 prefix sum框架 與 區間和計算的關係式 接下來,我們會用這個上面這種框架,貫穿一些同類型,有關聯的題目 (請讀者、或觀眾
Thumbnail
上篇進一步認識基本的圖形架構與三大 Graph 算法,那首先從 shortest path 開始,我們會陸續去理解這些算法,以及可能的應用,如果還沒有看過上一篇的,可以點以下連結~那我們就開始吧! 【圖論Graph】Part1:初探圖形與圖形演算法之應用
Thumbnail
多邊形空心線圈十分類似方形線圈,同樣會有個線圈外膨的現象,使得完成線型可能不如預期。在方形空心線圈的討論文章中,著重討論的是兩彎角之間的距離及漆包線徑的剛性強度影響,這些要素在多邊形線圈當中依然存在。簡單的描述,就是兩彎角越近,則彎角中間的直線段外擴越嚴重;漆包線越粗,代表線材越不容易彎折,也會增加
Thumbnail
本處的方形空心線圈泛指四邊形,包括正方形、長方形及梯形等;方形空心線圈的型態與馬達繞線較為相似,主要是馬達矽鋼片留給線圈的走線空間皆為四邊形,故兩者往往會有相同的問題,在直線區段的線圈會有種向外膨起的現象。 理想的方形空心線圈應當是等距的層疊,最終完成的形狀應如下圖當中最左側的範例。然而在實務執行
Thumbnail
圓形為空心線圈中最常出現的形狀,但很多設計者在規劃時,常常漏了一點,導致實際生產的尺寸有落差,那就是爬層空間。 如下圖所示,過往在空心線圈排列規劃時免不了兩種形式,左側的方形排列以及右側的緊實排列兩種,生產上是右側較為接近現實。但無論是左右兩種規劃,設計者往往都忽略了從線圈從第一層往上爬至第二層時
Thumbnail
有別於傳統空心線圈的成形,大多僅在二維平面上有所差異,如圓形、方形、三角形、梯形等等,然而此一案例則是將線圈造型延伸三維空間當中,採用了U型及I型的空間配置,同時後續還有個組裝的配合條件,十分具有挑戰性,故紀錄其改善內容。 一、嘗試初期 已知此空心線圈後續還有組裝排列的工序,故單顆線圈完成後就需
Thumbnail
這一節談的是向量的定義,以及如何運用向量來建立模擬物體運動時,關於位置和速度間的關係式。
Thumbnail
直觀理解 導數:考慮的是單一變數的函數,描述的是函數在某點的斜率或變化率。 偏導數:考慮的是多變數函數,描述的是函數在某個變數變化時的變化率,其他變數保持不變。  (針對各維度的調整 或者稱變化 你要調多少) 應用 導數:在物理學中應用廣泛,例如描述速度和加速度。 偏導數:在多變量分析、優
Thumbnail
這篇文章,會帶著大家複習以前學過的BFS框架, 並且以圖論的應用題與概念為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個演算法框架。 BFS 框架 + 演算法 虛擬碼 # Queue 通常初始化成根結點,作為起點 BFS_queue = deque([root])​ # 先
Thumbnail
這篇文章,會帶著大家複習以前學過的前綴和框架, 並且以區間和的概念與應用為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個演算法框架。 前綴和 prefix sum框架 與 區間和計算的關係式 接下來,我們會用這個上面這種框架,貫穿一些同類型,有關聯的題目 (請讀者、或觀眾
Thumbnail
上篇進一步認識基本的圖形架構與三大 Graph 算法,那首先從 shortest path 開始,我們會陸續去理解這些算法,以及可能的應用,如果還沒有看過上一篇的,可以點以下連結~那我們就開始吧! 【圖論Graph】Part1:初探圖形與圖形演算法之應用