就业数据资源平台
当前位置:首页 > 数据库技术
2011年计算机等级三级数据库上机题及答案(17)

  49.函数Rdata()实现从文件IN.dat中读取一篇英文文章,存入到字符串数组string中。请编写encryptChar()函数,其功能是:按给定的替代关系对数组string中的所有字符进行替代后,仍存入数组string的对应位置上。最后调用函数Wdata(),把结果string输出到OUT.dat文件中。


  替代关系:f(p)=p*11 mod 256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)值小于等于32或f(p)对应的字符是大写字母,则该字符不变,否则将f(p)所对应的字符进行替代。


  原始数据文件存放的格式是:每行的宽度均小于80个字符。


  【答案】


  void encryptChar()


  { int i;


  char *pf;


  for (i=0; i

  { pf = string[i];


  while (*pf != 0)


  { if ((*pf*11%256>='A' && *pf*11%256<='Z') || *pf*11%256<=32)


  { pf++;


  continue;


  }


  *pf = *pf*11%256;


  pf++;


  }


  }


  }


  50.已知数据文件IN.dat中存有300个四位数,并已调用读函数Rdata()把这些数存入数组a中,请编写函数diffNum(),其功能是:求出千位数上的数减百位数上的数减十位数上的数减个位数上的数大于0的个数count,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序。最后调用写函数Wdata(),把结果输出到OUT.dat文件中。


  例如,9123,9-1-2-3>0,则该数满足条件存入数组b中,满足条件count加1。9812,9-8-1-2<0,则该数不满足条件,count不变。


  【答案】


  void diffNum()


  { int i, thou, hun, ten, data, j;


  for (i=0; i<300; i++)


  { thou = a[i]/1000;


  hun = a[i]%1000/100;


  ten = a[i]%100/10;


  data = a[i]%10;


  if (thou-hun-ten-data > 0)


  { b[count] = a[i];


  count++;


  }


  }


  for (i=0; i

  for (j=i+1; j

  if (b[i] > b[j])


  { data = b[i];


  b[i] = b[j];


  b[j] = data;


  }


  }


  51.已知数据文件IN.dat中存有200个四位数,并已调用读函数Rdata()把这些数存入数组a中,请编写函数spellNum(),其功能是:把千位数字和十位数字重新组成一个新的二位数ab(新二位数的十位数字是原四位数的千位数字,新二位数的个位数字是原四位数的十位数字),以及把个位数字和百位数字组成另一个新的二位数cd(新二位数的十位数字是原四位数的个位数字,新二位数的个位数字是原四位数的百位数字),如果ab

  【答案】


  void spellNum()


  { int i, thou, hun, ten, data, j;


  int ab, cd;


  for (i=0; i<200; i++)


  { thou = a[i]/1000;


  hun = a[i]%1000/100;


  ten = a[i]%100/10;


  data = a[i]%10;


  if (thou==0 || data==0)


  continue;


  ab = 10*thou+ten;


  cd = 10*data+hun;


  if (ab

  { b[count] = a[i];


  count++;


  }


  }


  for (i=0; i

  for (j=i+1; j

  if (b[i] < b[j])


  { data = b[i];


  b[i] = b[j];


  b[j] = data;


  }


  }

就业数据资源平台