首页 > 电脑 > c++中关于数组序号

c++中关于数组序号

电脑 2022-11-29

C语言如何将整个数组编号

算法思路很简单,就是对每个数组元素,在数组中统计比其小的元素的个数,然后该元素的序号就是统计结果加1。 #include void main( ) { int a[10], b[10], i, j, count; for(i = 0; i < 10; i++) scanf("%d", &a[i]); for(i = 0; i < 10; i++) { for(j = 0, count = 0; j < 10; j++) if(a[j] < a[i]) count++; b[i] = count + 1; } for(i = 0; i < 10; i++) printf("%

c语言,数组排序,返回序号

思路:在数值进行排序时,下标也同时移动。这就要求二者要联动。为此创建一个PAIR结构体,将此二者关联在一起。用库里的快排函数qsort可以省略排序的麻烦,并指定qsort按PAIR中数值大小为标准排序结构体数组,这样排序结果中的结构体数组下标和值还是保持开始时的对应关系。

#include
#include
#include
#define N 8
typedef struct
{
int cj;//数值
int px;//下标
}PAIR;
//qsort的辅助比较函数
int compare(const void *p, const void *q)
{
PAIR t1= *(PAIR* )p;
PAIR t2= *(PAIR* )q;
return(t1.cj>t2.cj);
}
int main()
{
PAIR a[N]={};
int cj[N]={};
int px[N]={};
printf("请输入%d个整数:", N);
for (int i=0;i{
scanf("%d",&(a[i].cj));
a[i].px=i+1;
//数组
cj[i] = a[i].cj;
px[i] = a[i].px;
}
qsort((void *)a,N, sizeof(PAIR), compare);
printf("\n排好序的整数为:");
for (i=0;i{
printf("%d ",a[i].cj);
cj[i]=a[i].cj;
}
printf("\n对应原来的下标:");
for (i=0;i{
printf("%d ",a[i].px);
px[i] = a[i].px;
}
putchar('\n');
return 0;
}

C语言 【给数组中的元素按顺序编号】

算法思路很简单,就是对每个数组元素,在数组中统计比其小的元素的个数,然后该元素的序号就是统计结果加1。

#include

void main( ) {
int a[10], b[10], i, j, count;

for(i = 0; i < 10; i++)
scanf("%d", &a[i]);

for(i = 0; i < 10; i++)
{
for(j = 0, count = 0; j < 10; j++)
if(a[j] < a[i]) count++;
b[i] = count + 1;
}

for(i = 0; i < 10; i++)
printf("%3d", b[i]);
printf("\n");
}

运行结果

C语言中,能否通过数组的值来知道数组的序号?可以的话能举个例子吗?

比如说,简单的,数组值就是序号 另一种办法,假设数组元素是unsigned int型的,占用4个字节,其中一个字节表示序号,其他3个字节存储实际取值,这样可以最大有256个元素,存储的值可以是0~1677216

C语言给数组中的元素按顺序编号

首先,for(i=0;i<10;i++) for(j=0;j<10;j++) for(i=0;i<10;i++) 这三个for循环是打错了? 其次你的比较那儿也有问题,试想,当执行到7的时候,7和1比,count = 1,7再和第二个1比,count等于2,后面两个不变,但是你往b数组中存放的时候,count又加了1,肯定就变成3了,9同理,把算法再改改

标签:信息技术 编程 C语言 CC++

大明白知识网 Copyright © 2020-2022 www.wangpan131.com. Some Rights Reserved. 京ICP备11019930号-18