c语言:比较计数:用比较计数法对结构数组a投字段num进行开序排序,nuim的值从键盘中输入。结构体个数由宏定 义N给出。 定义结构体order,用来存储数据及其排序,并定义结构体数组a,代码如下: struct order/*定义结构体用来存储数据及它的排序*/( int num; int con; }a[20]; 程序运行结果示例: 24 52 78 31 21 各数的顺序是: 24 1 52 3 78 4 31 2 21 0 输入格式:%d 输出提示:“各数的顺序是:1n〞 输出格式:“%3a%3d\n”
时间: 2023-12-10 22:38:41 浏览: 61
以下是该题的C语言代码:
```c
#include <stdio.h>
#define N 5
struct order{
int num;
int con;
}a[N];
int main(){
int i,j,k;
printf("请输入%d个数:\n",N);
for(i=0;i<N;i++){
scanf("%d",&a[i].num);
a[i].con=i;
}
struct order temp;
for(i=0;i<N-1;i++){
k=i;
for(j=i+1;j<N;j++){
if(a[j].num<a[k].num){
k=j;
}
}
if(k!=i){
temp=a[i];
a[i]=a[k];
a[k]=temp;
}
}
printf("各数的顺序是:\n");
for(i=0;i<N;i++){
printf("%3d%3d\n",a[i].num,a[i].con);
}
return 0;
}
```
代码说明:
1. 定义结构体 `order`,包含两个字段 `num` 和 `con`,分别存储数据和排序后的位置。
2. 定义结构体数组 `a`,长度为 `N`,用来存储输入的数据和排序后的结果。
3. 通过循环输入 `N` 个数,将其存储到结构体数组 `a` 中,同时将该数在数组中的位置存储到结构体字段 `con` 中。
4. 使用比较计数法对结构体数组 `a` 中的 `num` 字段进行排序,排序后的结果存储在结构体数组 `a` 中。
5. 循环输出排序后的结果,包括每个数和它的位置(即 `con` 字段)。
需要注意的是,由于输入的数可能重复,因此排序后的位置 `con` 并不一定与输入顺序相同。
阅读全文