用字符数组作函数参数编程,利用一个数组实现字符串(允许输入带空格的字符串)的逆序存放。要求如下: (1)在主函数中从键盘输入字符串,字符串的最大长度为80个字符。 调用Inverse()函数将字符串逆序存放,然后在主函数中输出逆序后的字符串。 (2)在子函数Inverse()中实现字符串的逆序存放。函数原型为: void Inverse(char str[]);
时间: 2024-03-20 07:39:52 浏览: 27
好的,以下是代码实现:
```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语言编程,输入一个字符串存放到一维字符数组中,再将其中各字符逆序存放并输出。
以下是一个简单的程序,可以实现该功能:
```c
#include<stdio.h>
#include<string.h>
int main()
{
char str[100];
printf("请输入一个字符串:");
scanf("%s", str);
int len = strlen(str);
for(int i = len-1; i>=0; i--)
{
printf("%c", str[i]);
}
return 0;
}
```
程序中先定义一个字符数组,用来存储输入的字符串。然后使用`scanf`函数,将输入的字符串存入该数组中。接着使用`strlen`函数,获取该字符串的长度。最后使用一个`for`循环,从字符串的末尾开始,逐个输出每个字符即可。
需要注意的是,这里使用了`scanf`函数,只能读取到空格之前的字符串。如果需要读取带有空格的字符串,可以使用`fgets`函数。另外,因为`scanf`函数存在缓冲区问题,建议在读取完字符串后,清空缓冲区。
输入一个字符串存放到一-维字符数组中,再将其中各字符逆序存放并输出用cyuyan
好的,下面是一个示例代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
int len, i;
printf("请输入一个字符串:");
scanf("%s", str);
len = strlen(str);
// 逆序存放
for (i = 0; i < len / 2; i++) {
char temp = str[i];
str[i] = str[len - i - 1];
str[len - i - 1] = temp;
}
printf("逆序存放后的字符串是:%s\n", str);
return 0;
}
```
这个程序要求用户从键盘上输入一个字符串,并将它存储在字符数组 `str` 中。然后,程序使用 `strlen()` 函数计算字符串的长度,并将结果存储在变量 `len` 中。
接下来,程序使用 `for` 循环将 `str` 数组中的各字符逆序存放。循环的条件是 `i < len / 2`,因为只需要交换前一半和后一半的字符即可。
最后,程序使用 `printf()` 函数输出逆序存放后的字符串。
需要注意的是,这个程序只能处理不包含空格的字符串。如果要处理包含空格的字符串,可以使用 `fgets()` 函数读取一行文本,而不是使用 `scanf()` 函数读取一个单词。