亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

C語(yǔ)言 百文網(wǎng)手機(jī)站

C語(yǔ)言如何輸出菱形

時(shí)間:2022-11-08 14:21:34 C語(yǔ)言 我要投稿

C語(yǔ)言如何輸出菱形

  適有同學(xué)問(wèn)起一些C語(yǔ)言題目,本想上網(wǎng)搜索了事,但網(wǎng)上的方法都是分為上下部分用兩個(gè)嵌套for循環(huán)輸出。我想有沒(méi)有合起來(lái)輸出的呢,這樣符合簡(jiǎn)潔又美觀的要求呢?答案是有的。下面是小編為大家搜索整理的C語(yǔ)言如何輸出菱形,希望大家能有所收獲!

  題目:輸出行列都相等的菱形,如5行5列:

  行列 12345

  1 *

  2 ***

  3 *****

  4 ***

  5 *

  分析:

  當(dāng)行數(shù)等于總行數(shù)的一半時(shí),'*'是遞增的,遞增為2。

  當(dāng)行數(shù)大于總行數(shù)的一半時(shí),'*'是遞減的,遞增為2。

  設(shè)有一個(gè)行列為n的菱形,

  我們用變量i作為行數(shù),以0開(kāi)始,i

  k作為n菱第i行要輸出的'*'個(gè)數(shù)。

  則i<=n的中值(用m表示,m=(n-1) i="">m時(shí),k遞減。

  因?yàn)閗相對(duì)于m行對(duì)稱(chēng),所以:

  當(dāng)i>m時(shí),i每增加i-m時(shí)的k值就和第m-i行的k值相等,即第i-m行和第m-(i-m)相對(duì)稱(chēng)。

  所以得出結(jié)果:

  當(dāng)i<=m時(shí),k=2i+1

  當(dāng)i>m時(shí),k=2(m-(i-m))+1,(m=(n-1)/2)。即k=2n-2i-1

  由于我們只需要輸出'*'左邊的空格即可,所以每行'*'左邊的空格的個(gè)數(shù)為:(n-每行的k)/2。

  每行循環(huán)輸出空格,再循環(huán)輸出每行的'*',再輸出回車(chē),結(jié)束一行。

  這樣我們就可以開(kāi)始編程了。

  #include

  int main()

  {

  int i,j,k,n;//定義四個(gè)變量:i是行,j每行*號(hào)前的空格數(shù),k每行的*號(hào)數(shù)

  printf("please input odd n:");

  scanf("%d",&n); //輸入奇數(shù)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--) //循環(huán)輸出空格

  printf(" ");

  for(;k>0;k--) //循環(huán)輸出*號(hào)

  printf("*");

  printf("n"); //輸出回車(chē)結(jié)束一行

  }

  本來(lái)呢題目就到止結(jié)束了,但上面的程序還不夠完美

  比如說(shuō),別人輸入n值為偶數(shù)怎么辦?輸入非數(shù)值呢?

  我們加一點(diǎn)東西進(jìn)去:

  #include

  int main()

  {

  int i,j,k,n=0; //這里給n賦初值,即使輸入非數(shù)值,n也可有確切的值。

  do{ //增加一個(gè)大循環(huán),可以令n可以輸入多次以觀察不同的`結(jié)果。

  printf("please input odd n, 0 to exit:");//當(dāng)輸入0的時(shí)候,退出大循環(huán),結(jié)束程序。

  scanf("%d",&n);

  if (!(n%2)) //增加對(duì)輸入偶數(shù)的判斷。

  {

  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;

  }

  拓展:如何學(xué)習(xí)c語(yǔ)言最好?

 。ㄒ唬┤绾螌W(xué)習(xí)c語(yǔ)言最好

  用PIC單片機(jī)開(kāi)發(fā)電子產(chǎn)品和用C語(yǔ)言編程,最主要的是要堅(jiān)持學(xué)習(xí),不能中斷。應(yīng)通過(guò)各種實(shí)例程序來(lái)學(xué)習(xí)C語(yǔ)言的語(yǔ)法規(guī)則。要熟練掌握C語(yǔ)言的數(shù)據(jù)類(lèi)型表達(dá)方法、各種運(yùn)算符、各種語(yǔ)句結(jié)構(gòu)。

  最好能背誦。要學(xué)會(huì)用C函數(shù)實(shí)現(xiàn)所需功能的方法。實(shí)際上,每個(gè)C函數(shù)都相當(dāng)于一個(gè)功能模塊,一個(gè)C函數(shù)便可實(shí)現(xiàn)一種功能。

  此外,用C語(yǔ)言開(kāi)發(fā)PIC單片機(jī)應(yīng)用產(chǎn)品,必須具有PIC單片機(jī)匯編語(yǔ)言知識(shí)。如果你已經(jīng)掌握了用匯編語(yǔ)言編寫(xiě)PIC單片機(jī)源程序的方法,最好將編寫(xiě)成功的PIC單片機(jī)匯編語(yǔ)言源程序,逐個(gè)用C語(yǔ)言源文件代換,從中體會(huì)C語(yǔ)言的優(yōu)越性。

 。ǘヽ語(yǔ)言學(xué)習(xí)技巧

  1、首先準(zhǔn)備一臺(tái)PC,學(xué)編程一般對(duì)PC沒(méi)有太大的要求,一般主流的配置就好。

  2、有了電腦之后,就得考慮安裝什么操作系統(tǒng)了,主流使用的操作系統(tǒng)是windows,不過(guò)在這里不建議學(xué)習(xí)C編程使用windows,建議使用Linux。所以學(xué)習(xí)者最好安裝雙系統(tǒng),或者徹底習(xí)慣Linux系統(tǒng)。

  3、不管學(xué)習(xí)哪門(mén)編程語(yǔ)言,我都建議學(xué)習(xí)者必須有一本關(guān)于此語(yǔ)言的全面知識(shí)的書(shū)籍,大學(xué)里一般采用的是譚浩強(qiáng)老師的《C語(yǔ)言程序設(shè)計(jì)》,建議學(xué)習(xí)者可以去仔細(xì)研讀。

  4、在平時(shí)學(xué)習(xí)看書(shū)的時(shí)候,一定有學(xué)會(huì)做筆記的習(xí)慣,而且不僅要記錄,還要經(jīng)?醋约核龅墓P記,這樣才會(huì)有較好的學(xué)習(xí)效率。

  5、多逛技術(shù)論壇或者技術(shù)問(wèn)答社區(qū),想別人分享自己的代碼,有要積極去閱讀別人的代碼,互相取長(zhǎng)補(bǔ)短。

  6、在C語(yǔ)言基礎(chǔ)學(xué)習(xí)得差不多之后,可以深入學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu),以及自己嘗試做一些簡(jiǎn)單的項(xiàng)目,比如學(xué)生學(xué)籍管理系統(tǒng)、圖書(shū)管理系統(tǒng),銀行管理系統(tǒng)等。

【C語(yǔ)言如何輸出菱形】相關(guān)文章:

C語(yǔ)言怎樣輸出菱形09-03

C語(yǔ)言輸出菱形的方法11-24

如何更好地用c語(yǔ)言如何輸出菱形11-08

C語(yǔ)言怎么輸出一個(gè)菱形04-26

C語(yǔ)言數(shù)據(jù)的輸入輸出復(fù)習(xí)10-29

C語(yǔ)言數(shù)據(jù)輸出及輕量進(jìn)階03-25

C語(yǔ)言字符串的輸入輸出10-04

C語(yǔ)言的字符串輸出puts()函數(shù)10-04

C語(yǔ)言字符數(shù)組的幾種輸出方式11-22