查看: 280|回复: 2

多输出了好几个数字,为什么

[复制链接]
发表于 2016-12-15 21:34:01 | 显示全部楼层 |阅读模式
6啊哈币
[C] 纯文本查看 复制代码
#include <stdio.h>
#include <stdlib.h>
int comp(const void*a,const void*b)
{
    return *(int*)a-*(int*)b;
}
int main()
{
	int i,j,n,k,d;
	long long a[100],b[100],x;
	scanf("%d",&n);
	for(i=0;i<n;i++)
		scanf("%d",&a[i]);
	for(i=0;i<n;i++)
		b[i]=a[i];
	qsort(a,n,sizeof(long long),comp);
	for(i=0,d=n-1;d>=0,i<n;i++,d--)
	{
		for(j=0;j<n;j++)
			if(a[i]==b[j])
			{
				printf("%d ",j+1);
				b[j]=-1;
				break;
			}
		for(k=0;k<n;k++)
			if(a[d]==b[k])
			{
				printf("%d\n",k+1);
				b[j]=-1;
				break;
			}
	}

}

回复

使用道具 举报

发表于 2017-1-4 18:09:25 | 显示全部楼层
不明白你这是要干啥啊.....数据源有什么用,输出的都是下标值
回复

使用道具 举报

发表于 2017-1-5 08:22:59 | 显示全部楼层
你想把排序的元素下标顺序输出出来完全没必要这么写啊,这个for循环写的太....,即使你想这样写,第二层只写一个for也就够了,还有就是,你并没有限制输入数字的范围,所以那句冗余值=-1完全不科学!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表