91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言如何輸出任意邊長的菱形

發布時間:2021-12-30 16:07:07 來源:億速云 閱讀:172 作者:小新 欄目:開發技術

小編給大家分享一下C語言如何輸出任意邊長的菱形,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

     1.簡單理解星號輸出原理,將輸出星號代碼分為上方和下方兩部分

        首先,我們可以觀察到如果邊長為a的話,那么最長的一行的長度就為2*a-1,同時,每列星號都是對齊的,這說明我們如果想要輸出星號,是有規律可循的,沒星號的地方我們可以用空格來代替,這樣一想,發現,我們好像可以使用x軸區間來控制空格和星號的輸出

        例如,第三行,如果我們設第一個星號的x坐標為1的話,并在此基礎上輸出5個星號,那我們只需要寫一串代碼去控制在x屬于[1,5]的區間上輸出星號就行了

        同樣,對于圖片中第一行來說,我們只需要寫一串代碼來控制在x屬于(2,4)的區間上輸出一個星號就行了,如下

for(int j=1;j<2*3-1;j++)    //3為圖片中菱形的邊長
{
    if(j>2&&j<4)
        printf("*");
    else
        printf(" ");
}

        現在,由于行數不同,每行輸出的星號數也就不同,那么,我們就可以找出輸出星號數和行數的的關系

        但是,我們又可以看出,最長的一行星號上面的星號輸出方式為由少到多,而最長一行下面的星號輸出方式為由多到少,那么,對于上面和下面,我們要找的星號數與行數的關系也是不同的

     2.上方輸出星號代碼

        那么,接下來,我們先討論最長一行星號的上方(包括最長一行星號),輸出星號數與行數的關系

        首先,我們要遍歷最長一行上方的所有行(包括最長一行),這時,就要用到for循環,這里的a表示最長的一行的行數,同時也是菱形的邊長

for(int i=1;i<=a;i++)

C語言如何輸出任意邊長的菱形

        接下來,我們要找到行數與輸出星號數的關系 

        經過觀察,我們發現,如果a為邊長,i表示行數,那么則在(a-i,2*a-(a-i))區間上要輸出星號

     看到這里的友友們可以停下來思考一下,思考通了在接著看 

        好的,那么接下來,我們要遍歷列,單單遍歷行是不夠的,不能控制星號以及空格的輸出,所以,我們就需要遍歷列

        如下,我們用到了輸出星號的區間,如果列數在區間(a-i,2*a-(a-i))內,就輸出星號,不在區間內,就輸出空格,這樣,就可以控制輸出星號以及行數的關系了。

        當然,也別忘了,每輸出一行星號就要換行,所以要寫printf("\n"),但要寫在遍歷列for循環的外面,遍歷行for循環的里面

        這就是上方輸出星號的全部了,看到這兒,是不是想嘗試自己編寫下方星號的輸出了呢,如果想的話,那就大膽的去嘗試一下(* ̄︶ ̄)

for (int i = 1; i <= a; i++)	//遍歷菱形最長一行上方(包括最長的一行)所有行
	{
		printf(" ");	//每行前面加空格,整齊好看
		for (int j = 1; j<=2*a-1; j++)	
        //遍歷菱形最長一行上方(包括最長的一行)每行的所有列
		{
			if (j > a - i&& j <2 * a - (a - i))
				printf("*");
			else
				printf(" ");
		}
		printf("\n");
	}

     3.下方輸出星號代碼

        好的,那么下面,我們討論最長一行星號的下方(不包括最長一行星號),輸出星號數與行數的關系

        先寫下方的遍歷行,我們是從最長的一行的下一行開始輸出,最長的一行的行數為a,那么,我們要定義行的初始值為a+1,行的最大值為2*a-1

        就像上方輸出星號一樣,接著要找輸出星號的區間,經過觀察,可以發現,列數在區間(i-a,2*a-(i-a))內,就輸出星號,不在區間內,就輸出空格,這樣,就可以控制輸出星號以及行數的關系了。

        接下來,要遍歷列,代碼如下

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

        當然,也別忘了,每輸出一行星號就要換行,所以要寫printf("\n"),但要寫在遍歷列for循環的外面,遍歷行for循環的里面

        這就是下方輸出星號的全部了(* ̄︶ ̄)

for (int i =  a + 1; i <= 2*a-1 ; i++)	//遍歷菱形最長一行上方(包括最長的一行)所有行
	{
		printf(" ");	//每行前面加空格,整齊好看
		for (int j = 1; j <= 2 * a - 1; j++)
		//遍歷菱形最長一行下方(不包括最長的一行)每行的所有列
		{
			if (j > i - a && j < 2*a - (i - a))
				printf("*");
			else
				printf(" ");
		}
		printf("\n");
	}

全部代碼如下

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
	int a;	//菱形的邊長
	//注意,由于屏幕的大小限制,過大的邊長(比如100)會導致無法輸出正常的菱形,望理解
	printf("輸入菱形的邊長:\n");
	scanf_s("%d", &a);
	for (int i = 1; i <= a; i++)	//遍歷菱形最長一行上方(包括最長的一行)所有行
	{
		printf(" ");	//每行前面加空格,整齊好看
		for (int j = 1; j<=2*a-1; j++)
        //遍歷菱形最長一行上方(包括最長的一行)每行的所有列	
		{
			if (j > a - i&& j <2 * a - (a - i))
				printf("*");
			else
				printf(" ");
		}
		printf("\n");
	}
	for (int i =  a + 1; i < 2*a + 1; i++)	//遍歷菱形最長一行上方(包括最長的一行)所有行
	{
		printf(" ");	//每行前面加空格,不和邊框擁擠,可去掉
		for (int j = 1; j <= 2 * a - 1; j++)
        //遍歷菱形最長一行下方(不包括最長的一行)每行的所有列
		{
			if (j > i - a && j < 2*a - (i - a))
				printf("*");
			else
				printf(" ");
		}
		printf("\n");
	}
	system("pause");
	return 0;
}

看完了這篇文章,相信你對“C語言如何輸出任意邊長的菱形”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新蔡县| 抚远县| 驻马店市| 云龙县| 龙里县| 灵川县| 南郑县| 三台县| 余姚市| 阳东县| 曲沃县| 浪卡子县| 米泉市| 樟树市| 屏山县| 吉木萨尔县| 惠东县| 从江县| 鸡泽县| 苏尼特右旗| 鄢陵县| 芜湖市| 莲花县| 井冈山市| 新安县| 平原县| 巴彦县| 斗六市| 南江县| 东乡县| 房产| 秦安县| 饶平县| 故城县| 观塘区| 邵阳县| 宽城| 铁力市| 得荣县| 图们市| 辽宁省|