国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

圖形編程:絕對(duì)值函數(shù)Abs()的妙用

2019-11-17 04:39:26
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
   在學(xué)習(xí)ANSI C, Pascal, java等編程語(yǔ)言時(shí),經(jīng)常會(huì)碰到一些具有”對(duì)稱”性質(zhì)的圖形,要求運(yùn)用所學(xué)的知識(shí)編出這些圖形的小程序.絕大多數(shù)人都會(huì)想到通過(guò)數(shù)學(xué)知識(shí),來(lái)找出圖形具有何種規(guī)律,進(jìn)而得出問(wèn)題的解.但是,往往找規(guī)律,
得頗費(fèi)一番工夫.在學(xué)習(xí)ANSI C時(shí),碰到如右所示的一道題,要求打印下面種形式的n * n的方陣:

  當(dāng)時(shí),同學(xué)們都對(duì)絞盡腦汁來(lái)尋找規(guī)律,最后得出了多種解決方案,但最好的一種是用了1個(gè)for語(yǔ)句的三層嵌套, 利用覆蓋的方法來(lái)解決. 事后,我在想,是否存在一種更簡(jiǎn)單的算法呢?忽然,我發(fā)現(xiàn)就此題而言,3正好是5 * 5方陣的軸對(duì)稱中心.若以它為原點(diǎn),作出一個(gè)xoy平面的垂直坐標(biāo),對(duì)各個(gè)整數(shù)點(diǎn)的坐標(biāo)分析,又發(fā)現(xiàn)它們的橫坐標(biāo)與豎坐標(biāo)各自的它們的橫坐標(biāo)與豎坐標(biāo)各自的絕對(duì)值相加,正好是2.何不用絕對(duì)值函數(shù)Abs()或者Fabs()來(lái)試試?所以我定義了二個(gè)整型的變量i和j,分別用來(lái)定位整數(shù)點(diǎn)的橫,豎坐標(biāo),初值均為–2,步長(zhǎng)為1,控制條件是2,用了2個(gè)for語(yǔ)句的嵌套。當(dāng)滿足abs(i)<=abs(j)時(shí),作如下循環(huán):PRintf(“%3d”,3-abs(i)); 否則,printf(“%3d”,3-abs(j))。沒(méi)想到在Windows98 Turbo C 環(huán)境下調(diào)試,通過(guò)!好,這又激發(fā)了我的思路,能不能給出這種方陣的一般算法呢?

  n * n的方陣 :

  1 1 1 1 1
  1 2 2 2 1
  1 2 3 2 1
  1 2 2 2 1
  1 1 1 1 1

  思來(lái)想去,首先必須滿足整數(shù)n為奇數(shù)這一條件,然后看循環(huán)控制條件是否滿足abs(i)<=abs(j),分別作不同的輸出.在Turbo C環(huán)境下調(diào)試, 琢磨了好一陣子,又通過(guò)了。現(xiàn)在給出這種方陣的一般算法如下:

  #include
  #include
  void func(int n) /* n must be an odd number and n must be greater than zero*/
  { int i,j,temp;
  temp=n/2+1;
  for(i=-n/2;i<=n/2;i++)
  {for(j=-n/2;j<=n/2;j++)
  if(abs(i)>=abs(j))
     printf("%3d",temp-abs(i));
   else
     printf("%3d",temp-abs(j));
     printf("/n");
  }
  }

  main()
  { int n;
  printf("/nInput an integer number n:");
  scanf("%d",&n);
  func(n);
  }

  所以,在以后的學(xué)習(xí)過(guò)程中,碰到類似的要求打印具有“對(duì)稱”性質(zhì)的圖案時(shí),我們可以試著利用Abs()來(lái)解答,它能豐富我們編程的思路,達(dá)到意想不到的效果。(CSDN)


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 电白县| 灵石县| 施秉县| 云和县| 宁陕县| 斗六市| 青龙| 金湖县| 平山县| 民乐县| 海晏县| 赣州市| 湟源县| 望谟县| 临汾市| 克东县| 安福县| 凤冈县| 都兰县| 镇平县| 阜南县| 常熟市| 土默特左旗| 贵阳市| 南江县| 东光县| 壤塘县| 孝义市| 滦南县| 青浦区| 勐海县| 承德县| 肥乡县| 绿春县| 河北省| 武隆县| 阿鲁科尔沁旗| 丹江口市| 佛山市| 岚皋县| 晋江市|