C语言学习03

1,猴子吃桃问题,猴子第一天摘下若干个桃子,当即吃一半,不过瘾,又吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了,求第一天共摘了多少?

#include <stdio.h>
int main(){
	int day,x1,x2;
	day=9;
	x2=1;
	while(day>0){
		x1=(x2+1)*2;
		x2=x1;
		day--;
	}
	printf("共摘了%d个桃子\n",x1);
} 

2,两个乒乓球队进行比赛,各出3个队,甲队为a,b,c三个人,乙队为x,y,z三人,已经抽签决定比赛名单,有人问比赛队员打听比赛名单,a说他不和x比,c说他不和x,z比,请找出三队赛手的名单。

#include <stdio.h>
int main(){
	char i,j,k;//i是a的对手, j是b的对手, k是c的对手
	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("比赛顺序是:a---%c\tb---%c\tc---%c\n",i,j,k);
			}
		}
	} 
} 

3,打印图形
*
***
*****
*******
*****
***

#include <stdio.h>
int main(){
	int i,j,k;
	for(i=0;i<=3;i++){
		for(k=0;k<=2*i;k++)
		  printf("*");
		printf("\n");
	}
	for(i=0;i<=2;i++){
		for(k=0;k<=4-2*i;k++)
		  printf("*");
		printf("\n");
	}
}

4,求出2/1,3/2,5/3,8/5,13/8,21/13...前20项的和。

#include <stdio.h>
int main(){
	int n,t,num=20;
	float a=2,b=1,s=0;
	for(n=1;n<=num;n++){
		s=s+a/b;
		t=a;
		a=a+b;
		b=t;
	}
	printf("前20项和为:%.2f\n",s);
} 

5,求出1+2!+3!+...+20!的和。

#include <stdio.h>
int main(){
	float n,s=0,t=1;
	for(n=1;n<=20;n++){
		t*=n;
	    s+=t;
	}
	printf("1+2!+3!+...+20!=%e\n",s);
} 

6,递归求5!。

#include <stdio.h>
int main(){
	int i;
	int fact(int j); 
	for(i=0;i<=5;i++)
	  printf("%d!=%d\n",i,fact(i));
} 
int fact(int j){
	int sum;
	if(j==0)
	  sum=1;
	else
	  sum=j*fact(j-1);
	return sum;
}

7,将所输入的5个字符,以相反顺序输出 。

#include <stdio.h>
int main(){
	int i=5;
	void palin(int n); 
	printf("请输入5个字符:");
	palin(i);
	printf("\n");
} 
void palin(int n){
	char next;
	if(n<=1){
		next=getchar();
		printf("\n\0:");
		putchar(next);
	}
	else{
		next=getchar();
		palin(n-1);
		putchar(next);
	}
}

8,有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁,问第4个人岁数,他说比第3个人大2岁。问第3个人又说比第2个人大2岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁,问第5个人多大?

#include <stdio.h>
int age(int n){
	int c;
	if(n==1)
	  c=10;
	else
	  c=age(n-1)+2;
	return (c);
} 
int main(){
	printf("第5个人%d岁",age(5));
}

9,给一个不多于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);
} 

10,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");
} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值