2006年9月全国等级考试三级c语言上机题库(三十一)

文章作者 100test 发表时间 2007:03:10 19:18:44
来源 100Test.Com百考试题网


★题目31(无忧id 17 结构体运算题)

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

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("OUT4.DAT","w").

for(i=0.i

printf("%s %s M ] ]\n", sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je).

fprintf(fp,"%s %s M ] ]\n", sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je).

}

fclose(fp).

}



相关文章


2006年9月全国等级考试三级c语言上机题库(三十三)
2006年9月全国等级考试三级c语言上机题库(三十四)
2006年9月全国等级考试三级c语言上机题库(三十二)
2006年9月全国等级考试三级c语言上机题库(三十)
2006年9月全国等级考试三级c语言上机题库(三十一)
2006年9月全国等级考试三级c语言上机题库(二十九)
2006年9月全国等级考试三级c语言上机题库(二十八)
全国计算机等级考试四级网友推荐通关攻略
计算机等级考试四级考试的体会和感受
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛