English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

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

例如:輸入hello 輸出 olleh

2007-03-11 16:00:01 · 3 個解答 · 發問者 Mar 1 in 電腦與網際網路 程式設計

3 個解答

硬要用遞迴的話大概是這樣吧
(由於直接回文顯示會有問題,回在補充)

2007-03-11 22:23:32 補充:
#include
#include
#include

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-11 18:22:36 · answer #1 · answered by ? 4 · 0 0

如果今天要求的是把結果放在同一個字串要怎麼辦呢?


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

這樣要怎麼寫呢??

2007-03-12 05:36:06 · answer #2 · answered by SiYu 5 · 0 0

可惡,再試一次
#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);
}

2007-03-11 20:35:52 · answer #3 · answered by adam! 5 · 0 0

fedest.com, questions and answers