主页 > 教育培训 > 电脑培训 > 正文

全国计算机等级考试:上机注意事项(3)

[作者:何木]
2011-03-17 11:30

       大家看到了,南开的结果是负数,连原来的变量nk都变成了负数,这显然错了。

  聪明一点,知道int比char大,定义了个int,对了。

  错误原因就是在TC2.0中char型变量只有一个字节,根本容纳不下'E'*11,

  所以产生了溢出,上次考这道题目没过的同学是不是有所启发呢?

  这里给出考试中心命题组的答案:

  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;

  }

  }

  似乎一个例子不能说明什么,那就把上面的数字题目的答案给大家看看:

  考试中心命题组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的定义,不是我们习惯的int,而是能容纳更大数的 long ,

  这样在求和的时候就不会溢出,无忧和南开的答案没有吧

  再看,算aver平均值的细节,不是我们平常习惯的aver/=N,更不是无忧的1.0* sum/N,

  而是aver/=(double)N,所以大家在考试的时候要时刻注意你的变量类型,特别是在一些求平均值的题目中,千万要注意,用sum/n的时候,sum的类型一定不要用整形。

猜你喜欢

编辑推荐

相关内容

推荐阅读

X