gpt4 book ai didi

c - 反转数组,为什么除以2就可以了?

转载 作者:行者123 更新时间:2023-11-30 16:51:52 24 4
gpt4 key购买 nike

下面的代码向后写了一个单词,除了 for 循环中的一个小细节之外,我理解所有内容:for (int i = 0; i < numberOfChars/2; i++)。 “/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 数组中的每个位置都会交换两次,并直接返回到它开始的位置。例如,如果您有 5 个元素,则会执行以下操作:

  swap 0 with 4
swap 1 with 3
swap 2 with 2
swap 3 with 1
swap 4 with 0

顺便说一句,我认为如果您使用两个索引而不是一个索引来迭代数组,这段代码会变得更清晰:

int i=0;
int j=numberOfChars-1;
while(i < j){
char tmp = array[i];
array[i] = array[j];
array[j] = tmp;
i++;
j--;
}

关于c - 反转数组,为什么除以2就可以了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41535194/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com