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

 76.函数RData()实现从文件IN.dat中读取20行数据存放到字符串数组str中(每行字符串长度均小于80)。请编写函数stringSort(),其功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组str中。最后调用函数WData(),把结果str输出到OUT.dat文件中。

  条件:从字符串中间一分为二,左边部分按字符的ASCII值降序排序,排序后左边部分与右边部分进行交换。如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上。


  例如,位置 0 1 2 3 4 5 6 7 8


  原字符串 a b c d h g f e


  1 2 3 4 9 8 7 6 5


  处理后字符串 h g f e d c b a


  位置 8 7 6 5 9 4 3 2 1


  【答案】


  void stringSort()


  { int i, j, k, strl, half;


  char ch;


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


  { strl = strlen(str[i]);


  half = strl/2;


  for (j=0; j

  for (k=j+1; k

  if (str[i][j] < str[i][k])


  { ch = str[i][j];


  str[i][j] = str[i][k];


  str[i][k] = ch;


  }


  for (j=half-1, k=strl-1; j>=0; j--, k--)


  { ch = str[i][j];


  str[i][j] = str[i][k];


  str[i][k] = ch;


  }


  }


  }


  77.函数RData()的功能是实现从文件IN.dat中读取一篇英文文章存入到字符串数组original中。请编写函数CharAdd(),其功能是:以行为单位把字符串中的第1个字符的ASCII值加第2个字符的ASCII值,得到第1个新字符,第2个字符的ASCII值加第3个字符的ASCII值,得到第2个新字符,以此类推,一直处理到倒数第2个字符,最后1个字符的ASCII值加原第1个字符的ASCII值,得到最后1个新的字符。得到的新字符分别存放在原字符串对应的位置上,最后把已处理的字符串逆转后按行重新存入字符串数组original中。最后调用函数WData(),把结果original输出到OUT.dat文件中。


  原始数据文件存放的格式是:每行的宽度均小于 80个字符(含标点符号和空格)。


  【答案】


  void CharAdd(void)


  { int i, j, k, str;


  char ch;


  for (i=0; i

  { str = strlen(original[i]);


  ch = original[i][0];


  for (j=0; j

  original[i][j] += original[i][j+1];


  original[i][str-1] += ch;


  for (j=0, k=str-1; j

  { ch = original[i][j];


  original[i][j] = original[i][k];


  original[i][k] = ch;


  }


  }


  }


  78.编写函数FibValue(),其功能是:求Fibonacci数列中大于t的最小的一个数,结果由函数返回。其中Fibonacci数列F(n)的定义为:


  F(0)=0,F(1)=1


  F(n)=F(n-1)+F(n-2)


  最后调用函数WData()从IN.dat中读取50个数据t,分别得出结果,且把结果输出到OUT.dat文件中。


  例如,当t=1000时,函数值为1597。


  【答案】


  int FibValue(int t)


  { int f1 = 0, f2 = 1, fn;


  fn = f1+f2;


  while (fn <= t)


  { f1 = f2;


  f2 = fn;


  fn = f1+f2;


  }


  return fn;


  }

就业数据资源平台