题目21
利用递归方法求n!
/*利用递归方法求n!*/
#include<stdio.h>
int fact(int n){
int sum ;
if(n==1){
sum = 1;
}
else{
sum = n*fact(n-1);
}
return sum;
}
int main(){
int n;
printf("求n!,请输入n。\n");
scanf("%d",&n);
int sum;
sum = fact(n);
printf("\n求解得:%d",sum);
return 0;
}
题目22
利用递归函数调用方式,将所输入的字符,以相反顺序打印出来。
/*利用递归函数调用方式,将所输入的字符,以相反顺序打印出来。
注:实际上就是不断调用函数,然后在最后的时候输出。
*/
#include<stdio.h>
void fan(){
char next;
next = getchar();
if(next !='\n'){
fan();
}
printf("%c",next);
}
int main(){
printf("请输入一段字符\n");
fan();
return 0;
}
题目23
有5个人坐在一起,
问第五个人多少岁?他说比第4个人大2岁。
问第4个人岁数,他说比第3个人大2岁。
问第三个人,又说比第2人大两岁。
问第2个人,说比第一个人大两岁。
最后问第一个人,他说是10岁。请问第五个人多大?
/*有5个人坐在一起,
问第五个人多少岁?他说比第4个人大2岁。
问第4个人岁数,他说比第3个人大2岁。
问第三个人,又说比第2人大两岁。
问第2个人,说比第一个人大两岁。
最后问第一个人,他说是10岁。请问第五个人多大?*/
#include<stdio.h>
void plus_2(int per,int n){
if(n!=1){
per = per + 2;
plus_2(per,n-1);
}
else
printf("%d\n",per);
}
int main(){
int per;
plus_2(10,5);
return 0;
}
题目24
给一个不多于5位的正整数,
要求:一、求它是几位数,二、逆序打印出各位数字。
/*给一个不多于5位的正整数,
要求:一、求它是几位数,二、逆序打印出各位数字。*/
#include <stdio.h>
int main()
{
int i,j,k,count=0;
printf("请输入一个不多于5位的正整数:\n");
scanf("%d",&i);
printf("逆序为:");
for(j=1;j<=5;j++)
{
k=i%10;
i=i/10;
count++;
printf("%d ",k);
if(i==0)
{
break;
}
}
printf("\n是 %d 位数\n",count);
return 0;
}
题目25
给出一个数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
/*一个数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。*/
#include<stdio.h>
int main(){
long int n;
printf("请输入一个数字,数字不要超过10位 ,否则会判断错误\n");
scanf("%ld",&n);
long int sum;
sum = 0;
long int i;
for(i=n; i>0 ; i = i/10){
sum = sum*10 + i%10;
}
if(sum == n){
printf("\n %ld 是回文数",n);
}
else{
printf("\n %ld 不是回文数",n);
}
}