3、已知一个顺序表A,请设计一个算法,将A分解为两个顺序表B,C,其中顺序表B中的值是A中小于0的元素,C中的值是A中大于0的元素。C语言
时间: 2024-05-14 10:12:01 浏览: 57
实现如下:
```c
#include <stdio.h>
#define MAX_SIZE 100
void split(int A[], int n, int B[], int C[], int *len_B, int *len_C) {
int i;
*len_B = *len_C = 0;
for (i = 0; i < n; i++) {
if (A[i] < 0) {
B[(*len_B)++] = A[i];
} else {
C[(*len_C)++] = A[i];
}
}
}
int main() {
int A[MAX_SIZE], B[MAX_SIZE], C[MAX_SIZE];
int n, i, len_B, len_C;
printf("请输入顺序表A的长度:");
scanf("%d", &n);
printf("请输入顺序表A的元素:");
for (i = 0; i < n; i++) {
scanf("%d", &A[i]);
}
split(A, n, B, C, &len_B, &len_C);
printf("顺序表B中的元素为:");
for (i = 0; i < len_B; i++) {
printf("%d ", B[i]);
}
printf("\n");
printf("顺序表C中的元素为:");
for (i = 0; i < len_C; i++) {
printf("%d ", C[i]);
}
printf("\n");
return 0;
}
```
运行结果:
```
请输入顺序表A的长度:8
请输入顺序表A的元素:-1 2 3 -4 5 -6 7 8
顺序表B中的元素为:-1 -4 -6
顺序表C中的元素为:2 3 5 7 8
```
阅读全文