数组反转
include <stdio.h>
int main() {
int arr[6]={1,2,3,4,5,6};
// 定义一个包含 6 个整数的数组 arr,并进行初始化。
int len=sizeof(arr)/sizeof(arr[0]);
// 计算数组 arr 的长度,sizeof(arr)返回整个数组占用的字节数,sizeof(arr[0])返回数组中单个元素占用的字节数,两者相除得到数组的长度。
int temp;
// 定义一个临时变量 temp,用于在交换数组元素时存储中间值。
for(int i=0;i<len/2;i++){
temp = arr[len-1-i];
// 将数组中从后往前数第 i 个元素的值赋给临时变量 temp。
arr[len-1-i]=arr[i];
// 将数组中从前往后数第 i 个元素的值赋给从后往前数第 i 个位置,实现交换的一部分。
arr[i]=temp;
// 将临时变量 temp 中的值赋给从前往后数第 i 个位置,完成交换。
}
for(int i=0;i<6;i++){
printf("%d",arr[i]);
// 遍历整个数组,输出数组中的每个元素。
}
return 0;
}
include <stdio.h> //动态分配字符内存
include <stdlib.h>
include <string.h>
int main() {
char *s = NULL;
size_t len = 0;
ssize_t read;
read = getline(&s, &len, stdin);
if (read > 0) {
int strLen = read - 1; // 减去换行符
char temp;
for (int i = 0; i < strLen / 2; i++) {
temp = s[i];
s[i] = s[strLen - 1 - i];
s[strLen - 1 - i] = temp;
}
// 第二次循环用于再次检查是否完全逆序,如果字符串长度为奇数,中间字符不需要再次交换
for (int i = 0; i < strLen / 2; i++) {
if (s[i]!= s[strLen - 1 - i]) {
temp = s[i];
s[i] = s[strLen - 1 - i];
s[strLen - 1 - i] = temp;
}
}
printf("%s", s);
}
free(s);
return 0;
}

浙公网安备 33010602011771号