c语言的问题 tk532改错

来源:百度知道 编辑:UC知道 时间:2024/06/14 20:10:26
在主函数中输入一个字符串,调用函数reverse()将该字符串逆序,并输出逆序后的字符串。如:若输入字符串为abc,则逆序后输出的字符串为cba。
gc532.c程序有两处错误,请找出并修正,使之符合上述要求。不得增加行或删除行,也不得更改程序结构。
#include <stdio.h>
#include <string.h>
void swap(char *a,char *b)
{
char c;
c=*a;
*a=*b;
*b=c;
}
void reverse(char *s,char *t){
if(s<t){
swap(*s,*t);
reverse(++s,--t);
}
}
void main(){
char s[100],*p;
int len;
printf("Please enter a string:\n");
gets(s);
len=strlen(s);
p=&s[len];
reverse(s,p);
printf("Reverse the string we will get:\n%s\n",s);
}

swap(*s,*t);
改为:swap(s,t);
传入的是指针

p=&s[len];
改为:p=&s[len-1];
因为大小为5的数组,下标为[0-4]

反对你这样刷屏式提问.

void reverse(char *s,char *t){
if(s<t){
swap(*s,*t); /*改成swap(s,t)*/
reverse(++s,--t);
}

#include <stdio.h>
#include <string.h>
void swap(char *a,char *b)
{
char c;
c=*a;
*a=*b;
*b=c;
}
void reverse(char *s,char *t){
if(s<t){

swap(*s,*t); //实参与形参不一致——形参是字符指针,而实参成了字符!改正:swap(s,t);

reverse(++s,--t);
}
}
void main(){
char s[100],*p;
int len;
printf("Please enter a string:\n");
gets(s);
len=strlen(s);
p=&s[len];
reverse(s,p);
printf("Reverse the string we will get:\n%s\n",s); //s是数组名,故不能正常输出! 只有字符指针才可以这样输出!!!由于题目要求不能添删行,那么就把s定义成char*类型吧!
}

你问题实在太多了,其他的我不想做了。。。麻烦!!!