我在C中发现了这个反转字符串的代码。此代码使用递归,我无法理解reverse()函数。谁能帮忙。
#include <stdio.h>
void reverse() //recursive function to reverse string.
{
char c;
scanf("%c",&c);
if(c!='\n')
{
reverse();
printf("%c",c);
}
}
void main()
{
printf("\nenter a string: ");
reverse();
getch();
}
答案 0 :(得分:0)
reverse
函数以相反的顺序打印char *
/字符串,例如“问题” - &gt; “noitseuq”。
通过逐个字符地读取输入字符串( 如果您交换scanf
一次只读取一个字符)并在当前字符之前在下一个字符上调用print来实现此目的。< / p>
reverse();
和printf("%c",c);
,您会注意到它会在
答案 1 :(得分:0)
在你的代码中,if(c!='\ n')这意味着在遇到新行之前,if语句将会执行。因此,在遇到\ n之前需要输入。 然后如果c = \ n将执行printf语句,它将打印输入字符串的最后一个字符。将此递归视为Stack的一个示例。
答案 2 :(得分:-1)
#include <stdio.h>
void reverse() //recursive function to reverse string.
{
char c; //declare a character
scanf("%c",&c); //scan that is get input from user in format scanf("format specifiers",&value1,&value2,.....);
if(c!='\n') //check if the character is blank
{
reverse(); //if blank call the method reverse() again to get get input which is not blank
printf("%c",c); //it will print the character from last letter to first when it is not blank
}
}
void main()
{
printf("\nenter a string: "); //skips a line and asks user to enter a string
reverse(); //calls method reverse()
getch();
}