社区讨论

新手求救 9AC1WA 测试数据n为180时出错输出数据看不出问题(哭了)

P1093[NOIP 2007 普及组] 奖学金参与者 3已保存回复 5

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
5 条
当前快照
1 份
快照标识符
@locrsyyx
此快照首次捕获于
2023/10/30 18:41
2 年前
此快照最后确认于
2023/11/05 05:26
2 年前
查看原帖
#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;
  }
}

回复

5 条回复,欢迎继续交流。

正在加载回复...