📄 21.html
字号:
<html>
<head>
<title>C程序设计21-30</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link rel="stylesheet" href="cc.css" type="text/css">
</head>
<body bgcolor="#6666FF" text="#FFFFFF" link="#99FF33" alink="#00CC00" vlink="#FFFF00">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="21%"> </td>
<td>
<div align="center"><br>
<font color="#FFFF00" size="5"><span class="unnamed1">经典c程序100例==21--30
</span></font> </div>
<p class="unnamed1">【程序21】<br>
题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个<br>
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下<br>
的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。<br>
1.程序分析:采取逆向思维的方法,从后往前推断。<br>
2.程序源代码:<br>
main()<br>
{<br>
int day,x1,x2;<br>
day=9;<br>
x2=1;<br>
while(day>0)<br>
{x1=(x2+1)*2;/*第一天的桃子数是第2天桃子数加1后的2倍*/<br>
x2=x1;<br>
day--;<br>
}<br>
printf("the total is %d\n",x1);<br>
}<br>
==============================================================<br>
【程序22】<br>
题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定<br>
比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出<br>
三队赛手的名单。 <br>
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,<br>
则表明此数不是素数,反之是素数。 <br>
2.程序源代码:<br>
main()<br>
{<br>
char i,j,k;/*i是a的对手,j是b的对手,k是c的对手*/<br>
for(i='x';i<='z';i++)<br>
for(j='x';j<='z';j++)<br>
{<br>
if(i!=j)<br>
for(k='x';k<='z';k++)<br>
{ if(i!=k&&j!=k)<br>
{ if(i!='x'&&k!='x'&&k!='z')<br>
printf("order is a--%c\tb--%c\tc--%c\n",i,j,k);<br>
}<br>
}<br>
}<br>
}<br>
==============================================================<br>
【程序23】 <br>
题目:打印出如下图案(菱形)</p>
<p class="unnamed1"><span class="unnamed1">*<br>
***<br>
******<br>
********<br>
******<br>
***<br>
*<br>
1.程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重<br>
for循环,第一层控制行,第二层控制列。 <br>
2.程序源代码:<br>
main()<br>
{<br>
int i,j,k;<br>
for(i=0;i<=3;i++)<br>
{<br>
for(j=0;j<=2-i;j++)<br>
printf(" ");<br>
for(k=0;k<=2*i;k++)<br>
printf("*");<br>
printf("\n");<br>
}<br>
for(i=0;i<=2;i++)<br>
{<br>
for(j=0;j<=i;j++)<br>
printf(" ");<br>
for(k=0;k<=4-2*i;k++)<br>
printf("*");<br>
printf("\n");<br>
}<br>
}<br>
==============================================================<br>
【程序24】 <br>
题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。<br>
1.程序分析:请抓住分子与分母的变化规律。 <br>
2.程序源代码:<br>
main()<br>
{<br>
int n,t,number=20;<br>
float a=2,b=1,s=0;<br>
for(n=1;n<=number;n++)<br>
{<br>
s=s+a/b;<br>
t=a;a=a+b;b=t;/*这部分是程序的关键,请读者猜猜t的作用*/<br>
}<br>
printf("sum is %9.6f\n",s);<br>
}<br>
==============================================================<br>
【程序25】 <br>
题目:求1+2!+3!+...+20!的和<br>
1.程序分析:此程序只是把累加变成了累乘。 <br>
2.程序源代码:<br>
main()<br>
{<br>
float n,s=0,t=1;<br>
for(n=1;n<=20;n++)<br>
{<br>
t*=n;<br>
s+=t;<br>
}<br>
printf("1+2!+3!...+20!=%e\n",s);<br>
}<br>
==============================================================<br>
【程序26】 <br>
题目:利用递归方法求5!。<br>
1.程序分析:递归公式:fn=fn_1*4!<br>
2.程序源代码:<br>
#include "stdio.h"<br>
main()<br>
{<br>
int i;<br>
int fact();<br>
for(i=0;i<5;i++)<br>
printf("\40:%d!=%d\n",i,fact(i));<br>
}<br>
int fact(j)<br>
int j;<br>
{<br>
int sum;<br>
if(j==0)<br>
sum=1;<br>
else<br>
sum=j*fact(j-1);<br>
return sum;<br>
}<br>
==============================================================<br>
【程序27】 <br>
题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。<br>
1.程序分析:<br>
2.程序源代码:<br>
#include "stdio.h"<br>
main()<br>
{<br>
int i=5;<br>
void palin(int n);<br>
printf("\40:");<br>
palin(i);<br>
printf("\n");<br>
}<br>
void palin(n)<br>
int n;<br>
{<br>
char next;<br>
if(n<=1)<br>
{<br>
next=getchar();<br>
printf("\n\0:");<br>
putchar(next);<br>
}<br>
else<br>
{<br>
next=getchar();<br>
palin(n-1);<br>
putchar(next);<br>
}<br>
}<br>
==============================================================<br>
【程序28】 <br>
题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第<br>
3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后 <br>
问第一个人,他说是10岁。请问第五个人多大?<br>
1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道<br>
第四人的岁数,依次类推,推到第一人(10岁),再往回推。<br>
2.程序源代码:<br>
age(n)<br>
int n;<br>
{<br>
int c;<br>
if(n==1) c=10;<br>
else c=age(n-1)+2;<br>
return(c);<br>
}<br>
main()<br>
{ printf("%d",age(5));<br>
}<br>
==============================================================<br>
【程序29】 <br>
题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。<br>
1. 程序分析:学会分解出每一位数<br>
2.程序源代码:<br>
main( )<br>
{<br>
long a,b,c,d,e,x;<br>
scanf("%ld",&x);<br>
a=x/10000;/*分解出万位*/<br>
b=x%10000/1000;/*分解出千位*/<br>
c=x%1000/100;/*分解出百位*/<br>
d=x%100/10;/*分解出十位*/<br>
e=x%10;/*分解出个位*/<br>
if (a!=0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a);<br>
else if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b);<br>
else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c);<br>
else if (d!=0) printf("there are 2, %ld %ld\n",e,d);<br>
else if (e!=0) printf(" there are 1,%ld\n",e);<br>
}<br>
==============================================================<br>
【程序30】 <br>
题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。 <br>
1.程序分析:同29例<br>
2.程序源代码:<br>
main( )<br>
{<br>
long ge,shi,qian,wan,x;<br>
scanf("%ld",&x);<br>
wan=x/10000;<br>
qian=x%10000/1000;<br>
shi=x%100/10;<br>
ge=x%10;<br>
if (ge==wan&&shi==qian)/*个位等于万位并且十位等于千位*/<br>
printf("this number is a huiwen\n");<br>
else<br>
printf("this number is not a huiwen\n");<br>
}<br>
</span> </p>
</td>
<td width="21%"> </td>
</tr>
</table>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -