Description/描述
将输入的一个字符串s逆序输出。
编写函数recursive()完成程序:
原型:int recursive();
功能:用递归的方法读取输入,并且逆序输出。
函数的调用格式见“Append Code”。
Invalid Word(禁用单词)错误:在解决这个题目时,某些关键词是不允许被使用的。如果提交的程序中包含了下列的关键词之一,就会产生这个错误。
被禁用的关键字:循环语句for、while,甚至包括分支语句的switch、case、goto。
被禁用的头文件:string.h、stdlib.h。
被禁用的库函数:scanf、printf、gets、puts、malloc、calloc、strcpy、memcpy等。
被禁用的字符: “%”、“*”、“[”和“]”。
你几乎不能使用大多数的控制语句和输入输出函数,甚至数组和指针都被禁用了。
Input/输入
输入为一个串s,最少有一个字符。输入以EOF结尾,EOF不是串的内容。
Output/输出
输出为串s的逆序。
Sample Input/示例输入
abcde
Sample Output/示例输出
edcba
Append Code/追加代码
int main()
{
recursive();
return 0;
}
示例代码
#include<stdio.h>
int recursive()
{
char ch;
ch=getchar();//输入
if(ch==EOF)//或者else
return 0;
recursive();//递归
putchar(ch);//输出
}
int main()
{
recursive();
return 0;
}
更新
求逆序的问题数组方法
#include<stdio.h>
#include<string.h>
void aa(char a[],int n){
if(a[n]=='\0')//结束标志
return;
aa(a,n+1);
putchar(a[n]);
}
int main()
{
char ch[10];//定义数组长度
gets(ch);//读入
aa(ch,0);//传到递归里面进行逆序
return 0;
}
不输出前导零
#include <stdio.h>
int flag=-1;
void inverse(int n) {
if (n == 0)
return;
if (n % 10 != 0){
printf("%d", n % 10);
flag=1;
}
if(flag==1&&n%10==0)
printf("0");
inverse(n / 10);
}
int main()
{
int n;
scanf("%d", &n);
inverse(n);
return 0;
}