目录
题目:
代码展示:
问1(while):
问2(do-while):
问3(嵌套for循环):
题目:
目标:100匹马驮100批货;
假设:大马一匹驮3担,中马一匹驮2担,小马两匹驮一担;
组合方法1:大马、中马、小马每种不能少于一匹;
组合方法2:对马匹种类无限制,可以缺少一种或者缺少两种;
问题:
1、采用组合方法1,用while求解,输出所有组合和组合的总数。
2、采用组合方法2,用do-while求解,输出所有组合和组合的总数。
3、采用组合方法2,用三重或二重for循环求解,输出所有组合法和组合的总数。
代码展示:
问1(while):
#include
int main()
{
int x=1,y=1,z=2,sum1=0,sum2=0;
int count=0;
while(x<33)
{
sum1=x+y+z;
sum2=3*x+2*y+(z/2);
if(sum1==100&&sum2==100)
{
printf("需要%d批大马 %d批的中马 %d批小马n",x,y,z);
count++;
}
z+=2;
if(sum1>100)
{
y++;
z=2;
}
if(y>50)
{
x++;
y=1;
z=2;
}
}
printf("一共有%d种组合法",count);
return 0;
}
问2(do-while):
#include
int main()
{
int x=0,y=0,z=0,sum1=0,sum2=0;
int count=0;
do
{
sum1=x+y+z;
sum2=3*x+2*y+(z/2);
if(sum1==100&&sum2==100)
{
printf("需要%d批大马 %d批的中马 %d批小马n",x,y,z);
count++;
}
z+=2;
if(sum2>100||sum1>100)
{
y++;
z=0;
}
if(y>50)
{
x++;
y=0;
z=0;
}
}while(x<33);
printf("一共有%d种组合法",count);
return 0;
}
问3(嵌套for循环):
#include
int main()
{
int x=0,y=0,z=0,sum1=0,sum2=0;
int count=0;
for(;x<33;)
{
for(;y<50;)
{
sum1=x+y+z;
sum2=3*x+2*y+(z/2);
if(sum1==100&&sum2==100)
{
printf("需要%d批大马 %d批的中马 %d批小马n",x,y,z);
count++;
}
z+=2;
if(sum2>100||sum1>100)
{
y++;
z=0;
}
if(y==49)
{
x++;
y=0;
z=0;
break;
}
}
}
printf("一共有%d种组合法",count);
return 0;
}
#includeint main() { int x=1,y=1,z=2,sum1=0,sum2=0; int count=0; while(x<33) { sum1=x+y+z; sum2=3*x+2*y+(z/2); if(sum1==100&&sum2==100) { printf("需要%d批大马 %d批的中马 %d批小马n",x,y,z); count++; } z+=2; if(sum1>100) { y++; z=2; } if(y>50) { x++; y=1; z=2; } } printf("一共有%d种组合法",count); return 0; }
问2(do-while):
#include
int main()
{
int x=0,y=0,z=0,sum1=0,sum2=0;
int count=0;
do
{
sum1=x+y+z;
sum2=3*x+2*y+(z/2);
if(sum1==100&&sum2==100)
{
printf("需要%d批大马 %d批的中马 %d批小马n",x,y,z);
count++;
}
z+=2;
if(sum2>100||sum1>100)
{
y++;
z=0;
}
if(y>50)
{
x++;
y=0;
z=0;
}
}while(x<33);
printf("一共有%d种组合法",count);
return 0;
}
问3(嵌套for循环):
#include
int main()
{
int x=0,y=0,z=0,sum1=0,sum2=0;
int count=0;
for(;x<33;)
{
for(;y<50;)
{
sum1=x+y+z;
sum2=3*x+2*y+(z/2);
if(sum1==100&&sum2==100)
{
printf("需要%d批大马 %d批的中马 %d批小马n",x,y,z);
count++;
}
z+=2;
if(sum2>100||sum1>100)
{
y++;
z=0;
}
if(y==49)
{
x++;
y=0;
z=0;
break;
}
}
}
printf("一共有%d种组合法",count);
return 0;
}
#includeint main() { int x=0,y=0,z=0,sum1=0,sum2=0; int count=0; for(;x<33;) { for(;y<50;) { sum1=x+y+z; sum2=3*x+2*y+(z/2); if(sum1==100&&sum2==100) { printf("需要%d批大马 %d批的中马 %d批小马n",x,y,z); count++; } z+=2; if(sum2>100||sum1>100) { y++; z=0; } if(y==49) { x++; y=0; z=0; break; } } } printf("一共有%d种组合法",count); return 0; }



