Diese drei Schleifen sind sinnvoll, wenn die ersten beiden Arrays eine unterschiedliche Anzahl von Elementen haben.
Angenommen, m
ist die Anzahl der Elemente im ersten Array und n
ist die Anzahl der Elemente im zweiten Array. Wenn die Schleifen wie
while (j < m && k < n)
{
a3[i++] = a1[j++];
a3[i++] = a2[k++];
}
while (j < m)
{
a3[i++] = a1[j++];
}
while (k < n)
{
a3[i++] = a2[k++];
}
Ansonsten schauen, wenn die Anzahl der Elemente für die beiden Arrays gleich ist, dann ist es genug, nur eine Schleife
while (j < n && k < n)
{
a3[i++] = a1[j++];
a3[i++] = a2[k++];
}
zu haben, weil nach der Schleife der Variablen j
und k
wird gleich n sein und die folgenden Schleifen werden nicht ausgeführt.
Darüber hinaus war es genug, nur eine Variable j
zu verwenden. Zum Beispiel
while (j < n)
{
a3[i++] = a1[j];
a3[i++] = a2[j++];
}
Untersuchen dieses Programm
#include <stdio.h>
int main(void)
{
{
#define M 3
#define N 5
int a1[M] = { 0, 2, 4 };
int a2[N] = { 1, 3, 5, 7, 9 };
int a3[M + N];
size_t i, j, k;
j = 0;
while (j < M) printf("%d ", a1[j++]);
putchar('\n');
k = 0;
while (k < N) printf("%d ", a2[k++]);
putchar('\n');
i = j = k = 0;
while (j < M && k < N)
{
a3[i++] = a1[j++];
a3[i++] = a2[k++];
}
while (j < M)
{
a3[i++] = a1[j++];
}
while (k < N)
{
a3[i++] = a2[k++];
}
i = 0;
while (i < M + N) printf("%d ", a3[i++]);
putchar('\n');
}
putchar('\n');
{
#undef M
#undef N
#define M 5
#define N 3
int a1[M] = { 0, 2, 4, 6, 8 };
int a2[N] = { 1, 3, 5 };
int a3[M + N];
size_t i, j, k;
j = 0;
while (j < M) printf("%d ", a1[j++]);
putchar('\n');
k = 0;
while (k < N) printf("%d ", a2[k++]);
putchar('\n');
i = j = k = 0;
while (j < M && k < N)
{
a3[i++] = a1[j++];
a3[i++] = a2[k++];
}
while (j < M)
{
a3[i++] = a1[j++];
}
while (k < N)
{
a3[i++] = a2[k++];
}
i = 0;
while (i < M + N) printf("%d ", a3[i++]);
putchar('\n');
}
putchar('\n');
{
#undef M
#undef N
#define N 5
int a1[N] = { 0, 2, 4, 6, 8 };
int a2[N] = { 1, 3, 5, 7, 9 };
int a3[N + N];
size_t i, j;
j = 0;
while (j < N) printf("%d ", a1[j++]);
putchar('\n');
j = 0;
while (j < N) printf("%d ", a2[j++]);
putchar('\n');
i = j = 0;
while (j < N)
{
a3[i++] = a1[j];
a3[i++] = a2[j++];
}
i = 0;
while (i < N + N) printf("%d ", a3[i++]);
putchar('\n');
}
return 0;
}
Sein Ausgang ist
0 2 4
1 3 5 7 9
0 1 2 3 4 5 7 9
0 2 4 6 8
1 3 5
0 1 2 3 4 5 6 8
0 2 4 6 8
1 3 5 7 9
0 1 2 3 4 5 6 7 8 9
Was Sie einen Debugger von Start-und Schreiten durch den Code auf eigene Faust verhindert? Vielleicht verwenden Sie http://www.onlinegdb.com/ –
Sie können viele Beispiele von oben doppelten Link finden. –