ACM1236测试时,没有问题啊,提交时总是WA。。。为什么啊?? 求指教
#include<stdio.h>#include<string.h>intmain(){intm,n,g,i,j,x,passed;intM[10],Score[100...
#include <stdio.h>
#include <string.h>
int main()
{ int m,n,g,i,j,x,passed;
int M[10],Score[1000]; //数组M[]记录每个题目的分值,Score[]记录第i个学生的总成绩
char Stu_ID[1000][21],c[21];//用Stu_ID数组记录第i个学生的考号
while(scanf("%d",&n)==1&&n)//考生数n
{ scanf("%d%d",&m,&g); //m题数,g分数线
for( passed=i=0;i<m;i++)
scanf("%d",&M[i]); //依次输入m题的各个分值
for(i=0;i<n;i++)
{ Score[i]=0;
scanf("%s%d",Stu_ID[i],&j);//输入学生考号,及做出的题数
while(j--)
{ scanf("%d",&x);
Score[i]+=M[x-1]; //计算第i个学生的总成绩
}
if(Score[i]>=g) //计算达到分数线的学生数
passed++;
}
printf("%d\n",passed);
for(i=0;i<passed;i++)
printf("%s %d\n",Stu_ID[i],Score[i]);
for(i=0;i<n-1;i++) //按成绩进行排序(由高到低),分数线同,按考号升序排列
for(j=0;j<n-i-1;j++)
if(Score[j]<Score[j+1]||(Score[j]==Score[j+1]&&strcmp(Stu_ID[j],Stu_ID[j+1])>0))
{ strcpy(c,Stu_ID[j]);strcpy(Stu_ID[j],Stu_ID[j+1]);strcpy(Stu_ID[j+1],c);
x=Score[j];Score[j]=Score[j+1];Score[j+1]=x;
}
for(i=0;i<passed;i++)
printf("%s %d\n",Stu_ID[i],Score[i]); //输出高于分数线的学生的总成绩
}
return 0;
} 展开
#include <string.h>
int main()
{ int m,n,g,i,j,x,passed;
int M[10],Score[1000]; //数组M[]记录每个题目的分值,Score[]记录第i个学生的总成绩
char Stu_ID[1000][21],c[21];//用Stu_ID数组记录第i个学生的考号
while(scanf("%d",&n)==1&&n)//考生数n
{ scanf("%d%d",&m,&g); //m题数,g分数线
for( passed=i=0;i<m;i++)
scanf("%d",&M[i]); //依次输入m题的各个分值
for(i=0;i<n;i++)
{ Score[i]=0;
scanf("%s%d",Stu_ID[i],&j);//输入学生考号,及做出的题数
while(j--)
{ scanf("%d",&x);
Score[i]+=M[x-1]; //计算第i个学生的总成绩
}
if(Score[i]>=g) //计算达到分数线的学生数
passed++;
}
printf("%d\n",passed);
for(i=0;i<passed;i++)
printf("%s %d\n",Stu_ID[i],Score[i]);
for(i=0;i<n-1;i++) //按成绩进行排序(由高到低),分数线同,按考号升序排列
for(j=0;j<n-i-1;j++)
if(Score[j]<Score[j+1]||(Score[j]==Score[j+1]&&strcmp(Stu_ID[j],Stu_ID[j+1])>0))
{ strcpy(c,Stu_ID[j]);strcpy(Stu_ID[j],Stu_ID[j+1]);strcpy(Stu_ID[j+1],c);
x=Score[j];Score[j]=Score[j+1];Score[j+1]=x;
}
for(i=0;i<passed;i++)
printf("%s %d\n",Stu_ID[i],Score[i]); //输出高于分数线的学生的总成绩
}
return 0;
} 展开
展开全部
#include <stdio.h>
#include <string.h>
int main()
{
int m,n,g,i,j,x,passed;
int M[10],Score[1000]; //数组M[]记录每个题目的分值,Score[]记录第i个学生的总成绩
char Stu_ID[1000][21],c[21];//用Stu_ID数组记录第i个学生的考号
while(scanf("%d",&n)==1&&n)//考生数n
{
scanf("%d%d",&m,&g); //m题数,g分数线
for( passed=i=0;i<m;i++)
scanf("%d",&M[i]); //依次输入m题的各个分值
for(i=0;i<n;i++)
{
Score[i]=0;
scanf("%s%d",Stu_ID[i],&j);//输入学生考号,及做出的题数
while(j--)
{
scanf("%d",&x);
Score[i]+=M[x-1]; //计算第i个学生的总成绩
}
if(Score[i]>=g) //计算达到分数线的学生数
passed++;
}
printf("%d\n",passed);
// for(i=0;i<passed;i++) WTF are these two lines
// printf("%s %d\n",Stu_ID[i],Score[i]);
for(i=0;i<n-1;i++) //按成绩进行排序(由高到低),分数线同,按考号升序排列
for(j=0;j<n-i-1;j++)
if(Score[j]<Score[j+1]||(Score[j]==Score[j+1]&&strcmp(Stu_ID[j],Stu_ID[j+1])>0))
{
strcpy(c,Stu_ID[j]);
strcpy(Stu_ID[j],Stu_ID[j+1]);
strcpy(Stu_ID[j+1],c);
x=Score[j];Score[j]=Score[j+1];Score[j+1]=x;
}
for(i=0;i<passed;i++)
printf("%s %d\n",Stu_ID[i],Score[i]); //输出高于分数线的学生的总成绩
}
return 0;
}
#include <string.h>
int main()
{
int m,n,g,i,j,x,passed;
int M[10],Score[1000]; //数组M[]记录每个题目的分值,Score[]记录第i个学生的总成绩
char Stu_ID[1000][21],c[21];//用Stu_ID数组记录第i个学生的考号
while(scanf("%d",&n)==1&&n)//考生数n
{
scanf("%d%d",&m,&g); //m题数,g分数线
for( passed=i=0;i<m;i++)
scanf("%d",&M[i]); //依次输入m题的各个分值
for(i=0;i<n;i++)
{
Score[i]=0;
scanf("%s%d",Stu_ID[i],&j);//输入学生考号,及做出的题数
while(j--)
{
scanf("%d",&x);
Score[i]+=M[x-1]; //计算第i个学生的总成绩
}
if(Score[i]>=g) //计算达到分数线的学生数
passed++;
}
printf("%d\n",passed);
// for(i=0;i<passed;i++) WTF are these two lines
// printf("%s %d\n",Stu_ID[i],Score[i]);
for(i=0;i<n-1;i++) //按成绩进行排序(由高到低),分数线同,按考号升序排列
for(j=0;j<n-i-1;j++)
if(Score[j]<Score[j+1]||(Score[j]==Score[j+1]&&strcmp(Stu_ID[j],Stu_ID[j+1])>0))
{
strcpy(c,Stu_ID[j]);
strcpy(Stu_ID[j],Stu_ID[j+1]);
strcpy(Stu_ID[j+1],c);
x=Score[j];Score[j]=Score[j+1];Score[j+1]=x;
}
for(i=0;i<passed;i++)
printf("%s %d\n",Stu_ID[i],Score[i]); //输出高于分数线的学生的总成绩
}
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询