1、计算机三级数据库技术(上机操作)机试模拟试卷 54及答案与解析 一、程序设计题 1 已知在数据文件 in dat中存放有 100个产品销售记录,每个产品销售记录由产品代码 dm(字符型 4位 )、产品名称 mc(字符型 10位 )、单价 dj(整型 )、数量 sl(整型 )、金额 je(长整型 )五部分组成。其中:金额由公式金额 =单价 *数量计算得出。函数 ReadDat()读取这 100个销售记录并存人结构体数组 sell中。请编写函数SortDat()。其功能是:按产品名称从大到小进行排列,若产品名称相同,则按金额从大到小进行排列,最 终排列结果仍存入结构体数组 sell中。最后通过 m
2、ain()函数调用函数 WriteDat(),把结果输出到文件 out dat中。 【试题程序】 #include #include #include #define MAX 100 typedef struct char dm5; *产品代码 * char mc11; *产品名称 * int dj ; *单价 * int sl; *数量 * long je; *金额 * PR0; PRO sellMAX; void ReadDat(); void WriteDat(); void SortDat() void main() memset(sell, 0, sizeof(sell); Read
3、Dat(); SortDat(); WriteDat(); void ReadDat() FILE*fp; char str80, ch11; int i; fp=fopen(“in dat”, r); for(i=0;i100;i+) fgets(str, 80 fp); memcpy(selli dm, str, 4); memcpy(selli me, str+4,10); memcpy(eh, str+14, 4);ch4=0; selli dj=atoi(ch); memcpy(eh, str+18, 5);ch5=0; selli sl=atoi(eh); selli je=(10
4、ng)selli dj*selli sl! fclose(fp); void WriteDat() FILE*fp; int i; fp=fopen(“out dat”, “W”); for(i=0; i100;i+) fprintf(fp, “ s s 4d 5d 101c n” selli dm, selli me, selli dj, selli sl, selli je); fclose(fp); 计算机三级数据库技术(上机操作)机试模拟试卷 54答案与解析 一、程序设计题 1 【正确答案】 void SortDat() int i, j; *定义变量 * PRO temp; for(i一 0; iMAX-1 li+) *选择法排序 * for(ji+1; j,(MAX, j+) if(strcmp(sell-i- me, sell-j3 mc)(O l I strcmp(selli me, selllj mc)=0 selli je sellj je) *判断条件 * tempselli; selli=sellj sellj=temp;