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)-1;
p=&s[len];
reverse(s,p);
printf("Reverse the string we will get:\n%s\n",s);
getch();
}

第1个回答  2010-12-02
#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 !='\0'){
swap(s,t);
reverse(--s,++t);

}
}
void main(){
char s[100]={'\0'},*p=0;
int len;
printf("Please enter a string:\n");
gets(s);
len=strlen(s)-1;
p=&s[len];
reverse(s,p);
printf("Reverse the string we will get:\n%s\n",s);
}
reverse里的条件改为*s!='\0',而且reverse(--s,++t);因为s[100]在栈中分配,地址由高到低入栈.调试通过了
第2个回答  2010-12-02
#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){
void swap(char *a,char *b); //这里要加函数说明
if(s<t){ //这里要改为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)-1;
p=&s[len];
reverse(s,p);
printf("Reverse the string we will get:\n%s\n",s);
getch();
}本回答被提问者采纳
相似回答