结构体数组赋值方法,乱序
时间: 2023-07-08 08:12:03 浏览: 122
结构体数组赋值可以使用循环遍历数组的方式进行赋值。如果需要乱序赋值,可以使用随机数生成器生成一个随机下标,将该下标对应的元素赋值给目标数组的当前下标。具体实现可以参考以下代码:
```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 i, j, k;
// 随机数生成器初始化
srand((unsigned)time(NULL));
// 乱序赋值
for (i = 0; i < N; i++) {
j = rand() % N; // 生成一个随机下标
if (students[j].id == 0) { // 判断该下标对应的元素是否已经赋值
students[j].id = i + 1;
sprintf(students[j].name, "Student%d", i + 1);
} else { // 如果已经赋值,则继续循环,直到找到未赋值的下标
k = j;
while (students[k].id != 0) {
k = (k + 1) % N;
}
students[k].id = i + 1;
sprintf(students[k].name, "Student%d", i + 1);
}
}
// 打印结果
for (i = 0; i < N; i++) {
printf("id: %d, name: %s\n", students[i].id, students[i].name);
}
return 0;
}
```
注意,这里使用了一个数组元素是否为0来判断该元素是否已经赋值。如果数组元素可能为0,需要使用其他方式来判断元素是否已经赋值。
阅读全文