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

  1. 
    
    <b id="glvx9"></b>
        1. <blockquote id="glvx9"><meter id="glvx9"></meter></blockquote>
            查看全部128種考試
            軟件水平考試
             考試動態(tài) 報(bào)考指南 歷年真題 模擬試題 復(fù)習(xí)資料 心得技巧 專業(yè)英語 技術(shù)文章 軟考論壇 考試用書
             程序員 軟件設(shè)計(jì)師 網(wǎng)絡(luò)管理員 網(wǎng)絡(luò)工程師 系統(tǒng)分析師 數(shù)據(jù)庫系統(tǒng)工程師
            1
            2
            3
            4
            5
            6
            7
            8
            9
            10
            Exam8.com  
            【字體: 程序員考試補(bǔ)課筆記-第三天
            程序員考試補(bǔ)課筆記-第三天
            spks.exam8.com 來源:狂風(fēng)校園 更新:2004-12-26 13:21:00 軟件水平考試 考試論壇

                很快的就到了第三天了,接下來的學(xué)習(xí)任務(wù)應(yīng)該越來越重了。至于今天講了些什么,現(xiàn)在想起來也覺得沒有什么似的,可能因?yàn)槲抑耙呀?jīng)把這今天所講的內(nèi)容搞懂搞透的原因吧。不過也得把今天的寫下來,也沒有什么特別原因的,想有個回憶吧。

               今天所講的都是圍繞著數(shù)組,我們在C語言里定義數(shù)組和其它高級語言定義的不同,這里示出C語言和其它語言的。
              C語言      Foxbase
              int a[10][10]; dim a(10,10)

              是不是符號也不同了,我們以前用慣的都是小括號,但是現(xiàn)在突然來的是中括號真的是有些不習(xí)慣呢。但是誰叫我們是學(xué)C語言呢,不習(xí)慣都要得習(xí)慣了。還記得以前定數(shù)組根本就是不用理會它的地址,只知道用就行了,就算用錯了也會編譯出錯。可是C語言可不是呢,一但你定義了一個數(shù)組之后,你就得好好的管住它,因?yàn)閿?shù)組出了邊界是絕對不會通知你的。數(shù)組的定義和調(diào)用方法也是很多,真是靈活多變,這里不再重復(fù)書上里的東西了,F(xiàn)在就定義一個數(shù)組來看看:

            int a[10];
              如這個表所示,數(shù)組定義之后有相對地址,而且數(shù)組名a就是存放這些地址的首地址,F(xiàn)在我們定義多一個整型指針變量 int *p; ,讓他指向數(shù)組a,p=a; 我們試著讓指針運(yùn)算遞增一個p++; 我們看到的結(jié)果是p指向了新的地址2003,原來的地址是2001,為什么遞增一個就移向了2003呢?不是2002才是正確的嗎?其實(shí)這里就說明了我們定義指針變量為什么要整型呢,是因?yàn)樗械闹羔樳\(yùn)算也是看自己本身是什么類型的指針作出什么的運(yùn)算,就是現(xiàn)在是整型類型,整型數(shù)據(jù)存儲是需要2字節(jié)的,所以針指運(yùn)算也是按這個方式來到進(jìn)行,結(jié)果很顯然就是往下移2了。其實(shí)這里說這么多,老潭那本書里基本上都有詳細(xì)說明介紹,所以我一開始說只要自己有看過書的,應(yīng)該也很容易明白了(反而上面可能給我說模糊了)。

              好了,接下來我們做一些題目吧,這是今天老師給我們出的題,其實(shí)也是2001年程序員下午考試?yán)锍霈F(xiàn)過的題目。所以請大家自己也動手做做,多思考,看看誰的方法比較好。 在n行n列矩陣中,每行都有最大數(shù),本程序求這幾個最大數(shù)中的最小一個。
            #include <stdio.h>
            #define N 100
            int a[N][N];
            void main()
            {
              int row,col,max,min,n;
              /*輸入合法的n和n*n個整數(shù)的代碼, 注,這里略了一部份到后面練習(xí)自己做回*/
              for(row=0;row<n;row++)
              {
                for(max=a[row][0],col=1;col<n;col++)
                if (  ) max=a[row][col];
                if (  ) min=max;
                else if (  ) min=max;
              }
              printf("最大數(shù)中的最小數(shù)為:%d\n",min);
            }

              這題可真有些難度,它的難就難在第二個空那里,相信第一個空絕大部分都會做,可是第二個空呢,真的下不筆了。當(dāng)時(shí)看程序的最后繼續(xù)兩個空后面的語句為什么一樣的呢,可真的沒有想通,只是要死鉆牛解尖,老是想著一定是用數(shù)組的,第一個循環(huán)里是行,跟著就是列了?墒沁是想不到答案,因?yàn)槲业乃悸芬呀?jīng)大錯特錯了。最后老師還是說出答案,也說這題真的是比較難。第二空其實(shí)是填row= =0,為什么這樣填呢,是因?yàn)檫@個矩陣?yán)镆婚_始要有一個BASE數(shù)做底,所以row= =0只出現(xiàn)一次,很自然的就成了第一個比較的基數(shù),跟著這個if語句里的就是比較這幾個最大數(shù)中的最小一個數(shù)了,第二個空填了出來當(dāng)然答案也就隨之可以出來了max<min。看來我現(xiàn)在功力去考中程還是白費(fèi)心機(jī)吧,因?yàn)檫@只是第一大題啊,有很多難的題都在后幾題。那么既然現(xiàn)在知道自己的弱點(diǎn)就應(yīng)該去好好克服改正它,好了,這只是第一道練習(xí)題,跟著下面還有將略了的那部份編出來。

            我所寫的如下,因?yàn)榭紤]到整數(shù)類型界限的問題,我所編的所著重這里。

            printf("please input n:";
            scanf("%d",&n);
            for(row=0;row<n;row++)
             for(col=0;col<n;col++)
             {
              do
              {
               printf("please a[%d][%d]",row,col);
               scanf("%d",&a[row][col]);
              }while(a[row][col]<-32767 && a[row][col]>32767 );
             }

            接下的是第二題了,題目如下:
            求n*n的對角線和
            這題因?yàn)槿勺约簩,所以各種寫法都有。在下面先寫我的最基礎(chǔ)簡單的方法吧。

            #include <stdio.h>
            #define n 5
            main()
            {
              int a[n][n];
              int row, col;
              int sum=0;
              /* 輸入略 */
              for(row=col=0;row<n;row++,col++)
                sum+=a[row][col];
              for(row=0,col=n-1;row<n;row++,col--)
                sum+=a[row][col];
              if ( n%2 !=0)
                sum-= a[n/2][n/2];
              printf("%d",max);
            }
              這是最基本的方法了,兩個循環(huán)跟著判斷是否偶數(shù)來減去中間重復(fù)出現(xiàn)的一個數(shù),這樣就求得結(jié)果了
            下面我寫一個我同學(xué)編的還比較簡單,而且方法獨(dú)到的(反正所有人都沒有想過這種方法,除了他)。這里主要寫一寫他的方法。
            int sum=0,j;
            for ( j=0; j<n; j++ )
              sum+=a[j][j]+a[j][n-1-j];
            if ( n%2 !=0 )
            sum-=a[n/2][n/2];

            夠簡單吧,一次循環(huán)就可以了,他的思路是這樣的,比方有一個如下的矩陣


            每次都兩個兩個剛好相對立,所以可以一次就掃描完了。
            好了,我寫的有些累了,因?yàn)榻裉鞗]有什么精神,最后老師還補(bǔ)充了另一個更簡單的,方法其實(shí)就是一種只是運(yùn)用了條件運(yùn)算符
            sum+=a[j][j]+( (j == (n-1-j) ? 0: a[j][n-1-j];
            C語言真的想有多簡潔有多簡潔。


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