结构体数组定义错序赋值方法
时间: 2023-07-08 11:12:03 浏览: 42
如果需要进行错序赋值,可以使用一个数组来存储每个结构体的下标,然后将该数组乱序后再进行赋值。具体实现可以参考以下代码:
```c
#include <stdio.h>
#include <stdlib.h> // 包含随机数生成函数的头文件
#include <time.h> // 包含时间函数的头文件
#define N 10 // 定义数组长度
typedef struct {
int id;
char name[20];
} Student;
int main() {
Student students[N] = {0}; // 定义结构体数组并初始化为0
int idx[N], i, j, tmp;
// 初始化数组
for (i = 0; i < N; i++) {
idx[i] = i;
}
// 随机数生成器初始化
srand((unsigned)time(NULL));
// 打乱数组顺序
for (i = N - 1; i > 0; i--) {
j = rand() % (i + 1);
tmp = idx[i];
idx[i] = idx[j];
idx[j] = tmp;
}
// 错序赋值
for (i = 0; i < N; i++) {
students[i].id = idx[i] + 1;
sprintf(students[i].name, "Student%d", idx[i] + 1);
}
// 打印结果
for (i = 0; i < N; i++) {
printf("id: %d, name: %s\n", students[i].id, students[i].name);
}
return 0;
}
```
注意,这里使用了一个数组`idx`来存储每个结构体的下标,然后将该数组乱序后再进行赋值。