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