在线现看午夜福利片|女人16久久免费视频|鲁丝片一区鲁丝片二区鲁丝|一区二区三区欧美在线

  1. 
    
    <b id="glvx9"></b>
        1. <blockquote id="glvx9"><meter id="glvx9"></meter></blockquote>
            查看全部128種考試
            軟件水平考試
             考試動(dòng)態(tài) 報(bào)考指南 歷年真題 模擬試題 復(fù)習(xí)資料 心得技巧 專(zhuān)業(yè)英語(yǔ) 技術(shù)文章 軟考論壇 考試用書(shū)
             程序員 軟件設(shè)計(jì)師 網(wǎng)絡(luò)管理員 網(wǎng)絡(luò)工程師 系統(tǒng)分析師 數(shù)據(jù)庫(kù)系統(tǒng)工程師
            1
            2
            3
            4
            5
            6
            7
            8
            9
            10
            Exam8.com  
            【字體: 程序員考試補(bǔ)課筆記-第七天
            程序員考試補(bǔ)課筆記-第七天
            spks.exam8.com 來(lái)源:考試吧(Exam8.com) 更新:2004-12-27 13:28:00 軟件水平考試 考試論壇
            今天終于都講到C語(yǔ)言比較后的范圍了,"函數(shù)"說(shuō)是C語(yǔ)言的一切真的沒(méi)錯(cuò)(可能有吧,我不知道)。很多書(shū)上都說(shuō)著函數(shù)是C語(yǔ)言根本,就是說(shuō)函數(shù)是構(gòu)成C語(yǔ)言的?匆韵逻@個(gè)程序:

            main()

            {

              printf("Hello World");

            }

              main()就是C語(yǔ)言里最特殊的一個(gè)函數(shù),是構(gòu)成整個(gè)程序的關(guān)鍵。在C編譯器里首先就是要找出這個(gè)主函數(shù)才開(kāi)始執(zhí)行編譯,好了,說(shuō)了一些書(shū)上原來(lái)的東西,F(xiàn)在我們就來(lái)看看C語(yǔ)言里的函數(shù)究竟是怎么的,如果我們從基礎(chǔ)的說(shuō)起也沒(méi)有什么意思。那么我們就從函數(shù)的另一個(gè)特點(diǎn)說(shuō)起,"遞歸函數(shù)"相信很多人都知道這個(gè)吧,看過(guò)老潭的教程應(yīng)該都知道他經(jīng)典的第一個(gè)遞歸程序吧:

            int abc(int n)

            {

              int s;

              if(n >1) s= n*abc(n-1);

              else s=1;

              return (s);

            }

              從這個(gè)源程序很容易就看出有一個(gè)同自己名字的函數(shù)在里面,所以以后我們看到一個(gè)函數(shù)里面調(diào)用自己就是遞歸函數(shù)了。而且我們看一個(gè)遞歸函數(shù)就主要就是看它是否一個(gè)返回的條件,就好像一條又黑又深的山洞,我們前去探險(xiǎn)如果往到底就一定要回頭,就算是更深的也要返回啊!所以我們判定一個(gè)遞歸函數(shù)是否成立也常常是看它的返回條件。至于上面的那個(gè)源程序我也不想多說(shuō)了,應(yīng)該大家也看得明白。

            這里就看看另一個(gè)利用遞歸函數(shù)做的題目吧,就是諾漢塔(老潭的書(shū)上也是有的)。

            #include <stdio.h> 

            void move(char x,char y) 

            {

              printf("%c-->%c\n",x,y);

            void hanoi (int n,char one ,char two,char three) 

            {

              if(n==1) move (one ,three); 

              else 

              {

                hanoi (n-1,one,three,two); 

                move(one,three); 

                hanoi(n-1,two,one,three); 

              } 

            main() 

              int m; 

              printf("input the number of diskes:"); 

              scanf("%d",&m); 

              printf("the step to moving %3d diskes:\n",m); 

              hanoi(m,'A','B','C'); 

            /*運(yùn)行情況如下: 

            input the number of diskes:3 回車(chē) 

            the step to moving 3 diskes: 

            A-->C 

            A-->B 

            C-->B 

            A-->C 

            B-->A 

            B-->C 

            A-->C 

            書(shū)上說(shuō)hanoi(n-1,one,three,two);是把"one"上的n-1個(gè)往"two"上移,接著move(one,three);然后是hanoi(n-1,two,one,three)即把"two"上的n-1個(gè)往"three"上移;

            |h(2,1,3,2)|h(1,1,2,3)=>move(1,3) <-----1------ 

            |      | move(1,2) <-----2------ 

            |      |h(1,3,1,2)=>move(3,2) <-----3------ 

            |move(1,3) <-----4------ 

            h(3,1,2,3) | |h(1,2,3,1)=>move(2,1) <-----5------ 

            |       h(2,2,1,3)|move(2,3) <-----6------- 

            |       |h(1,1,2,3)=>move(1,3) <-----7------ 

            */

              注意以上是網(wǎng)上一個(gè)網(wǎng)友寫(xiě)的,并不是我寫(xiě)的。諾漢塔最不同的就是它多次調(diào)用自己,所以看起來(lái)也比較復(fù)雜一點(diǎn)。當(dāng)時(shí)我在看這條程序的時(shí)候也是看了老半天也看不懂,最好我在網(wǎng)上看到一位朋友說(shuō)他自己是真的拿了一些碟子自己試著移來(lái)看看,后來(lái)我也自己試著看,效果真的挺好(我當(dāng)然沒(méi)有笨那這么大的碟子啦,用我的光盤(pán)寫(xiě)上大、中、。蠹也辉L也試試看。加上看了上面這個(gè)圖我也比較清晰了,我要感謝那位網(wǎng)友才行,你們說(shuō)是嗎?這個(gè)程序一定要自己慢慢去理解它,祝大家早日理解它吧。遞歸函數(shù)部份我因?yàn)椴惶膊荒苷f(shuō)些什么了,現(xiàn)在來(lái)看看函數(shù)的另一個(gè)內(nèi)容吧,就是函數(shù)的參數(shù)調(diào)用。我這里先給出一個(gè)程序先吧: 

            int abc(int a,int b)

            {

              a=a=b; return( a+b );

            }

            main()

            {

              int xy[]={3,5};

              int s;

              s=abc(xy[0],xy[1]);

            }

              這里的將xy[0]和xy[1]分別傳入形參里,這里要說(shuō)的一點(diǎn)就是和其它高級(jí)語(yǔ)言不同的,C語(yǔ)言的函數(shù)調(diào)用都是單向傳遞的。限實(shí)參傳了給形參之后并不會(huì)返回到傳進(jìn)來(lái)的實(shí)參的,所以我們務(wù)必記住這點(diǎn)。又如下面一題: 

            int abc(int a[])

            {

              int i,j; 

              /* 排序 */

            }

            main()

            {

              int x[5]={3,5,1,2,4}

              abc(x);

            /* 輸出 */

            }

              這條源程序可為什么會(huì)改變實(shí)參的數(shù)值呢?老潭的書(shū)里說(shuō)的很明白,說(shuō)是因?yàn)檫@是地址傳遞,但是我們老師不太認(rèn)同這點(diǎn),他說(shuō)這個(gè)也應(yīng)該是值傳遞,只不過(guò)這個(gè)值是比較特殊的一個(gè)值,是地址,所以傳到形參時(shí)可以通過(guò)調(diào)用這個(gè)地址指向的元素而已。如果按老潭的這樣說(shuō)以下這條程序都叫地址傳遞啦?

            int abc(int *p)

            {

              *p=10;

            }

            main()

            {

              int a=20,*w;

              w=&a;

              abc(w); /*abc(&a)*/

              printf("%d",a);

            }

              指針P也只是一個(gè)值而已,這個(gè)值是地址。如果說(shuō)這是地址傳遞,那不是應(yīng)該w的地址傳給形參嗎?剩下來(lái)的大家自己想想吧。(這里也不能夠說(shuō)誰(shuí)對(duì)誰(shuí)錯(cuò))

              接下來(lái)說(shuō)說(shuō)變量的存儲(chǔ)類(lèi)別,其實(shí)這個(gè)知識(shí)點(diǎn)也挺容易理解的,不過(guò)可能給C語(yǔ)言太多的這樣的關(guān)系弄的糊涂了。C語(yǔ)言里有變量的類(lèi)型,變量的存儲(chǔ)類(lèi)別,變量的全局性還是局部性,是靜態(tài)的還是動(dòng)態(tài)的呢。一切都是C語(yǔ)言變量的東西,我們這回也該好好的結(jié)束了它。(我們大家一齊看書(shū)吧)

              很對(duì)不起大家,因?yàn)榻裉煳业难塾悬c(diǎn)問(wèn)題(可能看電腦看太久了)。所以不要再繼續(xù)和大家進(jìn)一步講講存儲(chǔ)類(lèi)別,這里有一條源程序大家看看吧,我不行了,我要好好休息一下才行了。

            int abc(int a)

            {

            int i,j;

            scanf("%d%d",&i,&j);

            if(i>j)

            {

            int k=1,i=2,j=3;

            pirntf("%d\n",i*3);

            printf("%d\n",j*10);

            }

            printf("%d",k);

            }

            轉(zhuǎn)帖于:軟件水平考試_考試吧
            文章搜索  
            看了本文的網(wǎng)友還看了:
            軟件水平考試權(quán)威輔導(dǎo)教材: 訂書(shū)電話:010-62168566  更多>>>
            網(wǎng)友評(píng)論
            昵 稱(chēng): *  評(píng) 分: 1分 2分 3分 4分 5分
            標(biāo)題:   匿名發(fā)表    (共有條評(píng)論)查看全部評(píng)論>>
            版權(quán)聲明 -------------------------------------------------------------------------------------
              如果軟件水平考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請(qǐng)與我們聯(lián)系,我們將會(huì)及時(shí)處理。如轉(zhuǎn)載本軟件水平考試網(wǎng)內(nèi)容,請(qǐng)注明出處。
            關(guān)于本站  網(wǎng)站聲明  廣告服務(wù)  聯(lián)系方式  付款方式  站內(nèi)導(dǎo)航  客服中心  友情鏈接  考試論壇  網(wǎng)站地圖
            Copyright © 2004-2008 考試吧軟件水平考試網(wǎng) All Rights Reserved    
            中國(guó)科學(xué)院研究生院權(quán)威支持(北京) 電 話:010-62168566 傳 真:010-62192699
            百度大聯(lián)盟黃金認(rèn)證  十佳網(wǎng)絡(luò)教育機(jī)構(gòu)  經(jīng)營(yíng)許可證號(hào):京ICP060677