用C语言编写从键盘输入一个字符串,实现利用字符指针将字符串的字符顺序逆置并输出。(例如输入abcdef,输出fedcba)。请编写相应的程序代码,并调试运行出正确结果。
时间: 2024-02-17 18:03:19 浏览: 70
好的,以下是程序代码:
```c
#include <stdio.h>
#include <string.h>
void reverse(char *str);
int main()
{
char str[100];
printf("请输入一个字符串:");
scanf("%s", str);
reverse(str);
printf("逆置后的字符串为:%s\n", str);
return 0;
}
void reverse(char *str)
{
int len = strlen(str);
int i, j;
for (i = 0, j = len - 1; i < j; i++, j--)
{
char temp = str[i];
str[i] = str[j];
str[j] = temp;
}
}
```
程序的主要思路是使用一个字符指针来表示字符串,然后遍历字符串将其字符顺序逆置。在 `reverse` 函数中,我们首先使用 `strlen` 函数获取字符串的长度,然后使用两个指针 `i` 和 `j` 分别指向字符串头和尾,使用一个循环来交换字符串的对称位置的字符,从而实现字符串的逆置。最后,在 `main` 函数中,我们通过调用 `reverse` 函数将用户输入的字符串进行逆置,并输出结果。
相关问题
用c语言从键盘输入一个字符串,实现利用字符指针将字符串的字符顺序逆置并输出。(例如输入abcdef,输出fedcba)。请编写相应的程序代码,并调试运行出正确结果
好的,我已经明白了你的问题。下面是对应的 C 语言程序代码:
```c
#include<stdio.h>
#include<string.h>
int main()
{
char str[100], *p;
int len, i;
printf("请输入一个字符串:");
scanf("%s", str);
len = strlen(str);
p = str + len - 1;
printf("逆置前的字符串为:%s\n", str);
for (i = 0; i < len / 2; i++)
{
char temp = *(str + i);
*(str + i) = *(p - i);
*(p - i) = temp;
}
printf("逆置后的字符串为:%s\n", str);
return 0;
}
```
在这个代码中,首先定义了一个字符数组 `str` 以及一个字符指针 `p`,用于存储输入的字符串和指向字符串最后一个字符的指针。然后,通过 `scanf()` 函数从键盘输入一个字符串并计算出字符串的长度 `len`。接着,将 `p` 指向字符串最后一个字符。最后的 for 循环通过指针 `p` 将字符串的字符顺序逆置,并输出逆置前后的字符串。
希望能够帮到你!
用C语言写,从键盘输入一个字符串,实现利用字符指针将字符串的字符顺序逆置并输出。即自定义函数,其功能为实现字符串的逆置,形参为指针类型(例如输入abcdef输出fedcba)。请编写相应的程序代码,并调试运行出正确结果。
下面是代码实现:
```c
#include <stdio.h>
#include <string.h>
void reverse(char *s)
{
int len = strlen(s);
for(int i = 0; i < len / 2; i++)
{
char temp = *(s + i);
*(s + i) = *(s + len - i - 1);
*(s + len - i - 1) = temp;
}
}
int main()
{
char s[100];
printf("请输入一个字符串:");
scanf("%s", s);
reverse(s);
printf("逆置后的字符串为:%s\n", s);
return 0;
}
```
输入一个字符串后,将其传入 `reverse` 函数中进行逆置,最后输出逆置后的结果。注意在传递字符串时,使用的是字符指针的形式。
阅读全文