2016年计算机网络三级上机试题
已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)四部分组成。其中:金额=单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品代码从小到大进行排列,若产品代码相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT6.DAT中。
注意: 部分源程序存放在PROG1.C中。
请勿改动主函数main( )、读数据函数ReadDat()和输出数据函数WriteDat()的内容。
----------------------------------
#include
#include
#include
#include
#include
#define MAX 100
typedef struct{
char dm[5]; /*产品代码*/
char mc[11]; /*产品名称*/
int dj; /*单价*/
int sl; /*数量*/
long je; /*金额*/
}PRO;
PRO sell[MAX];
void ReadDat();
void WriteDat();
void SortDat()
{int I,j;
PRO xy;
for(I=0;I<99;I++)
for(j=I+1;j<100;j++)
if(strcmp(sell[I].mc,sell[j].mc)>0)
{xy=sell[I]; sell [I]=sell[j]; sell[j]=xy;}
else if(strcmp(sell[I].mc,sell[j].mc)==0)
if(sell[I].je
{xy=sell[I]; sell[I]=sell[j]; sell[j]=xy;}
}
void main()
{ memset(sell,0,sizeof(sell));
ReadDat();
SortDat();
WriteDat(); }
void ReadDat()
{FILE *fp;
char str[80],ch[11];
int i;
fp=fopen("IN.DAT","r");
for(i=0;i<100;i++){
fgets(str,80,fp);
memcpy(sell[i].dm,str,4);
memcpy(sell[i].mc,str+4,10);
memcpy(ch,str+14,4);ch[4]=0;
sell[i].dj=atoi(ch);
memcpy(ch,str+18,5);ch[5]=0;
sell[i].sl=atoi(ch);
sell[i].je=(long)sell[i].dj*sell[i].sl;}
fclose(fp);}
void WriteDat(void)
{FILE *fp;
int i;
fp=fopen("OUT6.DAT","w");
for(i=0;i<100;i++){
fprintf(fp,"%s %s %4d %5d %101d\n", sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);}
fclose(fp);}
IN.DAT
1001软件世界 5 100
1002计算机用户 6 120
1003网上生活 27 1
1004网络互连 45 10
1005威宝3.5 5 1000
10063M3.5 3 150
1007办公自动化 90 100
1008JAVA 48 15
1009中文WORD97 68 10
1010EXCLE97 98 103
1011OFFICE97 108 18
1012ACCESS 64 78
1013二级BASIC 65 66
1014二级PASCAL 66 89
1015二级C 67 99
1016二级FOR 66 12
1017二级FOX 66 100
1018AUTO CAD 98 871
1019PhotoShop 68 64
1020一级 78 101
1021一级B类 98 1000
1022三级A类 78 765
1023三级B类 78 888
1024四级 88 666
1025INTERNET 58 1858
1001软件世界 5 101
1002计算机用户 6 120
1003网上生活 27 31
1004网络互连 45 1000
1005威宝3.5 5 5001
10063M3.5 3 300
1007办公自动化 90 871
1008JAVA 48 888
1009中文WORD97 68 999
1010EXCLE97 98 981
1011OFFICE97 108 18
1012ACCESS 64 78
1013二级BASIC 65 166
1014二级PASCAL 66 189
1015二级C 67 199
1016二级FOR 66 112
1017二级FOX 66 2000
1018AUTO CAD 98 71
1019PhotoShop 68 164
1020一级 78 110
1021一级B类 98 1100
1022三级A类 78 705
1023三级B类 78 888
1024四级 88 650
1025INTERNET 58 2858
1001软件世界 5 102
1002计算机用户 6 121
1003网上生活 27 11
1004网络互连 45 20
1005威宝3.5 5 1300
10063M3.5 3 250
1007办公自动化 90 130
1008JAVA 48 115
1009中文WORD97 68 20
1010EXCLE97 98 203
1011OFFICE97 108 818
1012ACCESS 64 178
1013二级BASIC 65 166
1014二级PASCAL 66 289
1015二级C 67 899
1016二级FOR 66 112
1017二级FOX 66 500
1018AUTO CAD 98 71
1019PhotoShop 68 4
1020一级 78 181
1021一级B类 98 1500
1022三级A类 78 65
1023三级B类 78 88
1024四级 88 66
1025INTERNET 58 858
1001软件世界 5 200
1002计算机用户 6 220
1003网上生活 27 21
1004网络互连 45 30
1005威宝3.5 5 1050
10063M3.5 3 150
1007办公自动化 90 100
1008JAVA 48 15
1009中文WORD97 68 10
1010EXCLE97 98 103
1011OFFICE97 108 18
1012ACCESS 64 78
1013二级BASIC 65 66
1014二级PASCAL 66 89
1015二级C 67 99
1016二级FOR 66 12
1017二级FOX 66 600
1018AUTO CAD 98 971
1019PhotoShop 68 164
1020一级 78 701
1021一级B类 98 8899
1022三级A类 78 115
1023三级B类 78 118
1024四级 88 116
1025INTERNET 58 58
OUT.DAT