题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
#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
题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。
#include <stdio.h>int age(n)
int n;
{int c;if(n==1) c=10;else c=age(n-1)+2;return(c);
}
int main()
{printf("%d\n",age(5));
}
以上实例输出结果为:18
题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
程序分析:学会分解出每一位数,如下解释。
#include <stdio.h>int main( )
{long a,b,c,d,e,x;printf("请输入 5 位数字:");scanf("%ld",&x);a=x/10000; /*分解出万位*/b=x%10000/1000; /*分解出千位*/c=x%1000/100; /*分解出百位*/d=x%100/10; /*分解出十位*/e=x%10; /*分解出个位*/if (a!=0){printf("为 5 位数,逆序为: %ld %ld %ld %ld %ld\n",e,d,c,b,a);} else if(b!=0) {printf("为 4 位数,逆序为: %ld %ld %ld %ld\n",e,d,c,b);} else if(c!=0) {printf("为 3 位数,逆序为:%ld %ld %ld\n",e,d,c);} else if(d!=0) {printf("为 2 位数,逆序为: %ld %ld\n",e,d);} else if(e!=0) {printf("为 1 位数,逆序为:%ld\n",e);}
}
以上实例输出结果为:
请输入 5 位数字:12345 为 5 位数,逆序为: 5 4 3 2 1
题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
程序分析:学会分解出每一位数。
#include <stdio.h>int main( )
{long ge,shi,qian,wan,x;printf("请输入 5 位数字:");scanf("%ld",&x);wan=x/10000; /*分解出万位*/qian=x%10000/1000; /*分解出千位*/shi=x%100/10; /*分解出十位*/ge=x%10; /*分解出个位*/if (ge==wan&&shi==qian) { /*个位等于万位并且十位等于千位*/printf("这是回文数\n");} else {printf("这不是回文数\n");}
}
以上实例输出结果为:
请输入 5 位数字:12321 这是回文数请输入 5 位数字:12345 这不是回文数