
C语言 格式错误50% 帮忙看看哪错了
题目描述光棍节过了,光棍们为了不想再过明年的光棍节,准备组队去向女神求爱。女神面对一群光棍,准备进行一次筛选,筛选的条件就是看谁的运气比较好,自古运气就是实力的一部分嘛。...
题目描述
光棍节过了,光棍们为了不想再过明年的光棍节,准备组队去向女神求爱。
女神面对一群光棍,准备进行一次筛选,筛选的条件就是看谁的运气比较好,自古运气就是实力的一部分嘛。
女神首先会给每个光棍编号(编号从0开始),但是光棍不知道,然后,女神要求光棍们给自己送随意数量的玫瑰,玫瑰数量由光棍们自己决定,可以不送,然后女神会数每个光棍送上来的玫瑰数,当光棍送给女神的玫瑰数量和女神给光棍的编号一样时,那么他就通过了女神第一轮的考验。
现在,告诉你女神总共收到的玫瑰数,同时告诉你每个玫瑰分别是谁送的,请找出能进入女神考验第二轮的幸运小光棍~
输入
输入包含多组数据,每组数据的第一行输入一个N,表示女神共收到N朵玫瑰,之后第二行输入N个数字,第i个数字表示第i朵玫瑰是谁送的。(0<=N<=100,0<= a[i] <=10^9,a[i]表示第i个数);
输出
对于每组输入数据,输出通过第一轮筛选的幸运小光棍的编号,编号从小到大的顺序输出,每两个数中间有一个空格。
每两组输出数据之间有一个空行。
样例输入
70 1 2 2 3 3 3
40 1 2 2
样例输出
1 2 3
1 2
#include<stdio.h>
int main()
{
int n,a[100],i,b[101];//b表示i号人送的花数
int max=-1;
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<101;i++)
b[i]=0;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(int j=0;j<=100;j++)
{
for(i=0;i<n;i++)
{
if(a[i]==j)
b[j]++;
}
if(b[j]==j&&b[j]>=max)
max=b[j];
}
for(i=0;i<=100;i++)
{
if(b[i]==i&&b[i]<max)
printf("%d ",i);
else if(b[i]==i&&b[i]==max)
printf("%d\n\n",i);
}
max=-1;
}
return 0;
}
样例输入错了 是:
7 0 1 2 2 3 3 3
4 0 1 2 2 展开
光棍节过了,光棍们为了不想再过明年的光棍节,准备组队去向女神求爱。
女神面对一群光棍,准备进行一次筛选,筛选的条件就是看谁的运气比较好,自古运气就是实力的一部分嘛。
女神首先会给每个光棍编号(编号从0开始),但是光棍不知道,然后,女神要求光棍们给自己送随意数量的玫瑰,玫瑰数量由光棍们自己决定,可以不送,然后女神会数每个光棍送上来的玫瑰数,当光棍送给女神的玫瑰数量和女神给光棍的编号一样时,那么他就通过了女神第一轮的考验。
现在,告诉你女神总共收到的玫瑰数,同时告诉你每个玫瑰分别是谁送的,请找出能进入女神考验第二轮的幸运小光棍~
输入
输入包含多组数据,每组数据的第一行输入一个N,表示女神共收到N朵玫瑰,之后第二行输入N个数字,第i个数字表示第i朵玫瑰是谁送的。(0<=N<=100,0<= a[i] <=10^9,a[i]表示第i个数);
输出
对于每组输入数据,输出通过第一轮筛选的幸运小光棍的编号,编号从小到大的顺序输出,每两个数中间有一个空格。
每两组输出数据之间有一个空行。
样例输入
70 1 2 2 3 3 3
40 1 2 2
样例输出
1 2 3
1 2
#include<stdio.h>
int main()
{
int n,a[100],i,b[101];//b表示i号人送的花数
int max=-1;
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<101;i++)
b[i]=0;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(int j=0;j<=100;j++)
{
for(i=0;i<n;i++)
{
if(a[i]==j)
b[j]++;
}
if(b[j]==j&&b[j]>=max)
max=b[j];
}
for(i=0;i<=100;i++)
{
if(b[i]==i&&b[i]<max)
printf("%d ",i);
else if(b[i]==i&&b[i]==max)
printf("%d\n\n",i);
}
max=-1;
}
return 0;
}
样例输入错了 是:
7 0 1 2 2 3 3 3
4 0 1 2 2 展开
1个回答
展开全部
#include<stdio.h>
int main()
{
int n,a[100],i,b[101];//b表示i号人送的花数
int max=-1;
//while(scanf("%d",&n)!=EOF)//scanf返回值是正确传入的参数个数,这里正常就是一直1,除非输入的不是数字就会返回0也不等于EOF,肯定会死循环的
while(scanf("%d", &n))//这里可以输入一个不是数字的值,如一个字母就会跳出来了
{
for(i=0;i<101;i++)
b[i]=0;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
/*
for(int j=0;j<=100;j++)
{
for(i=0;i<n;i++)
{
if(a[i]==j)
b[j]++;
}
if(b[j]==j&&b[j]>=max)//没看懂max的作用,应该不用两层循环
max=b[j];
}
*/
for(i=0;i<n;i++)
{
b[a[i]]++;//这样就完成计数了啊,因为a[i]的值就是b里面的数组下标
}
for (i = 0; i <= 100; i++) {//遍历吊死表,谁的标号和玫瑰数相等就输出标号
if (b[i] == i){
printf("%d ", i);
}
}
printf("\n");
}
return 0;
}
追问
你这样提交后显示 “运行错误”啊
追答
不会吧,我是验证了才提上来的啊
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |