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

C語(yǔ)言之格式化屏幕輸出詳解

 更新時(shí)間:2021年11月12日 14:35:18   作者:Tkpluto  
這篇文章主要介紹了C語(yǔ)言之格式化屏幕輸出的相關(guān)資料,需要的朋友可以參考下,小編覺(jué)得這篇文章寫(xiě)的還不錯(cuò),希望能夠給你帶來(lái)幫助

在一些問(wèn)題中,問(wèn)題經(jīng)常規(guī)定了屏幕輸出的格式,讓我們以固定的格式編程輸出某些圖案或表格。我們分別以下面三個(gè)例子來(lái)說(shuō)明格式化屏幕輸出的方法。

題目1:請(qǐng)打印輸出以下圖案。

我們當(dāng)然可以用最笨的方法,直接按照題目樣式暴力輸出:

printf("   *\n");
printf("  ***\n");
printf(" *****\n");
printf("*******\n");
printf(" *****\n");
printf("  ***\n");
printf("   *\n");

那多沒(méi)意思啊😅,玩不起嗎?

如果題目要求輸出菱形的大小可以改變,那不就寄了嗎?

仔細(xì)思考,這種格式化輸出的圖案都是非常整齊的,我們當(dāng)然需要用到循環(huán)語(yǔ)句。

首先,兩層for循環(huán)是跑不掉的,最外層的for循環(huán)用來(lái)控制輸出行數(shù),內(nèi)層的for循環(huán)用來(lái)控制空格以及'*'。剛開(kāi)始的時(shí)候,我們最好先自己動(dòng)手畫(huà)一下,分析一下圖案的組成。

我們發(fā)現(xiàn),前四行中,'*'的個(gè)數(shù)是以奇數(shù)往下遞增的,而后四行'*'的個(gè)數(shù)是逐行往下遞減的,那么我們只要先處理好前4行的圖案,后3行稍加修改即可得到。

首先我們看看空格與'*'以及行數(shù)之間的數(shù)量關(guān)系:

行數(shù) 空格 *
1 3 1
2 2 3
3 1 5
4 0 7
…… …… ……
n N-n(N為遞增總行數(shù)) 2*n-1

很顯然,現(xiàn)在問(wèn)題就變成了一個(gè)小學(xué)生的找規(guī)律問(wèn)題,因此我們可以編寫(xiě)以下代碼:

for (int n=1; n<=4; n++)//n為行數(shù),4為總行數(shù)N
{
    for (int i=1; i<=4-n; i++)//輸出'*'前的空格
    {
        printf(" ");
    }
    for (int i=1; i<=2*n-1; i++)//輸出'*'
    {
        printf("*");
    }
    printf("\n");//輸出完一行后要換行
}

運(yùn)行結(jié)果為:

說(shuō)明我們的想法是對(duì)的!那么剩下的3行(N-1行)只需要對(duì)以上代碼稍加修改就行了。修改過(guò)后,我們可以得到:

for (int n=1; n<=4; n++)//n為行數(shù),4為遞增總行數(shù)N
{
    for (int i=1; i<=4-n; i++)//輸出'*'前的空格
    {
        printf(" ");
    }
    for (int i=1; i<=2*n-1; i++)//輸出'*'
    {
        printf("*");
    }
    printf("\n");//輸出完一行后要換行
}
for (int n=1; n<=3; n++)//n為行數(shù),3為遞減總行數(shù)N-1
{
    for (int i=1; i<=n; i++)//輸出'*'前的空格
    {
        printf(" ");
    }
    for (int i=1; i<=7-2*n; i++)//輸出'*',7為遞增行中最后一行(第N行)的'*'的數(shù)量2*N-1
    {
        printf("*");
    }
    printf("\n");//輸出完一行后要換行
}

運(yùn)行結(jié)果為:

好耶!現(xiàn)在我們已經(jīng)得到了我們想要的結(jié)果。那么隨著菱形的大小改變時(shí),我們只要相應(yīng)地改變N的大小,即可輸出對(duì)應(yīng)的圖案。

題目2:分別按如下三種形式,編程輸出九九乘法表。

同樣,暴力方法是肯定可以做出來(lái)的😅,這里就不再贅述。

首先第一步,我們要用暴力方法把九九乘法表的表頭輸出出來(lái):

printf("1  2  3  4  5  6  7  8  9\n");
printf("-  -  -  -  -  -  -  -  -\n");

這三個(gè)表應(yīng)該是第一種格式比較簡(jiǎn)單,因?yàn)樗麤](méi)有過(guò)多的較難處理的空格。

事實(shí)上,我們只要用兩層循環(huán),讓九九乘法表的行和列的表頭遍歷1~9,并把他們相乘即可得到表中的每一個(gè)值(這里行的表頭隱藏了)。(我所說(shuō)的行和列的表頭的意思是下表中的這些數(shù)字):

123456789123456789

因此我們有:

for (int i=1; i<=9; i++)//行的表頭遞增
{
    for (int j=1; j<=9; j++)//列的表頭遞增
    {
        printf("%3d", i * j);
    }
    printf("\n");//每輸出完一行后要換行
}

這樣我們就能得到第一個(gè)表:

我們來(lái)看第二個(gè)表:第二個(gè)表為左下三角形,右上三角形無(wú)輸出(或輸出為空格)。

尋找一下規(guī)律,不難發(fā)現(xiàn),當(dāng)列的表頭小于等于行的表頭(j<=i)時(shí),才會(huì)輸出數(shù)字。

因此我們可以在第一種情況下稍作修改:

for (int i=1; i<=9; i++)//行的表頭遞增
{
    for (int j=1; j<=9; j++)//列的表頭遞增
    {
        if (j<=i)
        {
            printf("%3d", i * j);
        }
    }
    printf("\n");//每輸出完一行后要換行
}

即可得到第二個(gè)表:

類(lèi)似地,第三個(gè)表是當(dāng)列的表頭大于等于行的表頭(j>=i)時(shí)才輸出數(shù)字,當(dāng)列的表頭小于行的表頭(j<i)時(shí)輸出空格。值得注意的是,因?yàn)槲覀冇玫氖?3d,所以每次應(yīng)輸出3個(gè)空格。在第一種情況下稍作修改,得到如下代碼:

for (int i=1; i<=9; i++)//行的表頭遞增
{
    for (int j=1; j<=9; j++)//列的表頭遞增
    {
        if (j>=i)
        {
            printf("%3d", i * j);
        }
        else
        {
            printf("   ");
        }
    }
    printf("\n");//每輸出完一行后要換行
}

即可得到第三個(gè)表:

總結(jié)

本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • 深入探索C++中stack和queue的底層實(shí)現(xiàn)

    深入探索C++中stack和queue的底層實(shí)現(xiàn)

    這篇文章主要介紹了C++中的stack和dequeue的底層實(shí)現(xiàn),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-09-09
  • C語(yǔ)言中的const如何保證變量不被修改

    C語(yǔ)言中的const如何保證變量不被修改

    這篇文章主要給大家介紹了關(guān)于C語(yǔ)言中const如何保證變量不被修改的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • C++實(shí)現(xiàn)LeetCode( 69.求平方根)

    C++實(shí)現(xiàn)LeetCode( 69.求平方根)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode( 69.求平方根),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • c語(yǔ)言與c++基礎(chǔ)知識(shí)點(diǎn)(必看)

    c語(yǔ)言與c++基礎(chǔ)知識(shí)點(diǎn)(必看)

    下面小編就為大家?guī)?lái)一篇c語(yǔ)言與c++基礎(chǔ)知識(shí)點(diǎn)(必看)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-07-07
  • c++ 指針與引用的區(qū)別介紹及使用說(shuō)明

    c++ 指針與引用的區(qū)別介紹及使用說(shuō)明

    指針與引用看上去完全不同(指針用操作符*和->,引用使用操作符.),但是它們似乎有相同的功能,感興趣的朋友可以了解下啊,或許本文對(duì)你有所幫助,好了,話不多說(shuō),切入正題
    2013-01-01
  • C++中的變長(zhǎng)參數(shù)深入理解

    C++中的變長(zhǎng)參數(shù)深入理解

    變長(zhǎng)參數(shù)的函數(shù),即參數(shù)個(gè)數(shù)可變、參數(shù)類(lèi)型不定的函數(shù)。設(shè)計(jì)一個(gè)參數(shù)個(gè)數(shù)可變、參數(shù)類(lèi)型不定的函數(shù)是可能的,最常見(jiàn)的例子是printf函數(shù)、scanf函數(shù)和高級(jí)語(yǔ)言的Format函數(shù)。最近的一個(gè)項(xiàng)目中就遇到這么一個(gè)相關(guān)的問(wèn)題,感興趣的朋友們下面來(lái)一起看看吧。
    2016-10-10
  • C++中的函數(shù)返回值與拷貝用法

    C++中的函數(shù)返回值與拷貝用法

    這篇文章主要介紹了C++中的函數(shù)返回值與拷貝用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • QT編寫(xiě)地圖實(shí)現(xiàn)設(shè)備點(diǎn)位的示例代碼

    QT編寫(xiě)地圖實(shí)現(xiàn)設(shè)備點(diǎn)位的示例代碼

    在地圖應(yīng)用的相關(guān)項(xiàng)目中,在地圖上標(biāo)識(shí)一些設(shè)備點(diǎn),并對(duì)點(diǎn)進(jìn)行交互這個(gè)功能用的最多的,于是需要一套機(jī)制可以動(dòng)態(tài)的添加、刪除、清空、重置。本文將詳細(xì)介紹這些功能如何實(shí)現(xiàn),需要的可以參考一下
    2022-01-01
  • C++實(shí)現(xiàn)遞歸函數(shù)的方法

    C++實(shí)現(xiàn)遞歸函數(shù)的方法

    在本篇內(nèi)容里小編給大家分享了關(guān)于C++實(shí)現(xiàn)遞歸函數(shù)的教學(xué)步驟,需要的朋友跟著參考下。
    2018-12-12
  • c/c++單例模式類(lèi)的混合編譯案例詳解

    c/c++單例模式類(lèi)的混合編譯案例詳解

    ? 由于c語(yǔ)言中沒(méi)有類(lèi)的概念,因此對(duì)于有類(lèi)的cpp文件與c文件混合編譯時(shí),提供一個(gè)中間層提供類(lèi)的操作接口,在c文件中調(diào)用接口實(shí)現(xiàn)間接操作類(lèi)對(duì)象,這篇文章主要介紹了c/c++單例模式類(lèi)的混合編譯的相關(guān)資料
    2022-10-10

最新評(píng)論

周口市| 吉安县| 潞城市| 蛟河市| 咸丰县| 灵丘县| 兴仁县| 梧州市| 永平县| 梧州市| 介休市| 大庆市| 岳阳市| 怀安县| 湖口县| 大连市| 漯河市| 临朐县| 民勤县| 鄂托克前旗| 府谷县| 隆安县| 班玛县| 岳西县| 新密市| 区。| 商水县| 郧西县| 大姚县| 英吉沙县| 张家界市| 搜索| 永昌县| 玛纳斯县| 桃园市| 安吉县| 龙口市| 内丘县| 永兴县| 郎溪县| 修文县|