C 练习实例27
题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
程序分析:无。
实例
// Created by www.runoob.com on 15/11/9.
// Copyright © 2015年 菜鸟教程. All rights reserved.
//
#include <stdio.h>
int main()
{
int i=5;
void palin(int n);
printf("请输入5个字符\40:\40");
palin(i);
printf("\n");
}
void palin(n)
int n;
{
char next;
if(n<=1) {
next=getchar();
printf("相反顺序输出结果\40:\40");
putchar(next);
} else {
next=getchar();
palin(n-1);
putchar(next);
}
}
以上实例输出结果为:
请输入5个字符 : abcde 相反顺序输出结果 : edcba
C 语言经典100例
永恒的灯火
163***3217@qq.com
参考方法:
#include<stdio.h> void fun(char* s,int length) { if (length >= 1) { printf("%c\n", s[length - 1]); fun(s, length - 1); } } int main() { char* s = "hello"; int length = 5; fun(s, length); return 0; }永恒的灯火
163***3217@qq.com
斜阳
553***353@qq.com
参考方法:
#include <stdio.h> void f() { char ch; if((ch=getchar())!='\n') { f(); } if(ch!='\n') { printf("%c",ch); } } void main() { printf("请输入字符: "); f(); }斜阳
553***353@qq.com
HIT_CCC
117***2963@qq.com
参考方法:
#include<stdio.h> void Print(char a[], int n) { if(n >= 0) { printf("%c",a[n]); Print(a,n - 1); } } int main(void) { char a[5]; printf("请输入5个字符 :"); for(int i = 0; i < 5; i++) scanf("%c",&a[i]); printf("相反顺序输出结果 : "); Print(a,4); return 0; }HIT_CCC
117***2963@qq.com
socbis
975***651@qq.com
/* * * 题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。 * * */ #include<stdio.h> #include<string.h> int reverse(int num, char* chr) { int head = 0,tail = num - 1; int counter = num / 2; counter--; if(counter < 0) return 0; else { *(chr + head) ^= *(chr + tail); *(chr + tail) ^= *(chr + head); *(chr + head) ^= *(chr + tail); } return reverse(num - 2,chr + 1 ); } int main() { char buf[6] = {0}; printf("请输入5个字符:"); fgets(buf, 6, stdin); reverse(strlen(buf),buf); printf("倒叙输出结果为:%s\n\n",buf); return 0; }socbis
975***651@qq.com
B站“思考的数学”
wei***chen@163.com
菜鸟提供的解法没问题,笔记中的有些方法好象不是纯正的递归。
纯正的递归应该是退出的时候一个一个打印,刚好达到反序的目的。
#include <stdio.h> #include <stdlib.h> #define N 5 int ni(char *p,int n) { if(n==0) return 0; ni(p,n-1); printf("%c\n",p[N-n]); // 在退出的时候再打印,刚好达到反序的目的 return 0; } int main() { char a[N+1]="abcde"; ni(a,N); system("pause"); return 0; }B站“思考的数学”
wei***chen@163.com
difficult is simple
257***9013@qq.com
个人认为该方法更简单易懂:
#include <stdio.h> int main() { char a[5]; void reverse(char a[], int n); int i; printf("please input five letters:\n"); for(i = 0; i < 5; i++) { a[i] = getchar(); } reverse(a, 5); } void reverse(char a[], int n) { char text; if(n > 1) { printf("%c", a[n - 1]); reverse(a, n - 1); } if(n == 1) { printf("%c\n", a[n - 1]); } }由该方法可知:任何循环都可有递归实现。
difficult is simple
257***9013@qq.com