用C語言如何打印一個等腰三角形
C語言打印一個等腰三角形
想要打印一個等腰三角形,首先試著打印一個實心的直角三角形。這里統(tǒng)一使用“*”符號打印。
通過觀察直角三角形,我們可以得出,想要打印一個實心的直角三角形,應(yīng)該是第一行打印一個*,然后第二行打印兩個*,以此類推,想要打印多大(多少行)的直角三角形都可以,只要控制一下變量就可以。
如圖所示的一個3行的直角三角形:
* ** ***
想要得到上圖的圖形,代碼如下:
#include <stdio.h>
int main()
{
int i,j;
//1.控制行數(shù)
for(i=1;i<=3;i++)
{
//2.控制每行打印的個數(shù)
for(j=1;j<=i;j++)
{
printf("*");
}
//3.換行
printf("\n");
}
return 0;
}此時,如果我們想要打印一個n行的直角三角形,該如何改代碼呢?
其實很簡單,就是定義一個變量,讓該變量來控制我們最外面的循環(huán)的次數(shù),即行數(shù)。并且讓計算機來接收我們輸入的變量的值,由此來達成我們想要打印多大的直角三角形就可以得到多大的直角三角形。
代碼如下:
#include <stdio.h>
int main()
{
int x;//定義的一個變量,來人為控制行數(shù)
printf("請輸入你想要打印的直角三角形的行數(shù):\n");
scanf("%d",&x);//接收鍵盤輸入的值
int i,j;
//1.控制行數(shù)
for(i=1;i<=x;i++)
{
//2.控制每行打印的個數(shù)
for(j=1;j<=i;j++)
{
printf("*");
}
//3.換行
printf("\n");
}
return 0;
}執(zhí)行結(jié)果如下(我這里用的是虛擬機,是Linux操作系統(tǒng),所以編譯執(zhí)行的方式有點不一樣,如果是一般的編譯軟件,直接編譯運行run就好):
china@ubuntu:/mnt/hgfs/302$ gcc test.c -o test china@ubuntu:/mnt/hgfs/302$ ./test 請輸入你想要打印的直角三角形的行數(shù): 8 * ** *** **** ***** ****** ******* ********
好啦,回歸正題,我們是要打印一個等腰三角形噻。那么通過上面的幾個代碼,你有想法了嗎?
有的話,就先不要接著看下去了,先自己去想好自己的思路,然后實踐一下,代碼出錯是正常的,不要放棄,一般的編譯軟件有錯誤提示,可以試著去改一改自己的錯誤,英文看不懂的家人們,就去用電腦翻譯一下。
實在不會的家人們就接著看下去吧,我的思路不一定是唯一的方法哦,可能還有更簡便的方法,如果有大佬有更好的代碼,可以在評論區(qū)po一下,菜鳥博主前來學(xué)習(xí)請教?。?!
come back,我的思路是這樣的,通過觀察吧,我發(fā)現(xiàn)一個等腰三角形的打印有點類似直角三角形打印,如圖:
*
* *
* * *
* * * *
* * * * *
* * * * * * 首先看圖,你是不是發(fā)現(xiàn),其實等腰三角形打印的規(guī)律也是第一行打印一個*,第二行打印兩個*,然后以此類推,是不是就是上面那個直角三角形相同的兩個for循環(huán)就可以解決?。。∈徍?!別高興太早,不是直接Ctrl C+Ctrl V就完事了,你沒發(fā)現(xiàn)這里的每個*中間還有空格嗎,親?
哦豁!是這樣誒!那還不簡單,直接把打印“*”換成“* ”啊!真是個小聰明!沒錯就是這樣滴!不過單單是這樣還不是等腰三角形,那還是個直角三角形,只不過撐開了點,笑死。因為還有非常關(guān)鍵的一步,那就是,在打印*前,還有空格嘞,你再看看,他們有什么規(guī)律(睜大眼睛仔細看)。
咦~好像空格在慢慢減少,而且第一行是總行數(shù)減一個空格,然后每一行減一個空格,然后直到最后一行,就沒啦!歐耶!回答正確!所以只需要在你打印*前再寫一個for循環(huán)控制每一行打印空格的個數(shù)就莫問題啦~(其中各個變量的關(guān)系你要自己仔細體會哦)
#include <stdio.h>
int main()
{
int m,n,i,j,k;
printf("請輸入m:");
scanf("%d",&m);
n=m;
for(i=1;i<=m;i++)//控制等腰三角形的高度
{
for(j=n-1;j>0;j--)
{
printf(" ");//輸出每一行最前面的空格
}
n--;
for(k=1;k<=i;k++)//打印每一行的空格后的東西
{
printf("* ");
}
printf("\n");//打印下一行
}
return 0;
}執(zhí)行結(jié)果如下:
china@ubuntu:/mnt/hgfs/302$ gcc test3.c -o test3
china@ubuntu:/mnt/hgfs/302$ ./test3
請輸入m:9
*
* *
* * *
* * * *
* * * * *
* * * * * *
* * * * * * *
* * * * * * * *
* * * * * * * * *
看完記得自己去實操一下哦~
最后的最后,有個問題,希望有大佬能解答一下:就是我常常在想,大佬從看見一個問題到寫出一個代碼,整個過程是怎么樣的?因為我感覺我自己經(jīng)常是先想思路,然后有點思路就開始敲代碼實踐,然后就解決了。
但是我感覺和別人說又不一定能說清楚,就很懷疑自己,不知道自己到底是會嘞,還是不會,或者說到底是不是自己瞎貓碰上死耗子,猜對的,反正就很苦惱。
C語言打印倒等腰三角形
學(xué)習(xí)c語言使用控制臺打印圖形是每一個初學(xué)者都會做的事,下面是站在初學(xué)者的角度編寫的代碼,簡單易懂。
#include<stdio.h>
int main()
{
while(1)//死循環(huán),可以多次輸入
{ int n;
printf("請輸入三角形的高:");
scanf("%d", &n);//系統(tǒng)可能會報錯,可以改成scanf_s
for (int i=1; i <=n; i++)//打印行
{
for (int j=1 ; j <= 2 * n -1; j++)//打印列
{
if ((i - j <= 0) && (i + j <= (2 * n)))//對等腰三角形的兩邊進行限制
{
printf("*");
}
else
printf(" ");//填充三角形之外的空余
}
printf("\n");
}
}
return 0;
}運行結(jié)果如下

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
C語言基礎(chǔ)之malloc和free函數(shù)詳解
這篇文章主要介紹了C語言基礎(chǔ)之malloc和free函數(shù)詳解的相關(guān)資料,需要的朋友可以參考下2017-04-04
Java?C++?算法題解leetcode145商品折扣后最終價格單調(diào)棧
這篇文章主要介紹了Java?C++?算法題解leetcode145商品折扣后最終價格單調(diào)棧示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-09-09
C++基礎(chǔ)入門教程(一):基礎(chǔ)知識大雜燴
這篇文章主要介紹了C++基礎(chǔ)入門教程(一):基礎(chǔ)知識大雜燴,本文講解了注釋、頭文件、命名空間等內(nèi)容,需要的朋友可以參考下2014-11-11
c++ 動態(tài)內(nèi)存分配相關(guān)總結(jié)
這篇文章主要介紹了c++ 動態(tài)內(nèi)存分配相關(guān)的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)和使用c++,感興趣的朋友可以了解下2021-02-02
Qt利用QState狀態(tài)機實現(xiàn)控件互斥操作詳解
這篇文章主要為大家詳細介紹了Qt如何利用QState狀態(tài)機實現(xiàn)控件互斥操作,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-12-12
C++ Cartographer源碼中關(guān)于Sensor的數(shù)據(jù)走向深扒
這篇文章主要介紹了C++ Cartographer源碼中關(guān)于Sensor的數(shù)據(jù)走向,整個Cartographer源碼閱讀是很枯燥的, 但絕對是可以學(xué)到東西的,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2023-03-03

