C语言 编程 结构体数组

来源:百度知道 编辑:UC知道 时间:2024/05/28 19:40:32
已知有十个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整形),数量sl(整形),金额je(长整形)四部分组成。其中金额等于=单价*数量计算得出。要求 按产品代码从大到小进行排列,若产品代码相同,则按金额从大到小进行排列,最终排列结果仍存入结构体数组SELL中。输出排序之前和排序后的纪录。

调试通过
#include<stdio.h>
#include<string.h>
main()
{
int i,j;
struct pro{
char dm[4];
char mc[10];
int dj;
int sl;
long je;

}sell[10],t;
printf("请依次输入十个产品销售记录,各项用回车隔开");
for(i=0;i<10;i++)
{scanf("%s\n%s\n%d\n%d",sell[i].dm,sell[i].mc,&sell[i].dj,&sell[i].sl);
sell[i].je=sell[i].dj*sell[i].sl;
}
printf("排列前:\n");
for(i=0;i<10;i++)
printf("%s %s %d %d %l\n",sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);
for(i=0;i<10;i++)
for(j=i;j<10;j++)
{
if(strcmp(sell[i].dm,sell[j].dm)<0)
{ t=sell[i];
sell[i]=sell[j];
sell[j]=t;
}
if(strcmp(sell[i].dm,sell[j].dm)==0&&sell[i].je<sell[j].je)
{ t=sell[i];
sell[i]=sell[j];
sell[j]=t;
}
}
printf("排列后:\n");
f