C语言编写程序,输入任意一个字符串,逆序输出。要求:使用指针和数组相结合实现。
时间: 2024-03-16 19:42:03 浏览: 80
好的,这是一个简单的 C 语言程序,使用指针和数组相结合实现输入任意一个字符串,逆序输出的功能。
```c
#include <stdio.h>
#include <string.h>
void reverse(char *s) {
int len = strlen(s);
char temp;
for (int i = 0; i < len / 2; i++) {
temp = *(s + i);
*(s + i) = *(s + len - i - 1);
*(s + len - i - 1) = temp;
}
}
int main() {
char s[100];
printf("请输入一个字符串:\n");
scanf("%s", s);
reverse(s);
printf("逆序输出为:%s\n", s);
return 0;
}
```
在主函数中,先输入一个字符串,然后调用 `reverse` 函数,将字符串作为参数传入。在 `reverse` 函数中,使用指针和数组相结合的方式,逆序遍历字符串,并交换相应位置上的字符。最后,在主函数中输出逆序后的字符串。
注意,这里使用指针和数组相结合的方式,可以在函数内部修改字符串的内容,从而实现逆序输出。同时,要注意字符串结尾的空字符 `\0` 不需要进行交换,因此循环的结束条件是 `len / 2`。
相关问题
C语言编写程序,输入任意一个字符串,逆序输出。要求:使用指针和数组相结合实现。 例如:输入: YOU ARE GOOD ! 输出:! DOOG ERA UOY
好的,这是一个简单的 C 语言编程问题。以下是实现该功能的示例代码。
```c
#include <stdio.h>
#include <string.h>
#define MAX_LENGTH 100
int main()
{
char str[MAX_LENGTH + 1];
char *p, *q;
int len;
printf("请输入字符串:");
fgets(str, MAX_LENGTH + 1, stdin);
len = strlen(str);
p = str;
q = str + len - 1;
while (p < q) {
char tmp = *p;
*p = *q;
*q = tmp;
p++;
q--;
}
printf("逆序输出字符串:%s", str);
return 0;
}
```
代码解释:
- 定义了一个字符数组 `str` 来存储输入的字符串,使用 `fgets` 函数读取字符串,保证输入字符串的安全性;
- 定义两个指针 `p` 和 `q`,分别指向字符串的首位和末位;
- 使用 `while` 循环将 `p` 和 `q` 指向的字符交换,并向中间移动,直到 `p` 和 `q` 相遇;
- 输出逆序后的字符串。
注意事项:
- 在定义字符数组时,需要预留一个额外的字节来存储字符串的结束符 `\0`;
- 输入的字符串可能包含回车符,需要在读取字符串后去掉;
- 在输出字符串时,不需要换行符。
编写c语言,输入任意一个字符串,逆序输出,使用指针和数组结合实现
好的,以下是一个满足您需求的C语言代码示例:
```c
#include <stdio.h>
#include <string.h>
void reverse(char *str) {
int len = strlen(str);
char temp;
for (int i = 0; i < len / 2; i++) {
temp = *(str + i);
*(str + i) = *(str + len - i - 1);
*(str + len - i - 1) = temp;
}
}
int main() {
char str[100];
printf("请输入一个字符串:\n");
scanf("%s", str);
reverse(str);
printf("逆序输出:%s\n", str);
return 0;
}
```
程序中的 `reverse` 函数使用指针 `*str` 进行参数传递,其中 `*str` 代表输入的字符串指针。函数使用数组的方式访问字符串中的每一个字符,并通过指针操作将其逆序排列。在主函数中,先输入一个字符串并存储在 `str` 中,然后调用 `reverse` 函数,将字符串逆序排列。最后输出逆序排列后的字符串。
阅读全文