大家看到了,南開的結(jié)果是負(fù)數(shù),連原來的變量nk都變成了負(fù)數(shù),這顯然錯(cuò)了。
聰明一點(diǎn),知道int比char大,定義了個(gè)int,對(duì)了。
錯(cuò)誤原因就是在TC2.0中char型變量只有一個(gè)字節(jié),根本容納不下'E'*11,
所以產(chǎn)生了溢出,上次考這道題目沒過的同學(xué)是不是有所啟發(fā)呢?
這里給出考試中心命題組的答案:
void encryptChar(){
int i,k,ch;
for(i=0;i for(k=0;k ch=xx[i][k];
ch=(ch*11)%6;
if(!(ch<=32||ch>=130))xx[i][k]=ch;
}
}
似乎一個(gè)例子不能說明什么,那就把上面的數(shù)字題目的答案給大家看看:
考試中心命題組23題答案:
int i;
long val;
float dec;
for(i=0;i val=(long)xx[i];
aver+=xx[i]-val;
}
aver/=(double)N;
for(i=0;i val=(long)xx[i];
dec=xx[i]-val;
if(dec>aver){
sumint+=val;
sumdec+=(xx[i]-val);
}
}
看到了吧,首先,val的定義,不是我們習(xí)慣的int,而是能容納更大數(shù)的 long ,
這樣在求和的時(shí)候就不會(huì)溢出,無憂和南開的答案沒有吧
再看,算aver平均值的細(xì)節(jié),不是我們平常習(xí)慣的aver/=N,更不是無憂的1.0* sum/N,
而是aver/=(double)N,所以大家在考試的時(shí)候要時(shí)刻注意你的變量類型,特別是在一些求平均值的題目中,千萬要注意,用sum/n的時(shí)候,sum的類型一定不要用整形。
2021-07-09
2021-07-08
2021-07-08
通知書家長(zhǎng)意見大全 家長(zhǎng)評(píng)語怎么寫
2021-07-08
2021-07-08
2021-07-08
2021-07-07
2021-07-07
2021-07-07
2021-07-07
2021-07-07
2021-07-06
2021-07-06
2021-07-06
工作態(tài)度怎么寫 具有穩(wěn)定的工作心態(tài)
2021-07-06
該文觀點(diǎn)僅代表作者本人,查查吧平臺(tái)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)空間服務(wù),不承擔(dān)相關(guān)法律責(zé)任。圖片涉及侵權(quán)行為,請(qǐng)發(fā)送郵件至85868317@qq.com舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。