for循環(huán):格式
for(表達(dá)式1;表達(dá)式2;表達(dá)式3)
{
語句
}
難點(diǎn):枚舉法的應(yīng)用容劳。
eg1:有5個(gè)運(yùn)動員參加10米短跑喘沿,有人讓他們預(yù)測比賽結(jié)果
A選手說:B第一,我第三
B說:我第二,E第四
C說:我第一竭贩,D第二
D說:C最后蚜印,我第三
E說:我第四,A第一留量。
最后比賽結(jié)果出來了窄赋,每位選手都說對了一半哟冬,請編程求出比賽結(jié)果。
#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猴子吃桃:猴子第一天的時(shí)候摘了若干個(gè)桃子柒傻,當(dāng)即吃了一半多一個(gè),第二天又吃了剩下的一半多一個(gè)较木,以后每天都吃剩下的一半多一個(gè),等到第6天想吃桃子的時(shí)候青柄,發(fā)現(xiàn)只剩下一個(gè)伐债,問第一天一共摘了多少個(gè)桃子。
分析:
6: 1 ? 5:(1+1)*2 ? ?4:(4+1)*2 ?3:(10+1)*2 ? 2:(22+1)*2 ? ?1:(46+1)*2
#include <stdio.h>
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 <stdio.h>
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個(gè)人双戳。
eg4有一個(gè)八層妖塔虹蒋,每一層的妖怪都是上一層的2倍,一共有765個(gè)妖怪飒货,問魄衅,第一層和最后一層分別有多少個(gè)妖怪
#include<stdio.h>
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統(tǒng)計(jì)從鍵盤輸入的有效字符的個(gè)數(shù),就是第一個(gè)空格鍵之前的字符塘辅,如果沒有空格符晃虫,就是回車之前的所有字符。
#include<>
void main()
{
char c;
int i=0;
while(getchar()!='\n')
{
if(c==' ')
break;
i++;
}
printf("%d\n",i);