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

  97.现有一个10个人的100行选票数据文件IN.dat,其数据存放的格式是每条记录的长度均为10位,第一位表示第1个人的选中情况,第二位表示第2个人的选中情况,以此类推;内容均为字符0或1,1表示此人被选中,0表示此人未被选中,若一张选票人数大于5个人时被认为无效的选票。给定函数Rdata()的功能是把选票数据读入到字符串数组string中。请编写函数CountRs(),其功能是:统计每个人的选票数并把得票数依次存入result[0]到result[9]中。把结果result输出到OUT.dat文件中。


  【答案】


  void CountRs(void)


  { int i, count, j;


  char *pf;


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


  result[i] = 0;


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


  { pf = string[i];


  count = 0;


  while (*pf)


  { if (*pf == '1')


  count++;


  pf++;


  }


  if (count <= 5)


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


  result[j] += string[i][j]-'0';


  }


  }


  98.已知数据文件IN.dat中存有200个四位数,并已调用读函数Rdata()把这些数存入数组a中,请编写函数spellNum(),其功能是:把千位数字和十位数字重新组成一个新的二位数ab(新二位数的十位数字是原四位数的千位数字,新二位数的个位数字是原四位数的十位数字),以及把个位数字和百位数字组成另一个新的二位数cd(新二位数的十位数字是原四位数的个位数字,新二位数的个位数字是原四位数的百位数字),如果ab>cd,ab必须是偶数且能被5整除,cd必须是奇数,同时两个新数的十位数字均不为0,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数count。最后main()函数调用写函数Wdata(),把结果count以及数组b中符合条件的四位数输出到OUT.dat文件中。


  【答案】


  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>cd && ab%2==0 && ab%5==0 && cd%2!=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;


  }


  }


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


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


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


  【答案】


  void encryptChar()


  { int i;


  char *pf;


  for (i=0; i

  { pf = string[i];


  while (*pf != 0)


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


  { pf++;


  continue;


  }


  *pf = *pf*11%256;


  pf++;


  }


  }


  }


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


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


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


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


  4 3 2 1 9 8 7 6 5


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


  8 7 6 5 9 1 2 3 4


  【答案】


  void condSort()


  { 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;


  }


  }


  }

就业数据资源平台