c语言编程

2025-02-24 04:19:59
推荐回答(2个)
回答1:

#include
#include

void swap(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}

void from_small_to_big(int* arr, int len) {
int i, j;
for (i = 0; i < len - 1; i++) {
for (j = 0; j < len - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
swap(&arr[j], &arr[j + 1]);
}
}
}
}

void from_big_to_small(int* arr, int len) {
int i, j;
for (i = 0; i < len - 1; i++) {
for (j = 0; j < len - 1 - i; j++) {
if (arr[j] < arr[j + 1]) {
swap(&arr[j], &arr[j + 1]);
}
}
}
}

int is_odd(int a) {
if (a < 0) {
return -1;
}
else if (a % 2 == 1) {
return 1;
} else {
return 0;
}
}

void print_list(int *a, int len) {
for (int i=0;iprintf("%d ", a[i]);
}
printf("\n");
}

void merge_list(int *a, int a_len, int *b, int b_len, int *c) {
int k=0;
for (int i=0;ic[k++]=a[i];
}
for (int j=0;jc[k++]=b[j];
}
}

int main(int argc, char** argv[]) {
int t[20]={3,2,5,3,4,6,7,8,6,4,14,66,78,9,33,12,56,34,23,90};
int a[20];
int b[20];
int c[20];
int d[20];
int sum[20];
int m=0;
int n=0;
for (int i=0;i<20;i++) {
if (is_odd(t[i]) == 1) {
a[m++]=t[i];
} else if (is_odd(t[i]) == 0) {
b[n++]=t[i];
}
}
printf("奇数由小到大排序:\n");
from_small_to_big(a, m);
print_list(a, m);

printf("偶数由大到小排序:\n");
from_big_to_small(b, n);
print_list(b, n);

printf("a数组保存到a.txt\n");
FILE* fa=fopen("a.txt", "w");
fwrite(a, sizeof(int), m, fa);
fclose(fa);

printf("b数组保存到b.txt\n");
FILE* fb=fopen("b.txt", "w");
fwrite(b, sizeof(int), n, fb);
fclose(fb);

FILE* fp1=fopen("a.txt", "r");
fread(c, sizeof(int), m, fp1);
fclose(fp1);

FILE* fp2=fopen("b.txt", "r");
fread(d, sizeof(int), n, fp2);
fclose(fp2);

printf("从a.txt和b.txt中读出数据并由大到小输出:\n");
merge_list(c, m, d, n, sum);
from_big_to_small(sum, m+n);
print_list(sum, m+n);
return 0;
}

回答2:

读书浪费钱