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

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


☆题目47(无忧id 76结构体运算题 )

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

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

{

FILE *fp.

int i.

fp=fopen("OUT3.DAT","w").

for(i=0.i<100.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语言上机题库(四十六)
2006年9月全国等级考试三级c语言上机题库(四十五)
2006年9月全国等级考试三级c语言上机题库(四十四)
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛