任务描述 本关任务:编写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。编程要求 在右侧编辑器中的Begin-End之间补充代码,编写一个字符串反序输出的函数。 测试说明 平台会对你编写的代码进行测试,比对你输出的数值与实际正确数值,只有所有数据全部计算正确才能通过测试: 测试输入:123456789 预期输出:987654321 测试输入:zhousiheng 预期输出:gnehisuohz#include<stdio.h> void reverseOutput(char* s){ /********** Begin **********/ //请在此添加‘反序输出’的代码 /********** End **********/ } int main(){ char s[100]; gets(s); reverseOutput(s); puts(s); return 0; }
时间: 2025-05-21 12:38:22 浏览: 24
### 编写字符串反序输出的函数
在 C 语言中,可以通过多种方式实现字符串的反序操作。以下是基于指针和循环的方式编写 `reverseOutput` 函数并将其集成到主函数中的具体实现。
#### 使用指针的方法
通过定义一个函数来接收字符串地址,并利用双指针技术交换字符位置,从而达到反转效果[^1]。
```c
#include <stdio.h>
#include <string.h>
void reverseOutput(char *string) {
int len = strlen(string);
char tmp;
char *left = string;
char *right = string + len - 1;
while (left < right) {
tmp = *left;
*left = *right;
*right = tmp;
left++;
right--;
}
}
int main() {
char str[50];
printf("请输入一个字符串:");
gets(str);
reverseOutput(str); // 调用反序函数
printf("\n反序存放后:%s\n", str);
return 0;
}
```
这段代码实现了字符串的原地反转功能。其中,`reverseOutput` 函数接受指向字符串首部的指针作为参数,内部使用两个辅助指针分别从两端向中间移动,逐个交换字符直到相遇为止[^1]。
#### 非原地修改版本
另一种常见做法是创建一个新的缓冲区存储翻转后的结果而不改变原始数据结构[^2]:
```c
#include <stdio.h>
#include <string.h>
void reverseOutput(const char *input, char *output) {
int length = strlen(input);
for(int i = 0; i < length; ++i){
output[i] = input[length - 1 - i];
}
output[length] = '\0';
}
int main(){
const int MAX_LEN = 100;
char original[MAX_LEN], reversed[MAX_LEN];
printf("Enter the string to be reversed:");
fgets(original, sizeof(original), stdin);
size_t pos = strcspn(original, "\n");
if(pos < sizeof(original)){
original[pos] = '\0';
}
reverseOutput(original, reversed);
printf("Reversed String:%s\n",reversed);
return 0;
}
```
这里我们定义了一个新的目标数组用于保存处理过的副本,这样可以保持源串不变的同时生成其镜像形式[^2]。
---
### 总结说明
以上两种方法均能有效解决题目需求——即构建一个能够执行字符串逆置任务的功能模块,并且能够在程序入口处成功调用它完成交互式演示过程。第一种方案采用就地变换策略节省空间开销;第二种则强调保护输入材料不被篡改的安全特性。
阅读全文
相关推荐




