3
#include <stdio.h>
#include <string.h>
#define N 256
int main()
{
char s[N];
fgets(s, N, stdin);
const char *p = s;
while (*p == ' ')
p++;
if (p != s)
strcpy(s, p);
printf("%s", s);
return 0;
}
4
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define M 10
#define N 15
void merge(int sa[], int na, int sb[], int nb)
{
int *pa = sa + na - 1;
int *pb = sb + nb - 1;
int *q = sa + na + nb - 1;
while (pa >= sa && pb >= sb)
{
if (*pa > *pb)
{
*q-- = *pa--;
}
else if (*pb > *pa)
{
*q-- = *pb--;
}
else
{
*q-- = *pa--;
*q-- = *pb--;
}
}
while (pa >= sa)
*q-- = *pa--;
while (pb >= sb)
*q-- = *pb--;
}
void sort(int a[], int n)
{
for (int i = 0; i < n - 1; i++)
{
for (int j = i + 1; j < n; j++)
{
if (a[j] < a[i])
{
int t = a[i];
a[i] = a[j];
a[j] = t;
}
}
}
}
int main()
{
int a[N + M], b[N];
srand(time(NULL));
for (int i = 0; i < M; i++)
a[i] = rand() % 100;
for (int i = 0; i < N; i++)
b[i] = rand() % 100;
sort(a, M);
sort(b, N);
printf("a[%d]: ", M);
for (int i = 0; i < M; i++)
printf("%d ", a[i]);
printf("\n");
printf("b[%d]: ", N);
for (int i = 0; i < N; i++)
printf("%d ", b[i]);
printf("\n");
merge(a, M, b, N);
printf("after merge a and b:\n");
for (int i = 0; i < M + N; i++)
printf("%d ", a[i]);
printf("\n");
return 0;
}