5.写一个函数void f(char a[ ]),对输入的字符串a实现逆序,在主函数中输入字符串、输出逆序后的字符串。
时间: 2024-05-01 12:21:27 浏览: 104
以下是实现逆序的函数代码:
```c
void f(char a[]) {
int len = strlen(a);
for(int i = 0; i < len / 2; i++) {
char temp = a[i];
a[i] = a[len - i - 1];
a[len - i - 1] = temp;
}
}
```
在主函数中调用该函数并输出结果的代码如下:
```c
int main() {
char str[100];
printf("请输入一个字符串:");
scanf("%s", str);
f(str);
printf("逆序后的字符串为:%s\n", str);
return 0;
}
```
注意,这里的函数参数必须是 `char a[]` 的形式,而不能是 `char *a`。因为在传递字符串参数时,如果使用指针形式的参数,实际上只是传递了字符串的首地址,而不是整个字符串,无法在函数内部修改字符串内容。
相关问题
用字符数组作函数参数编程,利用一个数组实现字符串(允许输入带空格的字符串)的逆序存放。要求如下: (1)在主函数中从键盘输入字符串,字符串的最大长度为80个字符。 调用Inverse()函数将字符串逆序存放,然后在主函数中输出逆序后的字符串。 (2)在子函数Inverse()中实现字符串的逆序存放。函数原型为: void Inverse(char str[]);
好的,以下是代码实现:
```c
#include <stdio.h>
#include <string.h>
void Inverse(char str[]);
int main()
{
char str[81];
printf("请输入字符串(最多80个字符):");
fgets(str, 81, stdin); // 使用fgets函数输入字符串,避免输入带空格的字符串时出现问题
printf("原字符串:%s", str);
Inverse(str);
printf("逆序后的字符串:%s", str);
return 0;
}
void Inverse(char str[])
{
int len = strlen(str);
for (int i = 0; i < len / 2; i++) {
char temp = str[i];
str[i] = str[len - i - 1];
str[len - i - 1] = temp;
}
}
```
在主函数中,先使用`fgets`函数输入字符串,并输出原字符串,然后调用`Inverse`函数将字符串逆序存放,最后输出逆序后的字符串。
在`Inverse`函数中,使用一个循环将字符串的前一半与后一半对应位置上的字符交换,从而实现字符串的逆序存放。
使用指针,写一个函数,可以逆序一个字符串的内容。并在主函数中输入字符串后使用该函数逆序输入的字符串
以下是使用指针逆序字符串的代码:
```c++
#include <iostream>
#include <cstring>
using namespace std;
void reverseString(char* str) {
int len = strlen(str);
char* start = str;
char* end = str + len - 1;
while (start < end) {
char temp = *start;
*start = *end;
*end = temp;
start++;
end--;
}
}
int main() {
char str[100];
cout << "请输入一个字符串:";
cin.getline(str, 100);
reverseString(str);
cout << "逆序后的字符串为:" << str << endl;
return 0;
}
```
该函数的参数为一个指向字符数组的指针,函数内部使用指针将字符串逆序。在主函数中使用`cin.getline()`读取字符串,然后调用函数将字符串逆序,最后输出逆序后的字符串。
阅读全文