21.题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 , 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第 10 天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
void fun21()
{
int i,peaches=1;
for(i=1;i<10;i++)
{
peaches=2*(peaches+1);
}
printf("%d\n",peaches);
}
22.两个乒乓球队进行比赛,各出三人。甲队为 a,b,c三人,乙队为 x,y,z三人。已抽签决 定比赛名单。有人向队员打听比赛的名单。a说他不和 x 比,c 说他不和 x,z 比,请编程序 找出三队赛手的名单。
void fun22()
{
char i,j,k;
for(i='x';i<='z';i++)
for(j='x';j<='z';j++)
{
if(i!=j)
{
for(k='x';k<='z';k++)
{
if(i!=k&&j!=k)
if(i!='x'&&k!='x'&&k!='z')
printf("the battle:a-%c,b-%c,c-%c\n",i,j,k);
}
}
}
}
23.题目:打印出如下图案(菱形)
*
***
******
********
******
***
*
void fun23()
{
int i,j,k;
for(i=0;i<=3;i++)
{
for(j=0;j<=2-i;j++)
printf("");
for(k=0;k<=2*i;k++)
printf("*");
printf("\n");
}
for(i=0;i<=2;i++)
{
for(j=0;j<=i;j++)
printf("");
for(k=0;k<=4-2*i;k++)
printf("*");
printf("\n");
}
}
24.:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20 项之和。
void fun24()
{
float a=2,b=1;
float t,item,s=0;
for(int i=0;i<20;i++)
{
item=a/b;
t=a;
a=a+b;
b=t;
s+=item;
}
printf("the sum is %2f.\n",s);
}
25.求 1+2!+3!+…+20!的和 。
同样要注意item初始化值。
void fun25()
{
double s=0,item=1;
int i,j;
for(i=1;i<=20;i++)
{
for(j=1;j<=i;j++)
{
item*=j;
}
s+=item;
item=1;
}
printf("the sum is %lf.\n",s);
}
26.递归法求5!
int fun26(int n)
{
if(n>1)
return n*fun26(n-1);
else
return 1*n;
}
test.cpp
void main()
{
int s;
s=fun26(5);
printf("%d\n",s);
}
运行结果:
27.利用递归函数调用方式,将所输入的 5个字符,以相反顺序打印出来。
test.cpp
void main()
{
int i=5;
fun27(i);
printf("\n");
}
void fun27(int n)
{
char next;
if(n<=1)
{
next=getchar();
printf("\n\0");
putchar(next);
}
else
{
next=getchar();
fun27(n-1);
putchar(next);
}
}
28.题目:有 5个人坐在一起,问第五个人多少岁?他说比第 4个人大 2岁。问第 4个人岁数, 他说比第 3个人大 2岁。问第三个人,又说比第2 人大两岁。问第2个人,说比第一个人大 两岁。最后问第一个人,他说是 10岁。请问第五个人多大?
test.cpp
void main()
{
int s=0;
s=fun28(5);
printf("%d\n",s);
}
int fun28(int n)
{
int sum=0;
if(n>1)
sum=fun28(n-1)+2;
else
return 10;
}
29.给一个不多于 5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
void fun29()
{
int n,t=0,count=0;
printf("enter a number(less than 100000):\n");
scanf("%d",&n);
while(n>0)
{
count++;
t=t*10+n%10;
n=n/10;
}
printf("他是%d位数,逆序:%d\n",count,t);
}
30.一个5 位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千 位相同。
void fun30()
{
int n;
printf("enter a number:(less than 100000):\n");
scanf("%d",&n);
int ge,shi,qian,wan;
wan=n/10000;
qian=n%10000/1000;
shi=n%100/10;
ge=n%10;
if(wan==ge&&qian==shi)
printf("Yes\n");
else
printf("No\n");
}