也稱為多回圈,在一個回圈中嵌套使用一個或多個回圈,
嵌套回圈的基本結構就是在一個回圈中,回圈體包含了另一個回圈的情況,下面我用幾個嵌套回圈的例子來深入理解嵌套回圈,
回圈圖案列印
分別列印下面三種圖案:
思路分析
一般來說,單回圈列印的圖案都是線性的,要么是橫線要么是豎線,那么我們這里需要列印一個二維圖形,就需要從線跨越到面,那么我們只要有很多條線就能構成一個平面,所以我們這里列印二維圖形就需要兩個回圈來實作,
那么我們這里規定外層回圈控制行,內層回圈控制列,然后找到圖形中行與列的關系,通過控制內層回圈的回圈條件,就可以列印出需要的圖形,
1. 實心菱形星星
菱形可以看做兩個三角形組成的,一個正等腰三角,一個倒等腰三角,這里就可以通過if陳述句來根據行數改變列的回圈條件,從而實作列印兩個圖形并組合,
下面是參考代碼:
輸出結果如下:
*
***
*****
*******
*****
***
*
2. 實心菱形字母
這里和實心菱形星星改變的只有列印的內容,整體的圖形還是沒變的,所以我們這里只要改變上面程式中列印的內容就行,
下面是參考代碼:
輸出結果如下:
列印蛇形矩陣
顧名思義,蛇形矩陣:矩陣的一種,常被應用在編程題目與數學數列中,
它由1開始的自然數依次排列成的一個矩陣,有上三角、環形或對角線等走法,輸入檔案由一行或多行組成,每行由一個正整數N組成(N不大于100),
下面練習一些常見的蛇形矩陣:
1. 上三角
要實作如下效果:
可以發現上述表格的規律是,從左上角第一個格開始(起始為1),然后沿右上角到左下角的斜線,先從下到上,再從上到下,開始數字遞增排列,
我們可以想象有一個游戲角色在一個 5*5 的格子上進行走動,每個數字就是他走的步數,這個角色只有4個移動方向,分別為向下、向右上、向右和向左下,那么我們就可以創造一個 (x,y)來表示角色的坐標,再用一個陣列來記錄每個坐標當中的步數是什么,
下面是參考代碼:
輸出結果如下:
2. 環形
要實作如下效果:
可以發現上述表格的規律是,從左上角第一個格開始(起始為1),進行順時針繞圈圈移動,開始數字遞增排列,
這里則可以認為這個角色在繞圈圈,這個角色只有4個移動方向,分別為向右、向下、向左和向上,這個角色每繞一圈,他所能走的格子寬度就減小 1,
下面是參考代碼:
#include <iostream> using namespace std; int main() { // 環形 int num; cout << "請輸入一個(1-10)正整數:"; cin >> num; int* arr = new int[num*num]; // 移動方向,分別是向右,向下,向左,向上 const int step[4][2] = {1,0, 0,1, -1,0, 0,-1}; // 初始坐標為(0,0),方向向右 int x = 0, y = 0, direction = 0; // 這里初始化角色能走的格子尺寸 int limit = num - 1; arr[0] = 1; for (int value = https://www.cnblogs.com/112Q/p/2;value <= (num*num); value++) { //進行移動 x += step[direction][0]; y += step[direction][1]; arr[y*num + x] = value; //判斷是否需要改變方向 switch (direction) { case 0: // 向右之后,到可走格子邊界就向下否則繼續向右 direction = x == limit ? 1 : 0; break; case 1: // 向下之后,到可走格子邊界就向左否則繼續向下 direction = y == limit ? 2 : 1; break; case 2: // 向左之后,到可走格子邊界就向上否則繼續向左 direction = x == (num - limit -1) ? 3 : 2; break; case 3: // 向上之后,到可走格子邊界就向右,并且可走格子尺寸減少 1 ,否則繼續向上 if (y == (num - limit)) { limit -= 1; direction = 0; } break; } } // 按照存盤在陣列 arr 中的資料,將每個坐標的值列印 for (y = 0; y < num; y++) { for (x = 0; x < num; x++) { cout << arr[y*num + x] << '\t'; } cout << endl; } delete [] arr; system("pause"); return 0; }
輸出結果如下:
請輸入一個(1-10)正整數:7 1 2 3 4 5 6 7 24 25 26 27 28 29 8 23 40 41 42 43 30 9 22 39 48 49 44 31 10 21 38 47 46 45 32 11 20 37 36 35 34 33 12 19 18 17 16 15 14 13 請按任意鍵繼續. . .
希望對大家有幫助!
另外如果你想更好的提升你的編程能力,學好C語言C++編程!彎道超車,快人一步!
C語言C++編程學習交流圈子,QQ群757874045【點擊進入】微信公眾號:C語言編程學習基地
分享(原始碼、專案實戰視頻、專案筆記,基礎入門教程)
歡迎轉行和學習編程的伙伴,利用更多的資料學習成長比自己琢磨更快哦!
編程學習軟體分享:
編程學習視頻分享:

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/39686.html
標籤:C
上一篇:Mybatis #{}預處理錯誤
