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

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


题目61(无忧id 19结构体运算题)

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

{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("OUT2.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语言上机题库(五十六)
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛