下面给出的程序的功能是将输入的字符串反向,例如输入字符串“abcdefg”,输出"gfedcba"。 主函数中读入一个字符串,然后调用reverse函数将字符串反向,最后输出反向后的字符串。 函数原型:reverse(char *str, int i, int j ),其中s为字符串的首地址,i、j是以字符串中心对称的两个字符的下标,i在前、j在后。reverse函数采用了递归算法。 程序中存在着错误,请改错后提交。 #include <stdio.h> void reverse( char *str, int i, int j ) { char temp; if( i < j ) { temp = str[i]; str[i] = str[j]; str[j] = temp; reverse( str, i+1, j-1 ); } return; } int main() { int n=0; char s[100]; gets(s); while( s[n] != '\0' ) n++; reverse( s, 0, n ); puts(s); return 0; }
时间: 2024-01-27 17:04:15 浏览: 191
程序中的错误在于reverse函数中调用递归时传递的终止条件不正确,应该使用i<=j作为终止条件,而不是i<j。此外,main函数中传递给reverse函数的第二个参数应该是n-1,而不是n。修改后的程序如下:
```
#include <stdio.h>
void reverse(char *str, int i, int j) {
char temp;
if (i <= j) {
temp = str[i];
str[i] = str[j];
str[j] = temp;
reverse(str, i+1, j-1);
}
return;
}
int main() {
int n=0;
char s[100];
gets(s);
while (s[n] != '\0')
n++;
reverse(s, 0, n-1);
puts(s);
return 0;
}
```
相关问题
、主函数输入一个字符串,编写函数 fun,实现将字符串反序存放并在主函数输出该反序字符串。例如,在主函数输入字符串 “abcdefg”,在调用 fun 函数后,则应输出“gfedcba” (注意: gfedcba 并非固定输入,要实现任意输入字符串都能达到翻转效果。)
在C语言中,你可以通过创建一个函数fun来实现字符串的反转。这里是一个简单的示例:
```c
#include <stdio.h>
#include <string.h>
// 定义一个函数,接收一个字符串作为参数并返回它的反转版本
char* reverse_string(char* str) {
int length = strlen(str);
char reversed[length + 1]; // 为结束符留一个位置
for (int i = 0; i < length; i++) {
reversed[i] = str[length - i - 1];
}
reversed[length] = '\0'; // 添加字符串结束符
return reversed;
}
int main() {
char input[50];
printf("请输入一个字符串: ");
fgets(input, sizeof(input), stdin); // 从用户输入读取字符串,忽略换行符
input[strcspn(input, "\n")] = '\0'; // 删除fgets添加的换行符
char* reversed_str = reverse_string(input);
printf("反转后的字符串是: %s\n", reversed_str);
// 为了释放内存,记得在程序结束后删除reversed_str
free(reversed_str);
return 0;
}
```
在这个程序中,`reverse_string`函数接受一个字符指针,然后遍历整个字符串,把每个字符存入一个新的数组中,但是顺序相反。主函数中,我们先获取用户的输入,然后调用这个函数并打印结果。
用c语言编写一程序实现将用户输入的一字符串以反向形式输出。例如,输入字符串是abcdefg,输出为gfedcba。
好的,您可以使用以下代码实现:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
printf("请输入字符串:");
scanf("%s", str);
int len = strlen(str);
printf("反向输出字符串为:");
for (int i = len-1; i >= 0; i--) {
printf("%c", str[i]);
}
printf("\n");
return 0;
}
```
这个程序会提示用户输入一个字符串,然后使用循环逆序输出字符串中的每个字符,最终实现反向输出。
阅读全文