c语言结构体数组循环右移结果保存到新的结构体数组,原来的结构体数组保持不变
时间: 2024-06-15 12:03:50 浏览: 144
在C语言中,可以通过结构体数组循环右移来实现将结果保存到新的结构体数组,同时保持原来的结构体数组不变。下面是一个示例代码:
```c
#include <stdio.h>
#define SIZE 5
// 定义结构体
typedef struct {
int id;
char name[20];
} Student;
// 结构体数组循环右移函数
void rotateRight(Student* src, Student* dest, int size, int shift) {
for (int i = 0; i < size; i++) {
int newIndex = (i + shift) % size;
dest[newIndex] = src[i];
}
}
int main() {
// 原始结构体数组
Student students[SIZE] = {
{1, "Alice"},
{2, "Bob"},
{3, "Charlie"},
{4, "David"},
{5, "Eve"}
};
// 新的结构体数组
Student rotatedStudents[SIZE];
// 循环右移并保存结果到新的结构体数组
rotateRight(students, rotatedStudents, SIZE, 2);
// 打印原始结构体数组
printf("原始结构体数组:\n");
for (int i = 0; i < SIZE; i++) {
printf("id: %d, name: %s\n", students[i].id, students[i].name);
}
// 打印循环右移后的新结构体数组
printf("循环右移后的新结构体数组:\n");
for (int i = 0; i < SIZE; i++) {
printf("id: %d, name: %s\n", rotatedStudents[i].id, rotatedStudents[i].name);
}
return 0;
}
```
运行以上代码,将会得到以下输出:
```
原始结构体数组:
id: 1, name: Alice
id: 2, name: Bob
id: 3, name: Charlie
id: 4, name: David
id: 5, name: Eve
循环右移后的新结构体数组:
id: 4, name: David
id: 5, name: Eve
id: 1, name: Alice
id: 2, name: Bob
id: 3, name: Charlie
```
以上代码中,`rotateRight`函数实现了结构体数组的循环右移操作,将结果保存到新的结构体数组`dest`中。在`main`函数中,我们定义了一个原始的结构体数组`students`,并调用`rotateRight`函数将结果保存到新的结构体数组`rotatedStudents`中。最后,我们分别打印了原始结构体数组和循环右移后的新结构体数组。
阅读全文