C语言基础例题1-3题-指针篇
C语言基础例题4-5题-二维数组篇
C语言基础例题6-7题-结构体篇
C语言基础例题8-9题-大作业篇
C语言基础例题10-11题-字符串、指针篇
C语言基础例题12题-链表篇
请编写一个函数 void reverseString(char* str)
,该函数将输入的字符串逆序存放,不要使用除stdio以外的任何库函数。
例如,对于输入字符串 “Hello, World!”,函数逆序结果后,str应为 “!dlroW ,olleH”。
测试用例
#include
void reverseString(char* str);
int main() {
char str[] = "Hello, World!";
printf("Original string: %s\n", str);
reverseString(str);
printf("Reversed string: %s\n", str);
return 0;
}
预期输出:
Original string: Hello, World!
Reversed string: !dlroW ,olleH
#include
void reverseString(char *str);
int main()
{
char str[] = "Hello, World!";
printf("Original string: %s\n", str);
reverseString(str);
printf("Reversed string: %s\n", str);
return 0;
}
void reverseString(char *str)
{
char *first=str,*last=str,temp;
while(*last)
*last++;
while(first!=(--last))
{
temp=*first;
*first=*last;
*last=temp;
first++;
}
}
char *first = str, *last = str, temp;:
定义了两个指针 first 和 last,分别指向字符串的开头和结尾,还有一个变量 temp 用于交换字符。
while (*last):
通过循环,使指针 last 移动到字符串的结尾部分,即指向字符串的末尾的空字符 ‘\0’。
while (first != (–last)):
开始一个循环,条件是 first 指针没有达到 last 指针,也就是还没有达到字符串的中点。
temp = *first;
*first = *last;
*last = temp;:
将 first 指针指向的字符与 last 指针指向的字符进行交换。交换后,first 指针向后移动,last 指针向前移动。
first++;:
将 first 指针向后移动一位,继续下一次循环。
通过以上操作,完成了字符串的反转。
#include
void reverseString(char *str);
int main()
{
char str[] = "Hello, World!";
printf("Original string: %s\n", str);
reverseString(str);
printf("Reversed string: %s\n", str);
return 0;
}
void reverseString(char *str)
{
int length = 0;
char *tempPtr;
char temp;
// 计算字符串的长度
tempPtr = str;
while (*tempPtr != '\0')
{
length++;
tempPtr++;
}
// 交换字符串字符
tempPtr = str;
char *endPtr = str + length - 1;
while (tempPtr < endPtr)
{
temp = *tempPtr;
*tempPtr = *endPtr;
*endPtr = temp;
tempPtr++;
endPtr--;
}
}
int length = 0;:
定义一个变量 length,用于记录字符串的长度。
char *tempPtr;:
定义一个指针 tempPtr,用于遍历字符串。
char temp;:
定义一个变量 temp,用于交换字符。
tempPtr = str;:
将指针 tempPtr 指向字符串的开头,准备遍历字符串并计算长度。
while (*tempPtr != ‘\0’):
通过循环,遍历字符串直到遇到空字符 ‘\0’,即字符串的结尾。
length++;
tempPtr++;:
对于每个非空字符,将 length 的值增加 1,并将 tempPtr 指针向后移动到下一个字符。
tempPtr = str;:
将 tempPtr 指针重新指向字符串的开头,准备进行字符交换操作。
char *endPtr = str + length - 1;:
定义一个指针 endPtr,指向字符串的最后一个字符。
while (tempPtr < endPtr):
通过循环,进行字符交换操作。每次循环中,交换 tempPtr 指针和 endPtr 指针指向的字符,并将两个指针分别向后和向前移动一位。
temp = *tempPtr;
*tempPtr = *endPtr;
*endPtr = temp;:
交换 tempPtr 指针和 endPtr 指针指向的字符。
tempPtr++; endPtr–;:
将 tempPtr 指针向后移动一位,将 endPtr 指针向前移动一位。