C语言编程问题:给数组中的元素按顺序编号
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言编程问题:给数组中的元素按顺序编号相关的知识,希望对你有一定的参考价值。
对数组 a[10] 中的十个整数从小到大进行连续编号,输出各个元素的编号。要求不能改变数组 a 中元素的顺序,且相同的整数要具有相同的编号。例如数组是: A=(5,3,4,7,3,5,6) 则输出为: (3,1,2,5,1,3,4)
我知道在百度知道里有很多人提过相同的问题,我看过他们的程序,都有一个问题,就是会重复计算相同值,例如输入5 3 4 7 3 5 6 0 9 1正确的输出应该是5,3,4,7,3,5,6,1,8,2 而所有的程序的运行结果都是6 3 5 9 3 6 8 1 10 2,哪位大侠告诉我应该怎么改?
#define n 10
main()
int a[n],b[n],i,j;
for(i=0;i<n;i++)
scanf("%d",&a[i]);b[i]=1;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(a[j]<a[i])
b[i]++;
for(i=0;i<n-1;i++)
printf("%d,",b[i]);
printf("%d\n",b[9]);
能不能短点,基本应该稳定在20行左右,拜托了
#include<stdio.h>
#define MAX_NUM 10000
#define n 10
int main()
int b[MAX_NUM] = 0;
int a[n],i,j;
int max = 0;
for(i=0;i<n;i++)
scanf("%d",&a[i]);
if(a[i] >= MAX_NUM)
printf("invalid value [%d]! max than %d\n",a[i], MAX_NUM);
return -1;
b[a[i]] = 1;
if(a[i] > max)
max = a[i];
int idx = 1;
for(i = 0; i <= max; i++)
if(b[i] > 0)
b[i] = idx;
idx++;
for(i=0;i<n - 1;i++)
printf("%d,",b[a[i]]);
printf("%d\n", b[a[n - 1]]);
return 0;
-----------
修改过的:
#include<stdio.h>
#define MAX_NUM 10000
#define n 10
int main()
int b[MAX_NUM] = 0;
int a[n],i,j;
int max = 0;
for(i=0;i<n;i++)
scanf("%d",&a[i]);
if(a[i] >= MAX_NUM)
return -1;
b[a[i]] = 1;
max = a[i] > max ? a[i] : max;
int idx = 1;
for(i = 0; i <= max; i++)
b[i] = b[i] > 0 ? idx++ : b[i];
for(i=0;i<n - 1;i++)
printf("%d,",b[a[i]]);
printf("%d\n", b[a[n - 1]]);
return 0;
不过代码长度有这么重要么?代码的可读性和正确性才是第一位的! 如果太纠结于长度,不如把所有代码都写道一行算了。多爽:“看,我的代码一行就搞定了;”本回答被提问者采纳 参考技术B #include <stdio.h>
#include <string.h>
int main()
int a[10],b[10],i,j,count=1;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
for(j=0;j<10;j++)
if(a[i]>a[j])
count++;
b[i]=count;
count=1;
for(i=0;i<10;i++)
printf("%3d",b[i]);
printf("\n");
return 0;
这样做最简单,二十行。。。。。你是哪个学校的?
将一个数组中的值按逆序重新存放:建立Map()函数实现N个整数按相反顺序存放,函数的形参是数组
参考技术A #include <iostream.h>#define N 20
void map(int arr[],int n)
int i;
for(i=0;i<n/2;i++)
int temp;
temp=arr[i];
arr[i]=arr[n-i-1];
arr[n-i-1]=temp;
int main()
int arr[N],n,i;
cout<<"请输入数组个数:";
cin>>n;
cout<<"请输入数组元素:";
for(i=0;i<n;i++)
cin>>arr[i];
map(arr,n);
cout<<"倒序后数组元素为:";
for(i=0;i<n;i++)
cout<<arr[i]<<" ";
return 0;
-----------------------
我用C++的!不知道符不符合你的要求!看看吧...- -!
以上是关于C语言编程问题:给数组中的元素按顺序编号的主要内容,如果未能解决你的问题,请参考以下文章