輸入一字串然後將此字串反向印出(利用遞迴)

2007-03-12 4:00 am
輸入一字串然後將此字串反向印出(利用遞迴)

例如:輸入hello 輸出 olleh

回答 (3)

2007-03-12 6:22 am
✔ 最佳答案
硬要用遞迴的話大概是這樣吧
(由於直接回文顯示會有問題,回在補充)

2007-03-11 22:23:32 補充:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

2007-03-11 22:23:52 補充:
int print(char *s,int l)
{
if(l<0)
return 0;
else
{
printf("%c",s[l]);
return print(s,l-1);
}
}

2007-03-11 22:24:09 補充:
int main(int argc, char *argv[])
{
char str[80];
gets(str);
int len=strlen(str);
print(str,len-1);

system("PAUSE");
return 0;
}
2007-03-12 5:36 pm
如果今天要求的是把結果放在同一個字串要怎麼辦呢?


void rev_str(char *str, ...);
輸入的字串如是 a[]=&quot;1234&quot;;
rev_str(a, ...)
後變成 a[] = &quot;4321&quot;;

這樣要怎麼寫呢??
2007-03-12 8:35 am
可惡,再試一次
#include <stdio.h>
void print( char * s ){
if( *s!=’\0’ ){
print(s+1);
putchar(*s);
}
}
main(){
char str[128];
fgets(str,128,stdin);
print(str);
}

2007-03-12 18:48:01 補充:
#include <stdio.h>
#include <string.h>
#define SWAP(a,b) {int t=a;a=b;b=t;}
void rev_str(char *str, int x , int y ){
if( x < y ){
SWAP(str[x],str[y])
rev_str(str,x+1,y-1);
}
}

main(){
char str[128];
fgets(str,128,stdin);
rev_str( str , 0 , strlen(str)-1 );
puts(str);
}


收錄日期: 2021-04-27 17:14:14
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20070311000010KK09450

檢視 Wayback Machine 備份