• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      以數(shù)學(xué)算法為基礎(chǔ)的C程序編程技巧

      2017-04-14 08:56:55安光勇
      電子測(cè)試 2017年7期
      關(guān)鍵詞:素?cái)?shù)數(shù)學(xué)方法程序設(shè)計(jì)

      安光勇

      (六盤水師范學(xué)院,貴州六盤水,553004)

      以數(shù)學(xué)算法為基礎(chǔ)的C程序編程技巧

      安光勇

      (六盤水師范學(xué)院,貴州六盤水,553004)

      當(dāng)前,C語言已經(jīng)在應(yīng)用軟件及系統(tǒng)軟件的程序設(shè)計(jì)中得到廣泛應(yīng)用,而數(shù)學(xué)乃為計(jì)算機(jī)之始祖,同時(shí)還是決定一個(gè)計(jì)算機(jī)程序質(zhì)量如何的關(guān)鍵。本文以一個(gè)常用程序?yàn)槔?,探討不同?shù)學(xué)算法對(duì)其所具有的影響,最后深入剖析數(shù)學(xué)算法在C程序設(shè)計(jì)中的應(yīng)用意義。

      數(shù)學(xué)算法;C程序;技巧;應(yīng)用

      1 C語言的特點(diǎn)分析

      C語言作為國際社會(huì)當(dāng)中廣為流行的一種計(jì)算機(jī)高級(jí)語言,不僅能夠用之編寫各種系統(tǒng)軟件,而且還能利用它編寫所需要的應(yīng)用軟件。當(dāng)前,在市場(chǎng)中已有許多能夠用于編程的高級(jí)語言,但其中部分語法比較繁雜,不方便記憶,同時(shí)應(yīng)用上也存在難度;而一些語法則比較簡(jiǎn)單,但卻有著比較差的可移植性。對(duì)于C語言而言,其有著諸多高級(jí)語言所不具備的獨(dú)特優(yōu)勢(shì)。

      (1)語言緊湊、間接,使用靈活且方便。C語言共有關(guān)鍵字32個(gè),控制語句的種類有9種,具有相對(duì)比較自由的程序書寫形式,還將那些不重要或者不必要的成分進(jìn)行了要鎖,使得整體程序比較靈活與緊湊。

      (2)擁有極為豐富的運(yùn)算符。C語言擁有著現(xiàn)代化語言架構(gòu)當(dāng)中的各種類型的數(shù)據(jù)結(jié)構(gòu),此外,還囊括有指針型數(shù)據(jù),對(duì)于各種比較復(fù)雜化的數(shù)據(jù)運(yùn)算,均可實(shí)現(xiàn)與完成,且具有更加多樣且靈活的結(jié)構(gòu)。

      (3)可移植性好。運(yùn)用C語言所編寫的程序,一般情況下無需進(jìn)行任何修改,便能夠應(yīng)用在各種型號(hào)的操作系統(tǒng)中或計(jì)算機(jī)當(dāng)中。

      (4)能夠直接操作硬件。自C語言誕生之日起,系統(tǒng)軟件便大部分運(yùn)用匯編語言來進(jìn)行編寫。因匯編語言程序?qū)τ?jì)算機(jī)硬件具有嚴(yán)重依賴性,具有比較差的移植性與可讀性;但一般性的高級(jí)語言又無法直接操作計(jì)算機(jī)硬件,因此人們便希望能夠有一種兼顧有高級(jí)語言特性與匯編語言的新語言。于是C語言便由此誕生,其不僅囊括有上述高級(jí)語言所持有的各種優(yōu)點(diǎn),還擁有與匯編語言較為相似的對(duì)硬件的操作功能。

      2 C程序與數(shù)學(xué)方法之間的關(guān)系

      數(shù)學(xué)可謂計(jì)算機(jī)字母,若無數(shù)學(xué)的基礎(chǔ)與依據(jù),那么便很難有計(jì)算機(jī)的現(xiàn)今發(fā)展,當(dāng)前比較常用的數(shù)學(xué)方法,就是同時(shí)運(yùn)用多種不同的數(shù)學(xué)知識(shí),以此來編寫、制定一種策略,乃是解決數(shù)學(xué)及與之相關(guān)的各種邏輯問題的重要工具。對(duì)于數(shù)學(xué)方法與數(shù)學(xué)思想而言,通常在對(duì)開展數(shù)學(xué)知識(shí)的學(xué)習(xí)與掌握中便可獲取,并且還需要對(duì)它們?cè)谡麄€(gè)知識(shí)形成當(dāng)中所起到的作用進(jìn)行深徹領(lǐng)會(huì),從而去認(rèn)識(shí)它們的操作方法、思維程序及本質(zhì)特征,逐漸實(shí)現(xiàn)或做到自覺靈活的將其用到所需解決的問題當(dāng)中,而歸納法便為其中之一。所謂歸納法,實(shí)際就是針對(duì)各種特殊問題,或者是個(gè)別情形,結(jié)合實(shí)際需要做做出的判斷,然后基于此些判斷,從中經(jīng)過歸納、總結(jié)與分析,最終得出內(nèi)在規(guī)律,得出全體或者一般的結(jié)論,也就是擴(kuò)大至一般事物判斷的一種具有推理性質(zhì)的方法,同時(shí)還是一種從特殊、復(fù)雜轉(zhuǎn)向一般、通俗的推理方法,與之形成鮮明對(duì)應(yīng)的便是,自一般到特殊的推理方法,即演繹法。正因運(yùn)用了此種數(shù)學(xué)方法,使編程者能夠運(yùn)用循環(huán)等程序控制方法,實(shí)現(xiàn)了程序效率的大幅提高,此外,還能使整個(gè)程序結(jié)構(gòu)變得更為美觀、簡(jiǎn)潔。

      3 數(shù)學(xué)方法在一個(gè)C程序設(shè)計(jì)當(dāng)中的實(shí)際應(yīng)用

      下面列出編程人員均比較熟悉的一個(gè)例子,分別運(yùn)用各種數(shù)學(xué)方法編程實(shí)現(xiàn),以此對(duì)各種數(shù)學(xué)方法所決定的相應(yīng)程序效率進(jìn)行比較。例如:求1+2+3+4+……+100。方法一:運(yùn)用最為直接的數(shù)學(xué)方法,也就是首先用1加2,然后用它們之和加上3,以此類推,最后依據(jù)對(duì)應(yīng)順序加上100,將用變量作為加數(shù),而變量則為和程序,便可得出:

      main()

      {int i,sum=0;

      For(i=1;i<=100;i++)

      Sum+=i;

      Printf(“%d”,sum);

      運(yùn)用此種直接相加的數(shù)學(xué)方法,使得for循環(huán)需要執(zhí)行將近100次,方能將本題結(jié)果算出,即5050,此種算法不僅會(huì)造成大量計(jì)算機(jī)內(nèi)存大大浪費(fèi),而且還會(huì)造成程序執(zhí)行時(shí)間的延長。方法:運(yùn)用歸納的數(shù)學(xué)方法。首先可以先將1加上100計(jì)算出來,然后再計(jì)算2+99,再后計(jì)算3+98,以此類推,各次計(jì)算結(jié)果均為101,當(dāng)從中得知此規(guī)律之后,便可進(jìn)行如下編程:

      main()

      {int i,sum=0;

      For(i=1,j=100;i<=100;j--)

      Sum+=i+j;

      Printf(“%d”,sum);

      從此編程便可得知,運(yùn)用此種歸納的數(shù)學(xué)自算法,能夠減少程序循環(huán)次數(shù),即減少50次,因此,方法二相比于方法一,在程序質(zhì)量方面更為突出。方法三:可以基于方法二適當(dāng)性給予改進(jìn),然后再對(duì)數(shù)學(xué)公式Ci(C+1)/2進(jìn)行靈活運(yùn)用,可得出如下程序:

      main()

      {int sum;

      Sum=(100*(1+100))/2;

      Printf(“%d”,sum);

      方法三相比于方法二,不僅使程序得到進(jìn)一步的簡(jiǎn)化,而且無一次循環(huán),僅運(yùn)用簡(jiǎn)單的乘法、除法、加法便可完成此運(yùn)算。

      4 數(shù)學(xué)算法對(duì)C語言程序設(shè)計(jì)的意義

      要想較好的將一個(gè)數(shù)學(xué)問題解決,通常有著各種方法,單盡管所用的數(shù)學(xué)方法不同,但均可運(yùn)用編程方法來實(shí)現(xiàn),且可能有著各種效率。因此,針對(duì)不同的編程,可運(yùn)用數(shù)學(xué)分析將其予以優(yōu)化,以此獲取更高的執(zhí)行效率。下面本文以判斷一個(gè)數(shù)是否為素?cái)?shù)為例加以分析。所謂素?cái)?shù)實(shí)際上就是不包含1與此數(shù)本身外,不能被其它任何整數(shù)整除的數(shù)。比如13便為一素?cái)?shù),且除了能夠被1與13整除之外,其它諸如2、3、4,……12等,均不能被整除。要對(duì)一個(gè)數(shù)n(n>=3)是否為素?cái)?shù)哦進(jìn)行判斷比較簡(jiǎn)單:把n當(dāng)作被除數(shù),然后將2至(n-1)當(dāng)中的各整數(shù)均依次當(dāng)作除數(shù),如若均無法被整除,那么n便為素?cái)?shù)。依據(jù)上述描述,可設(shè)定程序代碼為:

      Int n,i;

      Printf(“請(qǐng)輸入一個(gè)數(shù): ”);

      Scanf(“%d”,&n);

      For(i=2;i<=(n-1);i++)/*2到(n-1)的各整數(shù)輪流當(dāng)作除數(shù)*/

      {

      If(n%i==0)

      Break;

      }

      If(i<=(n-1))

      {

      Printf(“此數(shù)不為素?cái)?shù) ”);

      Printf(“計(jì)算次數(shù)為:%d ”,i-1)

      }

      else

      {

      Printf(“此數(shù)不為素?cái)?shù) ”);

      Printf(“計(jì)算次數(shù)為:%d ”,i-2)

      }

      針對(duì)上述做法而言,乃是結(jié)合素?cái)?shù)的定義最為普通、最容易得到的一個(gè)數(shù)學(xué)算法,如若此數(shù)數(shù)值非常大,則同樣會(huì)有比較長的程序運(yùn)行時(shí)間。因此,對(duì)此算法實(shí)施數(shù)學(xué)分析:n無需被2至(n-1)當(dāng)中的所有整數(shù)均整除,僅需被2到n/2間的整數(shù)整除便可,從而僅需被3到n/3間的整數(shù)除便可,以此類推,最終僅需被n到n 的整數(shù)除便可,因此,可縮小除數(shù)的范圍,即2-n 。根據(jù)上述分析,便可對(duì)程序代碼予以改進(jìn):

      Int n,i;

      Printf(“請(qǐng)輸入一個(gè)數(shù): ”);

      Scanf(“%d”,&n);

      K=sqrt(n);

      For(i=2;i<=k;i++)

      {

      If(n%i==0)

      Break;

      }

      If(i<=k)

      {

      Printf(“此數(shù)不為素?cái)?shù) ”);

      Printf(“計(jì)算次數(shù)為:%d ”,i-1)

      }

      else

      {

      Printf(“此數(shù)不為素?cái)?shù) ”);

      Printf(“計(jì)算次數(shù)為:%d ”,i-2)

      }

      由此可知,通過算法改進(jìn)之后,程序當(dāng)中的計(jì)算次數(shù)由此而得到大幅減少,在時(shí)間復(fù)雜度方面,也從之前的O(n)下降至O(logn)。諸如此種題型的多種算法,在整個(gè)程序設(shè)計(jì)當(dāng)中較為常見,要求我們?cè)趯?shí)際解決問題過程中,在對(duì)應(yīng)數(shù)學(xué)解決方案當(dāng)中,善于進(jìn)行選擇與比較,整個(gè)C程序設(shè)計(jì)變得更加高效、更為簡(jiǎn)潔。

      5 結(jié)語

      總而言之,上述內(nèi)容乃為筆者在日常工作當(dāng)中所總結(jié)的一些體會(huì)。如若能夠?qū)?shù)學(xué)方法充分而又靈活的運(yùn)用,便能夠使原本枯燥而又復(fù)雜的程序工作,變得更為有趣且簡(jiǎn)單。針對(duì)同一問題,運(yùn)用各種數(shù)學(xué)方法予以解決,最終所得到的乃是完全不同的程序質(zhì)量。針對(duì)現(xiàn)實(shí)的程序開發(fā)與生產(chǎn)應(yīng)用而言,便可大幅提升實(shí)際效率。

      [1]馬寶秋.模糊C均值聚類算法編程實(shí)現(xiàn)及應(yīng)用[J].石家莊職業(yè)技術(shù)學(xué)院學(xué)報(bào),2016,28(2):30-33.

      [2]謝剛.一種C程序的函數(shù)調(diào)用圖生成算法的設(shè)計(jì)與實(shí)現(xiàn)[J].貴州師范大學(xué)學(xué)報(bào)(自然版),2009,27(4):77-80.

      [3]薛申芳.數(shù)學(xué)建模中的MATLAB程序在C語言下的實(shí)現(xiàn)[J].邢臺(tái)學(xué)院學(xué)報(bào),2006,21(4):91-94.

      C programming skills based on mathematical algorithms

      An Gaungyong
      (Liupanshui Normal College,Liupanshui Guizhou,553004)

      At present, C language has been widely used in the design of application software and system software, and mathematics is the ancestor of the computer, and it is also the key to determine the quality of a computer program. In this paper, a common program is used as an example to discuss the influence of different mathematical algorithms on it. Finally, the application of mathematical algorithm in C programming is analyzed.

      Mathematical Algorithm; C program; Skill; Application

      猜你喜歡
      素?cái)?shù)數(shù)學(xué)方法程序設(shè)計(jì)
      孿生素?cái)?shù)
      兩個(gè)素?cái)?shù)平方、四個(gè)素?cái)?shù)立方和2的整數(shù)冪
      基于Visual Studio Code的C語言程序設(shè)計(jì)實(shí)踐教學(xué)探索
      數(shù)學(xué)方法在化學(xué)平衡學(xué)習(xí)中的重要應(yīng)用
      關(guān)于兩個(gè)素?cái)?shù)和一個(gè)素?cái)?shù)κ次冪的丟番圖不等式
      從細(xì)節(jié)入手,談PLC程序設(shè)計(jì)技巧
      電子制作(2019年9期)2019-05-30 09:42:04
      淺析數(shù)學(xué)方法在金融學(xué)中的應(yīng)用
      月牙肋岔管展開圖的數(shù)學(xué)方法解析
      高職高專院校C語言程序設(shè)計(jì)教學(xué)改革探索
      奇妙的素?cái)?shù)
      会昌县| 东安县| 水城县| 金沙县| 昌黎县| 石家庄市| 滕州市| 仙桃市| 宁明县| 桃园市| 贵德县| 武冈市| 明星| 且末县| 夏河县| 屏山县| 遂平县| 凌云县| 天祝| 武胜县| 密云县| 名山县| 濮阳市| 旬阳县| 牡丹江市| 柏乡县| 和政县| 故城县| 内丘县| 广西| 宁化县| 谷城县| 巩义市| 得荣县| 惠东县| 两当县| 江都市| 方正县| 繁昌县| 调兵山市| 龙口市|