为什么运行错误 从小到大连续编号,相同数字编号相同,编号从1开始,输出时按照原数组元素的顺序输出。
#include<stdio.h>
int main()
{int i,j,n,k,a[20];
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n;i++)
{k=1;
for(j=0;j<n;j++)
{
if(a[j]<a[i])
k++;
}
printf("%d ",k);
}
}
谢谢
兄弟 你这个程序出在了有重复数字的情况。
你这个程序遇到重复的数字的时候它会将相同的数字视为不同的数字,故它会多加几次。
比如数组中相同的数字4有5个,那么比4大的数字在输出的时候它的编号与你期望的数值会变大5-1=4。
你懂我说的意思了吗?
先去重,在比较,
代码比较垃圾如下:
#include
int main()
{int i,j,n,k,a[20],b[20],c[20];
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(int i=0;i<n;i++){
b[i] = a[i];
}
int nCount = 0;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
for(int i=0;i<nc;i++){
printf("%d ",c[i]);
}
printf("\n");
for(i=0;i {k=1;
for(j=0;j {
if(a[i] > c[j])
k++;
}
printf("%d ",k);
nclude
int main()
{int i,j,n,k,a[20];
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n;i++)
{k=1;
for(j=0;j<n;j++)
{
if(a[j]<a[i])
k++;
}
printf("%d ",k);
}
}}
输入:
8
2
3
1
1
2
5
6
2
--999 --3 c 3 --999 --1 c 1 --999 --5 c 5 --6 c 6 --2 c 2
3 1 5 6 2
2 3 1 1 2 4 5 2
输入:
2 3 1 1 2 5 6 2
排序结果:
2 3 1 1 2 4 5 2