- 2
- 0
- 约3.26千字
- 约 6页
- 2017-08-25 发布于河南
- 举报
经典C语言程序设计100例(三)
【程序21】
题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
1.程序分析:采取逆向思维的方法,从后往前推断。
2.程序源代码:
main()
{
int day,x1,x2;
day=9;
x2=1;
while(day0)
{x1=(x2+1)*2;/*第一天的桃子数是第2天桃子数加1后的2倍*/ x2=x1;
day--;
}
printf(the total is %d\n,x1);
}
?
【程序22】
?
题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。
2.程序源代码:
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!=kj!=k)
{ if(i!=xk!=xk!=z)
printf(order is a--%c\tb--%c\tc--%c\n,i,j,k);
}
}
}
}
?
【程序23】
?
题目:打印出如下图案(菱形)
?
*
***
******
********
******
***
*
1.程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重for循环,第一层控制行,第二层控制列。
2.程序源代码:
main()
{
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项之和。
1.程序分析:请抓住分子与分母的变化规律。
2.程序源代码:
main()
{
int n,t,number=20;
float a=2,b=1,s=0;
for(n=1;n=number;n++)
{
s=s+a/b;
t=a;a=a+b;b=t;/*这部分是程序的关键,请读者猜猜t的作用*/ }
printf(sum is %9.6f\n,s);
}
?
【程序25】
?
题目:求1+2!+3!+...+20!的和
1.程序分析:此程序只是把累加变成了累乘。
2.程序源代码:
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);
}
?
【程序26】
?
题目:利用递归方法求5!。
1.程序分析:递归公式:fn=fn_1*4!
2.程序源代码:
#i nclude stdio.h
main()
{
int i;
int fact();
for(i=0;i5;i++)
printf(\40:%d!=%d\n,i,fact(i));
}
int fact(j)
int j;
{
int sum;
if(j==0)
sum=1;
else
sum=j*fact(j-1);
return sum;
}
?
【程序27】
?
题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
1.程序分析:
2.程序源代码:
#i nclude stdio.h
main()
{
int i=5;
void palin(int n);
printf(\40:);
palin(i);
printf(\n);
}
void palin(n)
int n;
{
char next;
if(n=1)
{
next=getchar();
printf(\n\0:);
putchar(next);
}
else
{
next=getchar(
原创力文档

文档评论(0)