- 試題排行
- 最新熱點(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ù)測(cè)試題及答案
2008年上半年軟件水平考試程序員考試試題(下
2008下半年軟件水平考試軟件設(shè)計(jì)師押題試卷
08年上半年軟考數(shù)據(jù)庫(kù)系統(tǒng)工程師考試試題(上
2008下半年軟件水平考試程序員模擬試題及答
很快的就到了第三天了,接下來(lái)的學(xué)習(xí)任務(wù)應(yīng)該越來(lái)越重了。至于今天講了些什么,現(xiàn)在想起來(lái)也覺(jué)得沒(méi)有什么似的,可能因?yàn)槲抑耙呀?jīng)把這今天所講的內(nèi)容搞懂搞透的原因吧。不過(guò)也得把今天的寫下來(lái),也沒(méi)有什么特別原因的,想有個(gè)回憶吧。
今天所講的都是圍繞著數(shù)組,我們?cè)贑語(yǔ)言里定義數(shù)組和其它高級(jí)語(yǔ)言定義的不同,這里示出C語(yǔ)言和其它語(yǔ)言的。
C語(yǔ)言 Foxbase
int a[10][10]; dim a(10,10)
是不是符號(hào)也不同了,我們以前用慣的都是小括號(hào),但是現(xiàn)在突然來(lái)的是中括號(hào)真的是有些不習(xí)慣呢。但是誰(shuí)叫我們是學(xué)C語(yǔ)言呢,不習(xí)慣都要得習(xí)慣了。還記得以前定數(shù)組根本就是不用理會(huì)它的地址,只知道用就行了,就算用錯(cuò)了也會(huì)編譯出錯(cuò)。可是C語(yǔ)言可不是呢,一但你定義了一個(gè)數(shù)組之后,你就得好好的管住它,因?yàn)閿?shù)組出了邊界是絕對(duì)不會(huì)通知你的。數(shù)組的定義和調(diào)用方法也是很多,真是靈活多變,這里不再重復(fù)書上里的東西了,F(xiàn)在就定義一個(gè)數(shù)組來(lái)看看:
int a[10];
如這個(gè)表所示,數(shù)組定義之后有相對(duì)地址,而且數(shù)組名a就是存放這些地址的首地址。現(xiàn)在我們定義多一個(gè)整型指針變量 int *p; ,讓他指向數(shù)組a,p=a; 我們?cè)囍屩羔樳\(yùn)算遞增一個(gè)p++; 我們看到的結(jié)果是p指向了新的地址2003,原來(lái)的地址是2001,為什么遞增一個(gè)就移向了2003呢?不是2002才是正確的嗎?其實(shí)這里就說(shuō)明了我們定義指針變量為什么要整型呢,是因?yàn)樗械闹羔樳\(yùn)算也是看自己本身是什么類型的指針作出什么的運(yùn)算,就是現(xiàn)在是整型類型,整型數(shù)據(jù)存儲(chǔ)是需要2字節(jié)的,所以針指運(yùn)算也是按這個(gè)方式來(lái)到進(jìn)行,結(jié)果很顯然就是往下移2了。其實(shí)這里說(shuō)這么多,老潭那本書里基本上都有詳細(xì)說(shuō)明介紹,所以我一開(kāi)始說(shuō)只要自己有看過(guò)書的,應(yīng)該也很容易明白了(反而上面可能給我說(shuō)模糊了)。
好了,接下來(lái)我們做一些題目吧,這是今天老師給我們出的題,其實(shí)也是2001年程序員下午考試?yán)锍霈F(xiàn)過(guò)的題目。所以請(qǐng)大家自己也動(dòng)手做做,多思考,看看誰(shuí)的方法比較好。 在n行n列矩陣中,每行都有最大數(shù),本程序求這幾個(gè)最大數(shù)中的最小一個(gè)。
#include <stdio.h>
#define N 100
int a[N][N];
void main()
{
int row,col,max,min,n;
/*輸入合法的n和n*n個(gè)整數(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);
}
這題可真有些難度,它的難就難在第二個(gè)空那里,相信第一個(gè)空絕大部分都會(huì)做,可是第二個(gè)空呢,真的下不筆了。當(dāng)時(shí)看程序的最后繼續(xù)兩個(gè)空后面的語(yǔ)句為什么一樣的呢,可真的沒(méi)有想通,只是要死鉆牛解尖,老是想著一定是用數(shù)組的,第一個(gè)循環(huán)里是行,跟著就是列了?墒沁是想不到答案,因?yàn)槲业乃悸芬呀?jīng)大錯(cuò)特錯(cuò)了。最后老師還是說(shuō)出答案,也說(shuō)這題真的是比較難。第二空其實(shí)是填row= =0,為什么這樣填呢,是因?yàn)檫@個(gè)矩陣?yán)镆婚_(kāi)始要有一個(gè)BASE數(shù)做底,所以row= =0只出現(xiàn)一次,很自然的就成了第一個(gè)比較的基數(shù),跟著這個(gè)if語(yǔ)句里的就是比較這幾個(gè)最大數(shù)中的最小一個(gè)數(shù)了,第二個(gè)空填了出來(lái)當(dāng)然答案也就隨之可以出來(lái)了max<min?磥(lái)我現(xiàn)在功力去考中程還是白費(fèi)心機(jī)吧,因?yàn)檫@只是第一大題啊,有很多難的題都在后幾題。那么既然現(xiàn)在知道自己的弱點(diǎn)就應(yīng)該去好好克服改正它,好了,這只是第一道練習(xí)題,跟著下面還有將略了的那部份編出來(lái)。
我所寫的如下,因?yàn)榭紤]到整數(shù)類型界限的問(wèn)題,我所編的所著重這里。
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的對(duì)角線和
這題因?yàn)槿勺约簩,所以各種寫法都有。在下面先寫我的最基礎(chǔ)簡(jiǎn)單的方法吧。
#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);
}
這是最基本的方法了,兩個(gè)循環(huán)跟著判斷是否偶數(shù)來(lái)減去中間重復(fù)出現(xiàn)的一個(gè)數(shù),這樣就求得結(jié)果了
下面我寫一個(gè)我同學(xué)編的還比較簡(jiǎn)單,而且方法獨(dú)到的(反正所有人都沒(méi)有想過(guò)這種方法,除了他)。這里主要寫一寫他的方法。
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];
夠簡(jiǎn)單吧,一次循環(huán)就可以了,他的思路是這樣的,比方有一個(gè)如下的矩陣
每次都兩個(gè)兩個(gè)剛好相對(duì)立,所以可以一次就掃描完了。
好了,我寫的有些累了,因?yàn)榻裉鞗](méi)有什么精神,最后老師還補(bǔ)充了另一個(gè)更簡(jiǎn)單的,方法其實(shí)就是一種只是運(yùn)用了條件運(yùn)算符
sum+=a[j][j]+( (j == (n-1-j) ? 0: a[j][n-1-j];
C語(yǔ)言真的想有多簡(jiǎn)潔有多簡(jiǎn)潔。
轉(zhuǎn)帖于:軟件水平考試_考試吧
- 推薦給朋友
- 收藏此頁(yè)
·程序員考試補(bǔ)課筆記-第八天 (2004-12-27 13:29:00)
·程序員考試補(bǔ)課筆記-第七天 (2004-12-27 13:28:00)
·程序員考試補(bǔ)課筆記-第六天 (2004-12-27 13:27:00)
·程序員考試補(bǔ)課筆記-第四天 (2004-12-27 13:26:00)
·程序員考試補(bǔ)課筆記-第二天 (2004-12-26 13:20:00)
如果軟件水平考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請(qǐng)與我們聯(lián)系,我們將會(huì)及時(shí)處理。如轉(zhuǎn)載本軟件水平考試網(wǎng)內(nèi)容,請(qǐng)注明出處。