利用一个字符数组作函数参数,实现字符串(最大长度为80个字符 )的逆序存放。 要求如下: (1)在子函数inverse中实现字符串的逆序存放。函数原型为: void inverse(char str[]); (2)在主函数中 从键盘输入字符串(使用gets函数) 然后,调用inverse函数, 最后,输出逆序后的字符串。 (3)**输入提示信息:"input a string:\n" **输出提示信息:"inversed results:\n"
时间: 2023-06-01 19:02:18 浏览: 245
输入一个字符串,把这个字符串按逆序重新存放
### 回答1:
(1) 函数原型为 void inverse(char str[]),实现了将一个字符数组中的字符逆序存储。
(2) 在主函数中,使用 gets 函数从键盘输入一个字符串,然后调用 inverse 函数将该字符串逆序存储,最后输出逆序后的字符串。
(3) 输入提示信息为 "input a string:\n",输出提示信息为 "inversed results:\n"。
### 回答2:
解题思路:
首先在主函数中要定义一个字符数组用来接收从键盘输入的字符串。然后将该字符数组作为参数传入inverse函数中,进而实现字符串的逆序存放。
在inverse函数中,我们可以定义两个指针,分别指向字符串的首尾位置。然后不断交换指针所指位置上的字符,直到两个指针相遇为止。
最后,我们在主函数中输出逆序后的字符串即可。
代码实现:
```
#include <stdio.h>
#include <string.h>
void inverse(char str[]);
int main(void)
{
char str[81];
printf("input a string:\n");
gets(str);
inverse(str);
printf("inversed results:\n");
printf("%s\n", str);
return 0;
}
void inverse(char str[])
{
int i = 0, j = strlen(str) - 1;
char temp;
while (i < j)
{
temp = str[i];
str[i] = str[j];
str[j] = temp;
i++;
j--;
}
}
```
解析:
首先在主函数中定义一个字符数组str。然后使用gets函数从键盘输入字符串,存储到该数组中。随后将该数组作为参数传递给inverse函数。
在inverse函数中,我们定义两个整数变量i和j。变量i指向字符串的首位置,即下标为0的位置;变量j指向字符串的尾位置,即下标为strlen(str)-1的位置。然后使用一个while循环,不断交换首尾位置上的字符,直到i不再小于j为止。
最后,在主函数中输出逆序后的字符串即可。
需要注意的几点:
1.在使用gets函数输入字符串时,需要注意避免溢出。我们在定义字符数组时选择了数组长度为81,可以容纳长度为80的输入字符串及一个字符串结束符'\0'。
2.需要使用库函数strlen来获取字符串的长度,以便确定字符串的首尾位置。
经过测试,该程序可以正常实现字符串逆序存放的功能。
### 回答3:
本题主要考察对字符串的操作能力以及函数的使用。首先,我们要知道字符串是以字符数组的形式存储的,因此可以用一个字符数组作函数参数,实现字符串的逆序存放。
在实现字符串逆序存放的函数inverse中,我们可以利用循环将源字符串中的每一个字符倒序存放到另一个数组中,最后将新数组中的字符复制回原数组,即实现了字符串的逆序存放。
具体代码如下:
void inverse(char str[])
{
int len = strlen(str);
char temp[len];
for (int i = 0; i < len; i++)
{
temp[i] = str[len - i - 1];
}
for (int i = 0; i < len; i++)
{
str[i] = temp[i];
}
}
在主函数中,我们可以先提示用户输入字符串,再使用gets函数获取用户输入的字符串,然后调用inverse函数对字符串进行逆序存放,最后输出结果即可。
具体代码如下:
int main()
{
char str[80];
printf("input a string:\n");
gets(str);
inverse(str);
printf("inversed results:\n");
puts(str);
return 0;
}
需要注意的是,由于输入的字符串可能会超过数组长度,因此在实现输入函数时需要保证输入长度不超过数组长度,否则会导致程序出错。此外,在使用字符串函数时,需要注意字符串的结束符号'\0'的存在,否则会造成输出结果的错误。
阅读全文