For循环应用(例子)2017 2 27 晴

for循环:格式

for(表达式1;表达式2;表达式3)

{

语句

}

难点:枚举法的应用。

eg1:有5个运动员参加10米短跑,有人让他们预测比赛结果

A选手说:B第一,我第三

B说:我第二,E第四

C说:我第一,D第二

D说:C最后,我第三

E说:我第四,A第一。

最后比赛结果出来了,每位选手都说对了一半,请编程求出比赛结果。

#includevoid main()

{

int A,B,C,D,E;

for(A=1;A<=5;A++)

for(B=1;B<=5;B++)

for(C=1;C<=5;C++)

for(D=1;D<=5;D++)

for(E=1;E<=5;E++)

if(

B==1||A==3

&&B==2||E==4

&&C==1||D==2

&&C==5||D==3

&&E==4||A==1

)

printf("A:%d B%d C%d D%d E%d\n",A,B,C,D,E);

}

注意:逻辑思维;

注重方法积累


eg2猴子吃桃:猴子第一天的时候摘了若干个桃子,当即吃了一半多一个,第二天又吃了剩下的一半多一个,以后每天都吃剩下的一半多一个,等到第6天想吃桃子的时候,发现只剩下一个,问第一天一共摘了多少个桃子。

分析:

6: 1   5:(1+1)*2    4:(4+1)*2  3:(10+1)*2   2:(22+1)*2    1:(46+1)*2

#include

void main()

{

int d,n=1;

for(d=5;d>=1;d--)

n=(n+1)*2;

printf("n=%d\n",n);

}


eg3百钱买百鸡:一百块买一百鸡,3/公,2/母,2只/块。

问:怎样一百块钱买一百只鸡。

#include

void main()

{

int g,m,x;

for(g=1;g<=33;g++)

for(m=1;m<=50;m++)

{

x=100-g-m;

if((3*g+2*m+x/2==100) && x%2==0)

printf("g:%d m:%d x:%d\n",g,m,x);

}

}

注意:同36块砖36个人。



eg4有一个八层妖塔,每一层的妖怪都是上一层的2倍,一共有765个妖怪,问,第一层和最后一层分别有多少个妖怪

#include

void main()

{

int m=1,n=1,i,sum;

for(n=1;n<10;n++)

{

m=n;

sum=n;

for(i=7;i<=1;i--)

{

m=m*2;

sum=sum+m;

}

if(sum==765)

{

printf("m=%d n=%d\n",m,n);

break;

}

}

}


eg5统计从键盘输入的有效字符的个数,就是第一个空格键之前的字符,如果没有空格符,就是回车之前的所有字符。

#include<>

void main()

{

char c;

int i=0;

while(getchar()!='\n')

{

if(c==' ')

break;

i++;

}

printf("%d\n",i);

你可能感兴趣的:(For循环应用(例子)2017 2 27 晴)