新手求救 9AC1WA 测试数据n为180时出错输出数据看不出问题(哭了)
查看原帖
新手求救 9AC1WA 测试数据n为180时出错输出数据看不出问题(哭了)
447562
像素旋转楼主2020/12/31 20:55
#include<string.h>
typedef struct student
{int num;
 int chi;
 int math;
 int eng;
 int sum;
 char str[13];
}STU;
void string(STU*,int,int,int,int);
void reverse(char *,char *);
int main(void)
{int n,i,j;
STU stu[300]={0},*p=stu,temp,*q=NULL;
scanf("%d",&n);
for(i=1;i<=n;i++,p++)
{p->num=i;
scanf("%d%d%d",&p->chi,&p->math,&p->eng);
p->sum=p->chi+p->eng+p->math;
string(p,p->sum,p->chi,p->math,p->eng);
}
for(i=0;i<n-1;i++)
	for(p=stu;p<stu+n-1-i;p++)
	{
		if(strcmp(p->str,(p+1)->str)<0)
	{temp=*p;
     *p=*(p+1);
	 *(p+1)=temp;
	}	
	}
	for(p=stu;p<stu+5;p++)
		printf("%d %d\n",p->num,p->sum);

getchar();
getchar();
return 0;
}
void string(STU* p,int sum,int chi,int math,int eng)
{ char a[13]={0},*m,*n;
int cnt=0;
m=&a[cnt];
	while(sum)
	{a[cnt++]=(char)(48+sum%10);
	sum/=10;
	}
	n=&a[cnt-1];
	reverse(m,n);
	m=&a[cnt];
	while(chi)
	{	a[cnt++]=(char)(48+chi%10);
	chi/=10;
	}
	n=&a[cnt-1];
	reverse(m,n);
	m=&a[cnt];
	while(math)
	{	a[cnt++]=(char)(48+math%10);
	math/=10;
	}
	n=&a[cnt-1];
	reverse(m,n);
	m=&a[cnt];
	while(eng)
	{	a[cnt++]=(char)(48+eng%10);
	eng/=10;
	}
	n=&a[cnt-1];
	reverse(m,n);
	a[cnt]='\0';
	strcpy(p->str,a);
}
void reverse(char*m,char*n)
{char *p,*q,temp;
  for(p=m,q=n;p<q;p++,q--)
  {temp=*p;
  *p=*q;
  *q=temp;
  }
}
2020/12/31 20:55
加载中...