求解的问题描述:36块砖,男搬4,女搬3,两个小孩抬一块砖,要求一次搬完,问男人、女人和小孩各需多少人?
求解思路:用for循环嵌套3层,定义3个变量:i,j,k,分别代表男,女和小孩。每层循环最大数都是砖的总数即可,最最内层的for循环再用if条件判断语句实现男搬多少砖+女搬多少砖+小孩搬多少砖=砖的总数。
代码如下:
代码方案(一):
#include<stdio.h>
int main()
{
int i,j,k;
for(i=1;i<=36;i++){
for(j=1;j<=36;j++){
for(k=1;k<=36;k++){
if(((4*i+3*j+0.5*k)==36))printf("男的有%d个,女的有%d个,小孩有%d个。\n",i,j,k);
}
}
}
}
代码运行结果截图:
代码方案(二):
#include<stdio.h>
int main()
{
int i,j,k;
for(i=0;i<35;i++){
for(j=0;j<35;j++){
for(k=0;k<35;k++){
if(((4*i+3*j+0.5*k)==36))printf("男的有%d个,女的有%d个,小孩有%d个。\n",i,j,k);
}
}
}
}
代码运行结果截图:
完善代码(主要是统计出总的搬砖方案个数,即加入统计方案个数功能):
#include<stdio.h>
int main()
{
int i,j,k;
int b=0;
for(i=1;i<=36;i++){
for(j=1;j<=36;j++){
for(k=1;k<=36;k++){
if(((4*i+3*j+0.5*k)==36)){
printf("男的搬砖的有%d个,女的搬砖的有%d个,小孩子搬砖的有%d个。\n",i,j,k);
b=b+1;
}
}
}
}
printf("以上搬砖方案共有:%d种\n",b);
}
完善后的代码运行结果截图: