- 試題排行
- 最新熱點(diǎn)
- 最新推薦
2
3
4
5
6
7
8
9
10
2008年上半年軟考軟件設(shè)計(jì)師考試試題(上午)
2008年上半年軟考網(wǎng)絡(luò)工程師考試試題(下午)
2008年上半年軟考軟件設(shè)計(jì)師考試試題(下午)
2008年上半年軟件水平考試程序員考試試題(上
2008年下半年軟考網(wǎng)絡(luò)工程師預(yù)測試題及答案
2008年上半年軟件水平考試程序員考試試題(下
2008下半年軟件水平考試軟件設(shè)計(jì)師押題試卷
08年上半年軟考數(shù)據(jù)庫系統(tǒng)工程師考試試題(上
2008下半年軟件水平考試程序員模擬試題及答
真的不知道為什么,我所有WORD的日期都變了,可是是WORD的宏病毒吧。但是為什么感染上的呢?這下可真奇怪了,我沒有用過宏啊。算了,現(xiàn)在沒有時(shí)間去理會它了,我要抓緊時(shí)間寫完這篇補(bǔ)習(xí)日記。
今天的課程里終于到了重點(diǎn)了,就是算法,因?yàn)椴艅傞_始,先從容易的排序算法開始說,抄了一道題目讓我們做,如下:
已有一個(gè)已排序的數(shù)組,今輸入一個(gè)數(shù),要求按原來的排序規(guī)律將它插入數(shù)組中。
看到了這個(gè)題目我覺得自己比較有把握,很快的就寫了出來,可是誰知道我的程序有一個(gè)至命的地方,剛給老師看的時(shí)候還得意洋洋,可是看完指出我的錯(cuò)來時(shí)真的不好受,既然都錯(cuò)了,就把我所做的那個(gè)答案寫下來吧,也好讓大家比較比較。
#define n 8
main()
{
int a[n];
int i,j,t,s;
for(i=1;i<=7;i++)
a[i-1]=i*10;
for ( i=0;i < 7;i--)
if ( a[ i ] < a[ i+1 ] )
{ s=a[ i ] ; a[ i ] = a[ i+1] ; a[ i+1] = s; }
for(i=0;i<7;i++)
printf("%d,a[ i ]);
}
看上去真的對的,沒有錯(cuò)誤,可能如果不細(xì)心都走眼的了。老師就是有這種本領(lǐng)可以看出來,讓我慢慢道來我的錯(cuò)誤吧,其實(shí)就是錯(cuò)在那一個(gè)最后沒有賦值的元素,因?yàn)闆]有初始傳值,隨機(jī)生成的數(shù)可能很大,也可能很少,不過如果剛好小于插入的數(shù)話,那么就不再是正確的排序了。好了,說了我的錯(cuò)讓我們看一個(gè)正確的程序吧
#define N 8
main()
{
int a[N]={20,30,40,50,60,70,80};
int n,i;
for(i=N-1;i>=0;i--)
{
if(n<a[i]) a[i+1]=a[i];
else break;
}
a[i+1]=n;
}
這里就是一個(gè)比較好的排序算法了,在講這些排序的時(shí)候老師畫了一個(gè)圖,如第四天圖一這個(gè)圖可以方便的表示出當(dāng)時(shí)的排序情況,排起序來更清晰了。不過更重要的一點(diǎn)就是不排讓人只單獨(dú)看源程序那樣頭暈,根本不知道這是怎么一回事。因?yàn)槲乙彩,自己編這個(gè)程序的時(shí)候跟著看完,看得模模糊糊的,所以我推薦大家也學(xué)一學(xué)這種方法。
說到排序,我們又教我們一種新的排序方法,就是冒泡排序法了。記得以前我學(xué)QB里也學(xué)過,不過今天聽著老師說,自己動著手畫圖來看,真的變得清晰多了。說冒泡排序法其實(shí)也可以叫左下沉排序法,因?yàn)槭前闯绦虻膬蓚(gè)循環(huán)來決定,如果是按從底到頂當(dāng)然就是冒泡啦,相反從頂?shù)降拙褪窍鲁亮。顯下兩個(gè)程序:
int n=6,i,j;
for ( i=n-1; i > 0; i--)
for(j=0; j < i; j++)
if(a[j]>a[j+1] { 交換 };
以上的是冒泡法
int n=6,i,j;
for ( i=0; i < n; i++)
for(j=n-1; j > i; j--)
if(a[j]<a[j-1] { 交換 };
這就是下沉了。
我們今天基本上全都在練習(xí)這個(gè)排序了,快到放學(xué)了,可是老師還是把握好時(shí)間,真的一點(diǎn)都不浪費(fèi)啊,而且還拖了半個(gè)鐘頭堂。唉~!有時(shí)候我覺得他人好,好時(shí)候真的不好?墒窃趺凑f呢,他至終都是我們的老師。那么他拖了我們半個(gè)鐘就是為了說完C語言里條件語句,不過說真的還是學(xué)到了一些東西。
C語言里條件語句也有好幾種形式,用條件運(yùn)算符 ? : ,基本的if語句,還有就是switch語句,至于最靈活都是答件運(yùn)算符 ? : , 而且還是C語言里唯一的三目運(yùn)算符了。為什么這么靈活,因?yàn)樗膮?shù)是表達(dá)式,C語言最靈活也就是表達(dá)式了,那么它能不靈活嗎!這里給出一個(gè)源程序:
int a=5,b=10,c=8;
if(a>b)
if(a>c)printf("a";
else if(b>c)printf("b";
else printf("c";
這么一條源程序是否讓你看得不舒服呢,這就是C語言的另一個(gè)特點(diǎn)啊,你知道這條程序的答案嗎?不過其實(shí)也不難,程序也很短嘛,就讓我說出答案好了,答案不就是輸出b嘛,道理很簡單一看就出了,誰?誰?誰在這里搞亂,答案會是輸出b 嗎,笨!所以寫你功夫還不到家嘛,下面讓整理一下程序
int a=5,b=10,c=8;
if(a>b)
if(a>c)
printf("a";
else
if(b>c)printf("b";
else printf("c";
這樣看清楚了嗎?答案就是什么都沒有,因?yàn)橐婚_始第一個(gè)if語句就不成立了,那里有答案出呢!這里也看出一個(gè)情況,所以我們要陪養(yǎng)好代碼的格式,如果有良好的編碼風(fēng)格就有好的程序。還有我今日又明白了一樣,想看看下面的if語句:
if if
else else if
if else if
else else if
if
else
我原還以為這兩個(gè)是不同的呢,在QB里的印象是兩個(gè)不if語句呢?墒墙裉炀徒o我弄明白了,大家也應(yīng)該知道吧,可能就是我笨了。
在C語言里swtich也和別的高級語言不同,你們有發(fā)現(xiàn)嗎?現(xiàn)在看看第四天圖二吧在這個(gè)圖里清楚的說明了這個(gè)語句與其的不同之處,而且條件是用常量的,所以老師說給我們聽他自己也不怎么喜歡用這個(gè)swtich語句。如果用懂了這個(gè)條件運(yùn)算符? : 還真的挺方便的,這個(gè)也是可以無限嵌套的,這里不多說了,讓自己慢慢體會研究。
- 推薦給朋友
- 收藏此頁
·程序員考試補(bǔ)課筆記-第八天 (2004-12-27 13:29:00)
·程序員考試補(bǔ)課筆記-第七天 (2004-12-27 13:28:00)
·程序員考試補(bǔ)課筆記-第六天 (2004-12-27 13:27:00)
·程序員考試補(bǔ)課筆記-第三天 (2004-12-26 13:21:00)
·程序員考試補(bǔ)課筆記-第二天 (2004-12-26 13:20:00)
如果軟件水平考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請與我們聯(lián)系,我們將會及時(shí)處理。如轉(zhuǎn)載本軟件水平考試網(wǎng)內(nèi)容,請注明出處。