關於用c語言列印菱形圖形的演算法思路

時間 2022-04-12 17:32:24

1樓:

我說一下第二個,其實第乙個和第二個思路是一樣的。

1.外面的for迴圈,用i控制行數,輸入整數為n,則整個圖形的行數為2*n-1,列數也是一樣的,你可以看看,就是說行數和列數是一樣的,所以內層迴圈和外層迴圈都是2*n-1,不信的話,你可以查查圖形的行列數。

2.i=n是控制下半個部分。因為0<=j<=2*n-1,就是說j可以大於n-1,也可以小於n-1。

n-1是真個圖形最中間的那一列,整個圖形關於這一列對稱。當i=n時,道理是一樣的,隨著i的增大,每一行都會少兩個數字,並且少的數字位置關於中間這一列對稱。所以要abs(n-1-j)<2*n-1-i,i>=n時,i每增大1,2*n-1-i都會減少1,abs(n-1-j)都會減少兩個列,並且減少的兩個列關於中間對稱,你可以自己算算是不是這個道理。

還有沒有其他不懂得?

2樓:解毒清欲

int n = 6;

for (int i =1;i<=2*n-1;i++)else}system.out.print("\n");}

3樓:海綿

雖然這不是我寫的,但我還是能看懂點

你可以自己用算術推導一下每行的空格,*的個數

然後就是樸素的模擬

c語言列印菱形詳細講解

4樓:匿名使用者

菱形****

*****

*******

*****

****

#include "stdio.h"

void main()

for(i=1;i<=4;i++) //迴圈控制行數1~4 四行 此時游標再第五行開始 i為4時即第九行只有空格 }

5樓:

楊輝三角,,,你看看?乙個正的 乙個倒的

6樓:零乙隻小斑點狗

程式不太難,找支筆寫一寫就知道到了

用c語言列印菱形圖案的方法是什麼?

7樓:田憐

下面的程式是菱形列印的【終結者】,改變下設定,就基本可以滿足所有菱形列印的題目。程式主體 for 語句只有9行,簡單而強大 */#include #include #include // 這個小函式用來輸出 repeattimes 個字元

#includevoid main() 這是最簡單的。下面乙個稍微複雜一點。#includevoid main()

c語言列印菱形的流程圖

8樓:

先列印第乙個到中間的菱形,然後再列印中間到末尾的菱形,具體的實現方法用for迴圈

用c語言程式設計輸出菱形 圖案

9樓:胖友愛籃球

#include

void main()

for(i=1;i<=3;i++) }

擴充套件資料:

for迴圈

for迴圈結構是c語言中最具有特色的迴圈語句,使用最為靈活方便,它的一般形式為:

for(表示式1;表示式2;表示式3)迴圈體語句 。(其中;不能省略)

表示式表示式1為初值表示式,用於在迴圈開始前為迴圈變數賦初值。

表示式2是迴圈控制邏輯表示式,它控制迴圈執行的條件,決定迴圈的次數。

表示式3為迴圈控制變數修改表示式,它使for迴圈趨向結束。

迴圈體語句是在迴圈控制條件成立的情況下被反覆執行的語句。

但是在整個for迴圈過程中,表示式1只計算一次,表示式2和表示式3則可能計算多次,也可能一次也不計算。迴圈體可能多次執行,也可能一次都不執行。

先執行表示式2,然後執行迴圈結構,最後表示式3,一直這樣迴圈下去。

for迴圈語句是c語言種功能最為強大的語句,甚至在一定程度上可以代替其他的迴圈語句。

dodo迴圈結構,do 1 while⑵;的執行順序是1->2->1...迴圈,2為迴圈條件。

while

while迴圈結構,while(1) 2; 的執行順序是1->2->1...迴圈,1為迴圈條件

以上迴圈語句,當迴圈條件表示式為真則繼續迴圈,為假則跳出迴圈。

10樓:設計複雜

1、首先在電腦中開啟c語言編輯器,新建乙個原始檔,如下圖所示。

2、然後寫入**,如下圖所示,源**如下:#include//用c語言迴圈來畫出數字構成的菱形 。

3、繼續輸入**,如下圖所示,for(i=1;i<=n-1;i++)      //輸出下半個三角形 if(i==n-1)printf("1");else{for(t=1;t<=n-i;t++)。

4、最後點選編譯並執行,如下圖所示,然後輸入n就能看到結果了,菱形圖案。

11樓:風若遠去何人留

迴圈輸出, 只要確定了空格的個數就可以。

int main()

for (j = 0; j < 2 * i+1; j++)printf("\n");

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

printf("\n");

}  system("pause");

return 0;

}這個是實心菱形的**。

12樓:滄海雄風

#include

int main()

for (j = 0; j < 2 * i+1; j++)printf("\n");

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

printf("\n");

}return 0;

}  5

****

*****

*******

*********

*******

*****

****

請按任意鍵繼續. . .

13樓:聽不清啊

#include

#include

int main()

{int n,i,j;

scanf("%d",&n);

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

14樓:匿名使用者

/*用如下語句輸出比較好理解,主要是迴圈結構的巢狀語句發揮作用,注意空格和星號的遞增關係*/並且你需要多少行,就能輸出多少行。精煉!#include "stdio.h"

void main()

printf(" ");

for(i=0;i<=n;i++)}

15樓:匿名使用者

提供2個

#include

void main()

for(i=1;i<=3;i++) }

#include

#include

main() }

16樓:4747哦

#include

main()

printf("\n"); //輸出第i行的*以後,換行執行i+1行的迴圈

}//以下程式執行倒星三角形

for(i=0;i<(m-1)/2;i++) //剩下行數m-(m+1)/2=(m-1)/2

printf("\n");}}

17樓:

/*曼哈頓距離原理 解決輸出菱形問題

*/#include

using namespace std;

int main()

cout<

}return 0;}

18樓:

譚浩強第四版課後題答案

#include

int main()

for(b=1;b<=2*i-1;b++)//控制每行*的個數printf("\n");

}//後3行,下半部分

for(i=n-1;i>=1;i--)//控制前四行行數for(b=1;b<=2*i-1;b++)//控制每行*的個數printf("\n");

}printf("\n");

return 0;}

19樓:芒果味的青瓜

/*-------------------------------------------

拓展:列印菱形(方法一)

--------------------------------------------*/

#include

main()

for(row=6;row<10;row++)}

20樓:瑩

#includeusing namespace std;void print(int s,int n) for(int i=n-1;i>0;i--) }

21樓:匿名使用者

1。迴圈2。prinf

用c語言程式設計列印乙個關於*的菱形圖案最簡單的哈 * *** ***** *** *

22樓:瘋子是天才

手機黨輸入

#include"stdio.h"

main()

c語言輸出乙個菱形圖案(有程式)

23樓:惲長征百燕

i表示行號,打

一行i就加1

j表示某一行需要列印空格的數目

k表示某一行需要列印『*』的數目

這個程式打了乙個7行的菱形,我把程式改一下,把i,j,k的計數都從1開始,看起來會比較直觀

#include

void

main()

for(i=1;i<=3;i++)

//然後列印後面三行,行號從1開始計算}

24樓:匿名使用者

菱形,就是如下所示的圖形,總行數與總列數相等:

寫乙個程式,根據使用者輸入的總行數,列印出菱形。

這個題目主要是找出規律,考察讀者的邏輯思維。

你可以從第一行開始,遍歷所有的列,也可以從第一列開始,遍歷所有的行。

下面的程式從第一行開始,遍歷所有的列。

設菱形的總行數為line,總列數為column,當前行為i,當前列為j。上半部分與下半部分的規律不一樣,應該分開討論。

我們著眼於星號(*),思考什麼條件下輸出星號,總結出如下的規律。

1) 對於上半部分(包括中間一行),當前行與當前列滿足如下關係輸出星號:

j>=(column+1)/2-(i-1)     (column+1)/2-(i-1)為第i行最左邊的星號

j<=(column+1)/2+(i-1)    (column+1)/2+(i-1)為第i行最右邊的星號

2) 對於下半部分,當前行與當前列滿足如下關係輸出星號:

j>=(column+1)/2-(line-i)     (column+1)/2-(line-i)為第i行最左邊的星號

j<=(column+1)/2+(line-i)    (column+1)/2+(line-i)為第i行最右邊的星號

不滿足上述條件,則輸出空格。

於是寫出如下的**:純文字複製

#include #include int main()column = line;  // 總行數和總列數相同for(i=1; i<=line; i++)else}}elseelse}}printf("\n");}return 0;}

執行結果:請輸入菱形的行數(奇數):11

****

*****

*******

*********

***********

*********

*******

*****

****

25樓:edward司徒文德

用得著6個for迴圈碼?

//列印稜形字母

//注意abs(i)+abs(j)<=k

//用數學的角度分析(假設k為2)

//|x|+|y|<=k

//y<=  2 - x

//y<=  x + 2

//y>= -x - 2

//y>=  x - 2

#include

#include

int main(void)

return 0;

}不懂追問我

學過數學,自己畫個圖你就明白了

用C語言列印菱形圖案,用C語言程式設計輸出菱形 圖案

偽 方法判斷是否是閏年 這裡不涉及大年份 因為不確定你用的語言 返回值true,代表傳入引數對應年份是閏年 否則不是閏年boolean 是否是閏年 int 年份 elsereturn boo include void main for i 4 i 7 i 列印下半部分 你還可以在此基礎上提公升一下,...

c語言 關於sizeof問題,C語言 關於sizeof問題

我來回答你的問題 sizeof函式的意思是統計變數長度。int的長度長2個位元組 char的長度長1個位元組 float的長度長4個位元組 union uuua的長度取決於其中成員中最長的變數的位元組長度,在這裡為char型別,共五個元素值,長度為5。那麼開始統計總長度也就是2 1 4 5 12 希...

關於C語言的問題,關於c語言問題

先說明一點,c語言中巨集和函式有些差別,巨集是 第乙個例子,double 1 2 這個呼叫實際上是2 1 2,看,x被為1 2,然後根據運算子的規則 實際上應該說是優先順序 先運算2 1,再加上2,所以結果是4。第二個例子就更簡單了,同樣是,toupper s i 這個呼叫,實際上它的 就是 a s...

關於c語言for語句的迴圈巢狀,關於C語言for語句的迴圈巢狀

從裡到外。意思就是 i 0 j 0時先迴圈k.迴圈結束再執行i 0 j 1再迴圈k 一直這樣下去! for i 0 i 2 i for j 0 j 2 j for k 0 k 2 k 要是這樣看的話會不會好理解些,從裡到外。 意思是 k 的for 語句迴圈的次數 k j,而 j 迴圈的次數 j i ...

關於c語言函式問題,關於C語言函式問題

一般判定都是為真執行,為假不執行 圖中的 p指的是 以p變數的內容為位址的變數 而你只要看看,它所指向的變數的值是不是0,如果不是0,那麼就會執行 這個地方其實不用換成for,該用什麼用什麼,如果是題目需要的話就只能這樣寫了 for p p 10 然後在裡面寫一堆語句.不過我是沒這樣寫過,不太清楚....