题目描述
班上选K名先进个人,由同学们投票选出,现已按序号汇总N名同学(序号依次为1,2,…,N)所得到的投票数(已知每位同学的票数不同),按照得票数从高到低输出前K名同学对应的序号。
输入
第一行输入N和K,第二行依次输入这N名同学对应的票数。
输出
前K名同学的序号。
样例输入
10 3 18 19 20 5 15 12 13 16 21 23
样例输出
10 9 3
#include <stdio.h>
int main()
{
int n,k,temp;
int a[n],b[n];
scanf("%d %d",&n,&k);
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for (int i=0;i<n;i++)
{
b[i]=a[i];
}
for (int j=0;j<n-1;j++)
{
for (int i=0;i<n-1-j;i++)
{
if(b[i+1]>b[i])
{
temp=b[i+1];
b[i+1]=b[i];
b[i]=temp;
}
}
}
for (int i=0;i<n;i++)
{
printf("%d ",b[i]);
}printf("\n");
for (int j=0;j<k;j++)
{
for (int i=0;i<n;i++)
{
if(b[j]==a[i])
printf("%d ",i+1);
}
}
return 0;
}
为什么加上for (int i=0;i<n;i++)
{
printf("%d ",b[i]);
}printf("\n"); 答案才正确,去掉之后就不对呢?
去掉之后运行结果如下:
怎样可以不输出数组b中的元素,并且答案正确呢?