为什么输出数组b答案才正确

题目描述

班上选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中的元素,并且答案正确呢?

你的逻辑应该哪里不对,跟输出没啥关系。

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps: 问答会员年卡【8折】购 ,限时加赠IT实体书,即可 享受50次 有问必答服务,了解详情>>>https://t.csdnimg.cn/RW5m