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

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


题目42 结构体运算题

跟南开12一样,只是将“从小到大”改成了“从大到小”

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

{

FILE *fp.

int i.

fp=fopen("OUT5.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语言上机题库(三十九)
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛