#include
#include
struct staff
{
char name[12];
int jobnumber;
int number;
};
void main()
{
int i,j,t,n,g;
struct staff sta[50],h[50];
printf("*****请输入您要输入的数据总数n为*****\n");
scanf("%d",&n);
printf("请输入职工的信息\n");
for(i=0;i
{
scanf("%s,%d,%d\n",&sta[i].name,&sta[i].jobnumber,&sta[i].number);
/*将对同一职工的多次输入叠加在一起*/
}
for(i=0;i
{
for(j=0;j
{
if(sta[j].jobnumber==sta[i].jobnumber)
{
sta[j].number+=sta[i].number;
for(;i
{
strcpy(sta[i].name,sta[i+1].name);
sta[i].jobnumber=sta[i+1].jobnumber;
sta[i].number=sta[i+1].number;
}
g++;
}
}
}
/*按产品数量将职工一一排序*/
for(i=0;i
{
for(j=0;j
{
if(sta[i].number>sta[j].number)
{
if(i>j)
{
strcpy(h[i].name,sta[i].name);
strcpy(sta[i].name,sta[j].name);
strcpy(sta[j].name,h[i].name);
t=sta[i].jobnumber;
sta[i].jobnumber=sta[j].jobnumber;
sta[j].jobnumber=t;
t=sta[i].number;
sta[i].number=sta[j].number;
sta[j].number=t;
}
}/*对于产品数量相同的员工 按照工号大小排序*/
else if(sta[i].number==sta[j].number)
{
if(i>j)
{
if(sta[i].jobnumber
{
strcpy(h[i].name,sta[i].name);
strcpy(sta[i].name,sta[j].name);
strcpy(sta[j].name,h[i].name);
t=sta[i].jobnumber;
sta[i].jobnumber=sta[j].jobnumber;
sta[j].jobnumber=t;
t=sta[i].number;
sta[i].number=sta[j].number;
sta[j].number=t;
}
}
}
}
}
printf("经过排序后的数据为\n");
for(i=0;i
{
printf("排名%d,名字%s,职号%d\n",i+1,sta[i].name,sta[i].jobnumber);
}
}程序运行为什么老出错 。。题目是
职工工作量统计系统设计
编写一个程序,该程序输入职工工号和完成的产品数量,程序允许同一职工有多次输入,由程序对其完成的产品数量实现累计。程序按完成数量对他们排序,并确定他们的名次。按完成的产品数量由多到少的顺序,输出名次、同一名次的职工人数及他们的工号(工号由小到大顺序输出)。