最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言詳解實(shí)現(xiàn)字符菱形的方法

 更新時(shí)間:2022年04月14日 16:29:26   作者:星塵不會(huì)落  
字符菱形是指給定一個(gè)字符,用它構(gòu)造一個(gè)對(duì)角線長5個(gè)字符,傾斜放置的菱形。輸入輸入只有一行, 包含一個(gè)字符。輸出該字符構(gòu)成的菱形

前言

好,今天就來講一下如何解這道題。

#include<stdio.h>
 
main()
{
    char ch = getchar();
    printf("  %c  \n %c%c%c \n%c%c%c%c%c\n %c%c%c \n  %c  \n",ch,ch,ch,ch,ch,ch,ch,ch,ch,ch,ch,ch,ch,ch);
}

好的,講解完了再見。

等等,騙你的,上面是死方法,下面才是活方法。

1.定義stdio.h頭文件

想必大家都會(huì),我不信,有人不會(huì)。

#include<stdio.h>//定義stdio.h頭文件

2.定義主函數(shù)

這也是很簡單的。

int main()//主函數(shù)
{
    return 0;
}

3.定義行數(shù)-單數(shù)

制造一個(gè)字符菱形,我們先需要定義一個(gè)他的大小,也就是行數(shù),一個(gè)完美的菱形,它的行數(shù)一定是單數(shù)。

{
    int hang;//定義行數(shù)-單數(shù)
    printf("定義行數(shù)-單數(shù):");
    scanf("%d", &hang);//定義行數(shù)-單數(shù)
}

4.得出分割行數(shù)

通過我們定義的行數(shù),得出上下分割部處的行數(shù)。

{
    int shang_xia = (hang / 2 + 1);//定義分割行數(shù)
}

5.定義字符

定義字符需要注意一點(diǎn),我們先前定義了行數(shù),其中緩存區(qū)有個(gè)回車,我們得先清除一下緩存區(qū),這里我推薦用setbuf(stdin, NULL),清除緩存區(qū),主要是方便。

{
    setbuf(stdin, NULL);//清除緩存域
	printf("定義字符:");
	char a = getchar();//定義字符
}

6.初始化打印字符數(shù)與打印空白數(shù)

剛開始我們打印的字符數(shù),與空白數(shù)肯定要初始化一下,字符數(shù)剛開始都是1,這不用想,還有空白數(shù)的話,這是行數(shù)hang/2,因?yàn)樾袛?shù)是單數(shù),所以/2后,會(huì)空出一個(gè)格子。

{
    int ci = 1,//定義打印字符數(shù)
		kon_ci = hang / 2;//定義打印空白數(shù)
}

7.循環(huán)打印菱形

首先我們打印菱形,肯定需要一個(gè)大循環(huán),每打印一行,都需要一個(gè)回車,所以這邊直接加上,行數(shù)減一防止多打一個(gè)回車影響美觀。

for (int i = 0; i < hang; i++)//循環(huán)打印菱形
{
    //打印到上部分
    //打印剩下部分
	if(i<hang-1)//防止多打
	    printf("\n");//打印回車
}

8.打印上部分

打印上半部分,這時(shí)候就需要我們的分割行數(shù),上半部分的打印是,先利用循環(huán)打印空白,再打印字符數(shù),因?yàn)榱庑蚊繉痈语枬M,所以空白數(shù)要減少一點(diǎn),還打印的字符要加兩個(gè),再打印回車。按照這個(gè)原理循環(huán),上半部分就成功了。

{
    if (i < shang_xia)//打印上部分
		{
			for (int j = 0; j < kon_ci; j++)//打印空白數(shù)
				printf(" ");打印空白
			for (int j = 0; j < ci; j++)//打印字符數(shù)
				printf("%c", a);//打印字符
			ci += 2;//每次打印字符數(shù)+2
			kon_ci--;//每次空白數(shù)-1
		}
}

9.打印剩下部分

打印剩下部分就比較簡單了,上面每次空白減1,這里就加1,上面字符加2,這你就減2,跟他反著來就行了,不知道你們有沒有注意到,上面有一個(gè)減一和加二,運(yùn)算之后沒有用到,所以我們得先減去。之后就完成了。

{
    if (i > hang / 2)//打印剩下部分
		{
			if (i == shang_xia)//打印到分割行數(shù)時(shí)多加一次沒用,所以減去
			{
				ci -= 2;//每次打印字符數(shù)-2
				kon_ci++;//每次空白數(shù)+1
			}
			ci -= 2;//每次打印字符數(shù)-2
			kon_ci++;//每次空白數(shù)+1
			for (int j = 0; j < kon_ci; j++)//打印空白數(shù)
				printf(" ");//打印空白
			for (int j = 0; j < ci; j++)//打印字符數(shù)
				printf("%c", a);//打印字符
		}
}

10.完整代碼

第1次做有點(diǎn)水,請(qǐng)多多海涵。

#include<stdio.h>//定義stdio.h頭文件
 
int main()//主函數(shù)
{
	int hang;//定義行數(shù)-單數(shù)
	printf("定義行數(shù)-單數(shù):");
	scanf("%d", &hang);//定義行數(shù)-單數(shù)
	int shang_xia = (hang / 2 + 1);//定義分割行數(shù)
	setbuf(stdin, NULL);//清除緩存域
	printf("定義字符:");
	char a = getchar();//定義字符
	int ci = 1,//定義打印字符數(shù)
		kon_ci = hang / 2;//定義打印空白數(shù)
	for (int i = 0; i < hang; i++)//循環(huán)打印菱形
	{
		if (i < shang_xia)//打印上部分
		{
			for (int j = 0; j < kon_ci; j++)//打印空白數(shù)
				printf(" ");打印空白
			for (int j = 0; j < ci; j++)//打印字符數(shù)
				printf("%c", a);//打印字符
			ci += 2;//每次打印字符數(shù)+2
			kon_ci--;//每次空白數(shù)-1
		}
		if (i > hang / 2)//打印剩下部分
		{
			if (i == shang_xia)//打印到分割行數(shù)時(shí)多加一次沒用,所以減去
			{
				ci -= 2;//每次打印字符數(shù)-2
				kon_ci++;//每次空白數(shù)+1
			}
			ci -= 2;//每次打印字符數(shù)-2
			kon_ci++;//每次空白數(shù)+1
			for (int j = 0; j < kon_ci; j++)//打印空白數(shù)
				printf(" ");//打印空白
			for (int j = 0; j < ci; j++)//打印字符數(shù)
				printf("%c", a);//打印字符
		}
		if(i<hang-1)//防止多打
			printf("\n");//打印回車
	}
	return 0;
}

11.完整效果

錄屏鏈接

到此這篇關(guān)于C語言詳解實(shí)現(xiàn)字符菱形的方法的文章就介紹到這了,更多相關(guān)C語言 字符菱形內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C/C++字符串函數(shù)之復(fù)制函數(shù)詳解

    C/C++字符串函數(shù)之復(fù)制函數(shù)詳解

    下面小編就為大家?guī)硪黄狢/C++字符串函數(shù)之復(fù)制函數(shù)詳解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-09-09
  • C語言連接并操作Sedna XML數(shù)據(jù)庫的方法

    C語言連接并操作Sedna XML數(shù)據(jù)庫的方法

    這篇文章主要介紹了C語言連接并操作Sedna XML數(shù)據(jù)庫的方法,實(shí)例分析了C語言操作XML文件的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • C語言位圖及位圖的實(shí)現(xiàn)

    C語言位圖及位圖的實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了C語言位圖及位圖的實(shí)現(xiàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • 查找算法之二分查找的C++實(shí)現(xiàn)

    查找算法之二分查找的C++實(shí)現(xiàn)

    今天小編就為大家分享一篇關(guān)于查找算法之二分查找的C++實(shí)現(xiàn),小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • 學(xué)生信息管理系統(tǒng)C語言版

    學(xué)生信息管理系統(tǒng)C語言版

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)學(xué)生信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 深入理解char *a與char a[]的區(qū)別

    深入理解char *a與char a[]的區(qū)別

    很多人可能或多或少知道char *a與char a[]的一些區(qū)別,但如果詳細(xì)的說出來卻不知如何說去,下面這篇文章就給大家詳細(xì)介紹了關(guān)于C語言中char *a與char a[]的區(qū)別,有需要的朋友們可以參考借鑒,下面來一起學(xué)習(xí)學(xué)習(xí)吧。
    2016-12-12
  • VC6.0常見編譯錯(cuò)誤提示附解決方法

    VC6.0常見編譯錯(cuò)誤提示附解決方法

    這篇文章主要介紹了VC++6.0編譯過程中常遇到的一些錯(cuò)誤提示并給出了錯(cuò)誤原因與分析,需要的朋友尅參考下
    2013-07-07
  • C++優(yōu)先隊(duì)列的使用小結(jié)

    C++優(yōu)先隊(duì)列的使用小結(jié)

    普通的隊(duì)列是一種先進(jìn)先出的數(shù)據(jù)結(jié)構(gòu),元素在隊(duì)列尾追加,而從隊(duì)列頭刪除,在優(yōu)先隊(duì)列中,元素被賦予優(yōu)先級(jí),本文主要介紹了C++優(yōu)先隊(duì)列的使用,感興趣的可以了解一下
    2023-11-11
  • QT利用QProcess獲取計(jì)算機(jī)硬件信息

    QT利用QProcess獲取計(jì)算機(jī)硬件信息

    本文介紹利用QProcess獲取計(jì)算機(jī)的CPU、主板、硬盤等電腦相關(guān)硬件信息。文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)QT有一定的幫助,感興趣的可以了解一下
    2022-06-06
  • c++判斷是否為目錄的示例分享

    c++判斷是否為目錄的示例分享

    這篇文章主要介紹了c++判斷是否為目錄的示例,需要的朋友可以參考下
    2014-03-03

最新評(píng)論

五华县| 温宿县| 南通市| 邵阳县| 富顺县| 类乌齐县| 江西省| 扬中市| 克拉玛依市| 固阳县| 舟曲县| 靖西县| 长阳| 金沙县| 垦利县| 安达市| 商城县| 六盘水市| 江门市| 丹寨县| 安康市| 太湖县| 滨海县| 夹江县| 英吉沙县| 文昌市| 重庆市| 明星| 张北县| 伊宁县| 申扎县| 蓝田县| 灵寿县| 卓尼县| 岳池县| 福泉市| 乌鲁木齐市| 黄骅市| 麻栗坡县| 兴业县| 沛县|