如何利用递归的方法 ,使得输入任意的一个字符,实现字符串逆序存放?
发布网友
发布时间:2022-05-29 03:02
我来回答
共2个回答
热心网友
时间:2023-09-18 11:09
程序如下,已通过调试,输入abcdefg,结果为gfedcba,附说明如下:
#include<stdio.h>
int main()
{
char nixu(char *s,char *p);
char s[20],*p;
int i;
scanf("%s",s);//输入一个长度小于20的字符串,由s[20]限定,要改字符串长度就改字符串数组大小
p=s;//将字符串首地址赋给指针p
while(*p!='\0') p++;//让指针一直指到字符串结束符
nixu(s,p);
}
char nixu(char *s,char *p)//通过函数递归倒序输出字符串中字母,直到字符串首地址
{
if(p!=s)
{
p--;
printf("%c",*p);
nixu(s,p);
}
else return 0;
}
热心网友
时间:2023-09-18 11:10
#include<stdio.h>
#include<string.h> /*strcpy()等库函数所在的头文件 */
void reversedisplay(char[],int no); /*函数的声明*/
void main()
{
int index=0; /*显示字符的当前位置 */
char string[81];
strcpy(string,"this is a c program.");
reversedisplay(string,index); /*调用反向显示字符串函数 */
}
void reversedisplay(char s[],int no) /*函数的声明 */
{
if(s[no]) /*遇到 0\字符 时显示结束 */
{
reversedisplay(s,no+1); /*递归调用 */
printf("%c",s[no]); /*反向显示字符串的每个字符 */
}
}
按照递归实现一个字符串的逆序输出。 如输入一个字符串12345,输出为5432...
include<stdio.h> include<string.h> void reverse(char *s,int length){ if(length==1){ printf("%c",s[0]);}else{ reverse(&s[1],length-1);reverse(&s[0],1);} } void main(){ char input[]="1720470234";puts(input);int l=strlen(input);reverse(input,l);printf("\n"...
用vc编写一个递归函数,将一个字符串按其逆序输出。
gets(szStr);Rever(szStr,strlen(szStr)-1);}
c语言把字符串反序
这是利用递归的算法把数组的里的数据逆序输出而已,并没有真正的改变数组里面数据的顺序。程序的意思是这样的,先从第一个值 i 解释,该子函数第一个语句是先输出 a[i] , 然后再调用子函数本身输出 a[i-1] ,一次类推,知道 i<1时不再调用子函数,即程序结束。程序的效果就是逆序输...
C语言。输入一个字符串按反方向存放,并将其输出。怎样编写这个程序?
/*递归方式逆序存储字符串,将逆序内容写入fw底层流文件*/ void rev(char * src, int fw){ if (!src || fw < 1) return ;if (!*src) return ; /*如果字符串结束则返回*/ rev(src + 1, fw); /*递归到下一个字符地址*/ write(fw, src, 1); /*递归返回后将字符写入管道*/ } ...
java题,急求!编写递归方法reverse(int n)实现将整数n逆序输出, 例如输入...
输出的为字符串 按 reverse(int n)=“”+n%10 +reverse(n/10) 调用即可 public String reverse(int n){ if(n<10)return ""+n; else return ""+(n%10)+reverse(n/10);}
求任意正整数的位数,每一位数字,各位数字的逆序打印
楼顶仁兄用字符串处理是最简单的,但是题目3是要求用递归- - 这里我给出问题3的答案 include <stdio.h> void main(){ void proc(int n);int n;scanf("Input n:%d",n);proc(n);void proc(int n) //递归函数 { if(n\10==0) //n剩一位数字 { printf("%d",n);return();}...
逆序打印字符串(用递归实现) 的小问题
include <cstring> using namespace std;char * Reverse(char * s,int left,int right){ if(left >= right)return s;char temp = s[left];s[left] = s[right];s[right] = temp;return Reverse(s,left+1,right-1);} int main(){ char s[100] = "liming";char *res_str;res_...
关于C++的一道题,编写函数reverse(char *s),用递归算法使字符串...
include <iostream> include <cstring> using namespace std;void reverse(char *s){ int N;char b[]N=strlen(b);s=b;s=s+N;s++;N--;reverse(s);} void main(){ char a[13];cout <<"输入字符串:";cin >> a;cout <<"逆序前为:"<< a <<endl;reverse(a);cout <<"逆序后...
编写程序,从键盘输入一个三位数,求出其逆序数并输出,例如输入123,输出32...
public class Main{ //输入整数后,逆序输出为字符串,通过递归实现 public static String reverse(int a){ if(a<0)return"";if(a<10)return Integer.toString(a);int last=a-(a/10)*10;//取得这个整数的最后一位 return Integer.toString(last)+reverse(a/10);//递归输出最后一位和前面的...
C语言编写程序 :输入一个正整数,将其逆序输出。例如,输入12345,输出54321...
i++){ a = num % 10;printf("%d",a);num = num/10;} return 0;} 分析:首先,输入的是一个整数,因此最前面一位数不是零,所以我们可以用除10取余法写。a = num % 10 就是输出数字的最后一位 然后除10剔除数字最后一位,这样数字倒数第二位就会输出。以此类推,就能逆序输出数字。