主頁 > 教育培訓(xùn) > 電腦培訓(xùn) > 全國(guó)計(jì)算機(jī)等級(jí)考試:上機(jī)注意事項(xiàng)(3)

全國(guó)計(jì)算機(jī)等級(jí)考試:上機(jī)注意事項(xiàng)(3)

       大家看到了,南開的結(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的類型一定不要用整形。

免責(zé)聲明:該文觀點(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í),本站將立刻刪除。返回查查吧首頁,查看更多>>
提示

該文觀點(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í),本站將立刻刪除。