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

19.已知数据文件IN.dat中存有200个四位数,并已调用读函数rdata()把这些数存入数组a中,请编写函数evenvalue(),其功能是:如果四位数每位上的数字均是0、2、4、6或8,则统计出满足此条件的四位数的个数count,并把这些四位数按从大到小的顺序存入数组b中。最后main()函数调用写函数wdata(),把结果count以及数组b中符合条件的四位数输出到OUT.dat文件中。

  【答案】


  void evenvalue()


  { int bb[4];


  int i, j, k, flag;


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


  { bb[0] = a[i]/1000;


  bb[1] = a[i]%1000/100;


  bb[2] = a[i]%100/10;


  bb[3] = a[i]%10;


  for (j=0; j<4; j++)


  { if (bb[j]%2 == 0)


  { flag = 1;


  }


  else


  { flag = 0;


  break;


  }


  }


  if (flag == 1)


  { b[count] = a[i];


  count++;


  }


  }


  for (i=0; i

  for (j=i+1; j

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


  { k = b[i];


  b[i] = b[j];


  b[j] = k;


  }


  }


  20.函数RData()实现从文件IN.dat中读取一篇英文文章存入字符串数组StrResult中;请编写Strmove()函数,其功能是:以行为单位,依次把字符串中所有小写字母"o"左边的字符串内容移到该字符串的右边存放,然后把小写字母"o"删除,余下的字符串内容移到已处理字符串的左边存放,之后把已处理的字符串仍按行重新存入字符串数组StrResult中。最后main()函数调用函数WData(),把结果StrResult输出到文件OUT.dat中。原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。


  例如,原文:n any field.Yu can create an index


  you have the corlrectrecord.


  结果:n any field.Yu can create an index


  rd.yu have the crlrectrec


  【答案】


  void Strmove(void)


  { int i, j, k;


  char buf[80];


  for (i=0; i

  { j = strlen(StrResult[i])-1;


  while (StrResult[i][j]!='o' && j>=0)


  j--;


  if (j < 0)


  continue;


  StrResult[i][j] = 0;


  strcpy(buf, &StrResult[i][j+1]);


  k = j = 0;


  while (StrResult[i][j])


  { while (StrResult[i][j]!='o' && StrResult[i][j])


  j++;


  if (!StrResult[i][j])


  { strcat(buf, &StrResult[i][k]);


  break;


  }


  StrResult[i][j] = 0;


  strcat(buf, &StrResult[i][k]);


  j++;


  k = j;


  }


  strcpy(StrResult[i], buf);


  }


  }


  21.函数RData()实现从文件IN.dat中读取一篇英文文章并存入到字符串数组StrResult中,请编写函数StrRes(),其功能是:以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排。最后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组StrResult中,最后调用函数WData(),把结果StrResult输出到文件OUT.dat中。原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。


  例如,原文:You He Me


  I am a student.


  结果:Me He You


  student a am I


  【答案】


  char StrRes(void)


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


  for (i=0; i

  for (j=0; j<(int)strlen(StrResult[i]); j++)


  if (!isalpha(StrResult[i][j]) && StrResult[i][j]!=' ')


  StrResult[i][j] = ' ';


  for (l=0; l

  { char ch[80] = {0};


  char pp[80] = {0};


  strl = strlen(StrResult[l]);


  i = strl-1;


  k = 0;


  while(1)


  { while (isalpha(StrResult[l][i]) && i >= 0)


  { for (j=k; j>=0; j--)


  pp[j+1] = pp[j];


  pp[0] = StrResult[l][i];


  k++;


  i--;


  }


  strcat(ch, pp);


  strcpy(pp, "");


  k = 0;


  if (i < 0)


  break;


  while (!isalpha(StrResult[l][i]) && i >= 0)


  { for (j=k; j>=0; j--)


  pp[j+1] = pp[j];


  pp[0] = StrResult[l][i];


  k++;


  i--;


  }


  strcat(ch, pp);


  strcpy(pp, "");


  k = 0;


  if (i < 0)


  break;


  }


  strcpy(StrResult[l], ch);


  }


  }

就业数据资源平台