计算机三级证书编号65,计算机三级61-65

题目61:已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)四部分组成。其中:金额=单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按金额从小到大进行排列, 若金额相等, 则按产品代码从大到小进行排列. 最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT2.DAT中。

注意: 部分源程序存放在PROG1.C中。

请勿改动主函数main( )、读数据函数ReadDat()和输出数据函数WriteDat()的内容。

----------------------------------

void SortDat() /*标准答案*/

{int I,j;

PRO xy;

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

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

if(sell.je>sell[j].je)

{xy=sell; sell =sell[j]; sell[j]=xy;}

else if(sell.je==sell[j].je)

if(strcmp(sell.dm,sell[j].dm)<0)

{xy=sell;sell=sell[j];sell[j]=xy;}

}

PROG1.C

#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()

{

}

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.dm,str,4);

memcpy(sell.mc,str+4,10);

memcpy(ch,str+14,4);ch[4]=0;

sell.dj=atoi(ch);

memcpy(ch,str+18,5);ch[5]=0;

sell.sl=atoi(ch);

sell.je=(long)sell.dj*sell.sl;}

fclose(fp);}

void WriteDat(void)

{FILE *fp;

int i;

fp=fopen("OUT2.DAT","w");

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

fprintf(fp,"%s %s %4d %5d %101d\n", sell.dm,sell.mc,sell.dj,sell.sl,sell.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 1

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值