У меня есть этот код, ниже которого записывается слово назад, я понимаю все, кроме одной маленькой детали в цикле for: for (int i = 0; i < numberOfChars/2; i ++). Что делает «/ 2» и почему он работает только с ним?Обратный массив, почему это работает, когда я делю на 2?
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
#include <time.h> // time
void reverse(char array[], int numberOfChars) {
for (int i = 0; i < numberOfChars /2; i++) {
char tmp;
tmp = array[i];
array[i] = array[numberOfChars - i - 1];
array[numberOfChars - i - 1] = tmp;
}
}
int main(void) {
char word[55];
int howMany;
printf("Please enter a word:\n");
scanf_s("%s", word, sizeof(word));
printf("how many char do you want to reverse?\n");
scanf_s("%d", &howMany);
reverse(word, howMany);
printf("New arr:%s\n", word);
return 0;
}
Вы заменяете первую половину массива другой половиной. Если вы дважды поменяли обе половины ... – Ryan
Вы пытались удалить '/ 2' и выяснить, что происходит? Вы пытались отлаживать шаг за шагом (с коротким словом в качестве ввода) и понимаете, почему он работает «аккуратно» с '/ 2', но не без него? –
@barakmanos Да, если я удалю «/ 2» код ничего не меняет. Или мне нравится, что кто-то сказал здесь, он изменился дважды! – perolako