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

 52.在文件IN.dat中有200组数据,每组有3个数,每个数均是三位数。函数Rdata()读取这200组数据存放到结构数组aa中,请编写函数numSort(),其功能是:要求在200组数据中找出条件为每组中的第2个数大于第1个数加第3个数之和,其中满足条件的组数作为函数numSort()的返回值,同时把满足条件的数据存入结构数组bb中,再对bb中的数据按照每组数据的第2个数加第3个数之和的大小进行降序排列(第2个数加第3个数的和均不相等),排序后的结果仍重新存入结构数组bb中。最后调用函数Wdata(),把结果bb输出到文件OUT.dat中。

  【答案】


  int numSort()


  { int i, cnt = 0, j;


  data ch;


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


  if (aa[i].x2 > aa[i].x1+aa[i].x3)


  { bb[cnt] = aa[i];


  cnt++;


  }


  for (i=0; i

  for (j=i+1; j

  if (bb[i].x2+bb[i].x3 < bb[j].x2+bb[j].x3)


  { ch = bb[i];


  bb[i] = bb[j];


  bb[j] = ch;


  }


  return cnt;


  }


  53.已知数据文件IN.dat中存有200个四位数,并已调用读函数rData()把这些数存入数组a中,请编写函数CalVal(),其功能是:把一个四位数的千位数字上的值加上十位数字上的值恰好等于百位数字上的值加上个位数字上的值,并且原四位数是偶数,则统计出满足此条件的四位数的个数count,并把这些四位数按从小到大的顺序存入数组b中。最后调用写函数wData(),把结果count以及数组b中符合条件的四位数输出到OUT.dat文件中。


  【答案】


  void CalVal()


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


  for (i=0; i

  { thou = a[i]/1000;


  hun = a[i]%1000/100;


  ten = a[i]%100/10;


  data = a[i]%10;


  if ((thou+ten==hun+data) && a[i]%2!=1)


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


  }


  }


  54.已知在文件IN.dat中存有100个产品销售记录,每个产品销售记录由产品代码code(字符型4位)、产品名称name(字符型10位)、单价uprice(整型)、数量amount(整型)、金额sum(长整型)5部分组成。其中:金额=单价×数量。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编写函数SortDat(),其功能要求:按金额从小到大进行排列,若金额相同,则按产品代码从大到小进行排列,最终排列结果仍存入结构数组sell中。最后调用函数WriteDat(),把结果输出到OUT.dat文件中。


  注


  【答案】


  void SortDat()


  { int i, j;


  PRO temp;


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


  for (j=i+1; j<100; j++)


  if (sell[i].sum > sell[j].sum)


  { temp = sell[i];


  sell[i] = sell[j];


  sell[j] = temp;


  }


  else if (sell[i].sum == sell[j].sum)


  { if (strcmp(sell[i].code, sell[j].code) < 0)


  { temp = sell[i];


  sell[i] = sell[j];


  sell[j] = temp;


  }


  }


  }

就业数据资源平台