c语言上机100例_part03

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");

}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值