[求助]请问我这个程序有什么问题?
[bold]Input [/bold]只有一组测试数据。 测试数据的第一行有一个整数N(1<=N<=100),表示一共有编号为1至N的N门课程。
第二行有N个正整数,第i个数Si说明第i门课程可以容纳的学生数,所有的Si均不超过800。
随后有若干行,每行一个正整数i,说明有某同学选择了第i门课。
输入的最后一行为0,表示数据结束。
[bold]Output [/bold]根据从小到大的顺序输出那些报名人数超过了课程容量限制的课程编号,编号之间用一个空格分隔(不用担心最后一个编号后面多出来的空格)。
[bold]Sample Input [/bold]
3
2 2 1
1
3
3
1
2
1
2
0
[bold]Sample Output [/bold]
1 3
#include<stdio.h>
int main()
{
int n,i,j;
char a[2][100];
for(i=0;i<=100;i++)
a[0][italic]=i+1;
scanf("%d",&n);
if(n<=100&&n>=1)
{
for(i=0;i<=n-1;i++)
{
scanf("%d",&a[1][italic]);
if(a[1][italic]>n)
i--;
}
do
{
scanf("%d",&j);
a[1][j-1]--;
}while(j!=0);
for(i=0;i<=n-1;i++)
{
if(a[1][italic]<0)
printf("%d ",a[0][italic]);
}
}
printf("\n");
return 0;
}[/italic][/italic][/italic][/italic][/italic]
[italic][italic][italic][italic][italic]我学校的online judge判定是wrong answer 为什么??[/italic][/italic][/italic][/italic][/italic]
[italic][italic][italic][italic][italic]ps:如果有更简便的方法请告知```感谢!!![/italic][/italic][/italic][/italic][/italic]
----------------解决方案--------------------------------------------------------
正好没事,我来试试.
----------------解决方案--------------------------------------------------------
程序代码:
#include<stdio.h>
int main()
{
#ifdef ONLINE_JUDGE
freopen ("Round and Round We Go.txt","r",stdin);
#endif
int n;
int Max_data[101];
int i;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&Max_data[i+1]);
}
while(scanf("%d",&i)&&i!=0)
{
Max_data[i]--;
}
for(i=0;i<n;i++)
{
if(Max_data[i+1]<0)
{
printf("%d ",i+1);
}
}
printf("\n");
return 0;
}
int main()
{
#ifdef ONLINE_JUDGE
freopen ("Round and Round We Go.txt","r",stdin);
#endif
int n;
int Max_data[101];
int i;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&Max_data[i+1]);
}
while(scanf("%d",&i)&&i!=0)
{
Max_data[i]--;
}
for(i=0;i<n;i++)
{
if(Max_data[i+1]<0)
{
printf("%d ",i+1);
}
}
printf("\n");
return 0;
}
----------------解决方案--------------------------------------------------------
高手阿````
请问为什么我那个程序不行呢
调试的时候是符合题目的例子的阿
----------------解决方案--------------------------------------------------------
程序代码:
#include
int main()
{
int n,i,j;
char a[2][100];
for(i=0;i<=100;i++)
a[0][i]=i+1;
scanf("%d",&n);
if(n<=100&&n>=1)
{
for(i=0;i<=n-1;i++)
{
scanf("%d",&a[1][i]);
if(a[1][i]>n)
i--;
}
do
{
scanf("%d",&j);
a[1][j-1]--;
}while(j!=0);
for(i=0;i<=n-1;i++)
{
if(a[1][i]<0)
printf("%d ",a[0][i]);
}
}
printf("\n");
return 0;
}
int main()
{
int n,i,j;
char a[2][100];
for(i=0;i<=100;i++)
a[0][i]=i+1;
scanf("%d",&n);
if(n<=100&&n>=1)
{
for(i=0;i<=n-1;i++)
{
scanf("%d",&a[1][i]);
if(a[1][i]>n)
i--;
}
do
{
scanf("%d",&j);
a[1][j-1]--;
}while(j!=0);
for(i=0;i<=n-1;i++)
{
if(a[1][i]<0)
printf("%d ",a[0][i]);
}
}
printf("\n");
return 0;
}
为什么我这个不行啊??
----------------解决方案--------------------------------------------------------
#ifdef ONLINE_JUDGE
freopen ("Round and Round We Go.txt","r",stdin);
#endif
这段话是啥意思啊?
----------------解决方案--------------------------------------------------------
#include<stdio.h>
int main()
{
int n,i,j;
char a[2][100];
for(i=0;i<=100;i++)
a[0][i]=i+1;
scanf("%d",&n);
if(n<=100&&n>=1)
{
for(i=0;i<=n-1;i++)
{
scanf("%d",&a[1][i]);
if(a[1][i]>n)
i--;
}
do
{
scanf("%d",&j);
a[1][j-1]--;
}while(j!=0);
for(i=0;i<=n-1;i++)
{
if(a[1][i]<0)
printf("%d ",a[0][i]);
}
}
printf("\n");
return 0;
}
楼主的这样一个改,输出就对了...
----------------解决方案--------------------------------------------------------
不过觉得楼主的这条语句是不是要改一下呢:
if(a[1][i]>n)
i--;
觉得依题"第二行有N个正整数,第i个数Si说明第i门课程可以容纳的学生数,所有的Si均不超过800"应该改成:
if(a[1][i]>800)
i--;
----------------解决方案--------------------------------------------------------