- 相關推薦
C語言如何輸出菱形
適有同學問起一些C語言題目,本想上網搜索了事,但網上的方法都是分為上下部分用兩個嵌套for循環輸出。我想有沒有合起來輸出的呢,這樣符合簡潔又美觀的要求呢?答案是有的。下面是小編為大家搜索整理的C語言如何輸出菱形,希望大家能有所收獲!
題目:輸出行列都相等的菱形,如5行5列:
行列 12345
1 *
2 ***
3 *****
4 ***
5 *
分析:
當行數等于總行數的一半時,'*'是遞增的,遞增為2。
當行數大于總行數的一半時,'*'是遞減的,遞增為2。
設有一個行列為n的菱形,
我們用變量i作為行數,以0開始,i
k作為n菱第i行要輸出的'*'個數。
則i<=n的中值(用m表示,m=(n-1) i="">m時,k遞減。
因為k相對于m行對稱,所以:
當i>m時,i每增加i-m時的k值就和第m-i行的k值相等,即第i-m行和第m-(i-m)相對稱。
所以得出結果:
當i<=m時,k=2i+1
當i>m時,k=2(m-(i-m))+1,(m=(n-1)/2)。即k=2n-2i-1
由于我們只需要輸出'*'左邊的空格即可,所以每行'*'左邊的空格的個數為:(n-每行的k)/2。
每行循環輸出空格,再循環輸出每行的'*',再輸出回車,結束一行。
這樣我們就可以開始編程了。
#include
int main()
{
int i,j,k,n;//定義四個變量:i是行,j每行*號前的空格數,k每行的*號數
printf("please input odd n:");
scanf("%d",&n); //輸入奇數n
for (i=0;i
{
if(n>=2*i+1) //判斷k值
k=2*i+1;
else
k=2*n-2*i-1;
for(j=(n-k)/2;j>0;j--) //循環輸出空格
printf(" ");
for(;k>0;k--) //循環輸出*號
printf("*");
printf("n"); //輸出回車結束一行
}
本來呢題目就到止結束了,但上面的程序還不夠完美
比如說,別人輸入n值為偶數怎么辦?輸入非數值呢?
我們加一點東西進去:
#include
int main()
{
int i,j,k,n=0; //這里給n賦初值,即使輸入非數值,n也可有確切的值。
do{ //增加一個大循環,可以令n可以輸入多次以觀察不同的結果。
printf("please input odd n, 0 to exit:");//當輸入0的時候,退出大循環,結束程序。
scanf("%d",&n);
if (!(n%2)) //增加對輸入偶數的判斷。
{
printf("you input a even, please input again.n");
continue;
}
for (i=0;i
{
if(n>=2*i+1)
k=2*i+1;
else
k=2*n-2*i-1;
j=(n-k)/2;
for(;j>0;j--)
printf(" ");
for(;k>0;k--)
printf("*");
printf("n");
}
}while(n);
return 0;
}
拓展:如何學習c語言最好?
。ㄒ唬┤绾螌W習c語言最好
用PIC單片機開發電子產品和用C語言編程,最主要的是要堅持學習,不能中斷。應通過各種實例程序來學習C語言的語法規則。要熟練掌握C語言的數據類型表達方法、各種運算符、各種語句結構。
最好能背誦。要學會用C函數實現所需功能的方法。實際上,每個C函數都相當于一個功能模塊,一個C函數便可實現一種功能。
此外,用C語言開發PIC單片機應用產品,必須具有PIC單片機匯編語言知識。如果你已經掌握了用匯編語言編寫PIC單片機源程序的方法,最好將編寫成功的PIC單片機匯編語言源程序,逐個用C語言源文件代換,從中體會C語言的優越性。
(二)c語言學習技巧
1、首先準備一臺PC,學編程一般對PC沒有太大的要求,一般主流的配置就好。
2、有了電腦之后,就得考慮安裝什么操作系統了,主流使用的操作系統是windows,不過在這里不建議學習C編程使用windows,建議使用Linux。所以學習者最好安裝雙系統,或者徹底習慣Linux系統。
3、不管學習哪門編程語言,我都建議學習者必須有一本關于此語言的全面知識的書籍,大學里一般采用的是譚浩強老師的《C語言程序設計》,建議學習者可以去仔細研讀。
4、在平時學習看書的時候,一定有學會做筆記的習慣,而且不僅要記錄,還要經?醋约核龅墓P記,這樣才會有較好的學習效率。
5、多逛技術論壇或者技術問答社區,想別人分享自己的代碼,有要積極去閱讀別人的代碼,互相取長補短。
6、在C語言基礎學習得差不多之后,可以深入學習數據結構,以及自己嘗試做一些簡單的項目,比如學生學籍管理系統、圖書管理系統,銀行管理系統等。
【C語言如何輸出菱形】相關文章:
C語言數據輸出及輕量進階10-13
關于c語言約瑟夫問題輸出序號算法10-16
如何學習c語言最好?06-29
如何理解C語言指針05-19
如何搭建C語言環境10-27
如何學習C語言編程10-28
Linux下如何學習C語言10-05
如何實現C語言畫圖教程08-08
如何快速掌握C語言函數08-23
C語言如何提高程序效率04-10