题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
程序分析:见下面注释。
#include
int main()
{float h,s;h=s=100;h=h/2; //第一次反弹高度for(int i=2;i<=10;i++){s=s+2*h;h=h/2;}printf("第10次落地时,共经过%f米,第10次反弹高%f米\n",s,h);return 0;
}
以上实例输出结果为:
第10次落地时,共经过299.609375米,第10次反弹高0.097656米
题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下 的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
程序分析:采取逆向思维的方法,从后往前推断。
1) 设x1为前一天桃子数,设x2为第二天桃子数, 则:
x2=x1/2-1, x1=(x2+1)*2
x3=x2/2-1, x2=(x3+1)*2
以此类推: x前=(x后+1)*2
2) 从第10天可以类推到第1天,是一个循环过程。
#include
#include
int main(){int day, x1 = 0, x2;day=9;x2=1;while(day>0) {x1=(x2+1)*2; // 第一天的桃子数是第2天桃子数加1后的2倍x2=x1;day--;}printf("总数为 %d\n",x1);return 0;
}
以上实例输出结果为:
总数为 1534
题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
#include
#include int main()
{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("顺序为:a--%c\tb--%c\tc--%c\n",i,j,k);}}}}}}
}
以上实例输出结果为:
顺序为:a--z b--x c--y