C语言搬砖问题?

Python015

C语言搬砖问题?,第1张

男3人,女3人,小孩30人。

代码:

#include<stdio.h>

int main(){

int man=0,women=0,child=0

for (man=0man<=9man++){

for(women=0women<=12women++){

if((36-man-women)%2==0 &&(4*man+3*women+(36-man-women)/2)==36)

printf("男%d人,女%d人,小孩%d人\n",man,women,36-man-women)

}

}

return 0

}

扩展资料:

C语言语法结构

顺序结构:

顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。

例如:a = 3,b = 5,现交换a,b的值,这个问题就好像交换两个杯子里面的水,这当然要用到第三个杯子,假如第三个杯子是c,那么正确的程序为:c = a; a = b; b = c;执行结果是a = 5,b = c = 3。

不过大多数情况下顺序结构都是作为程序的一部分,与其它结构一起构成一个复杂的程序,例如分支结构中的复合语句、循环结构中的循环体等。

选择结构:

顺序结构的程序虽然能解决计算、输出等问题,但不能做判断再选择。对于要先做判断再选择的问题就要使用选择结构。

选择结构适合于带有逻辑或关系比较等条件判断的计算,设计这类程序时往往都要先绘制其程序流程图,然后根据程序流程写出源程序,这样做把程序设计分析与语言分开,使得问题简单化,易于理解。程序流程图是根据解题分析所绘制的程序执行流程图。

循环结构可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构,C语言中提供四种循环,即goto循环、while循环、do while循环和for循环。

一般不提倡用goto循环,因为强制改变程序的顺序经常会给程序的运行带来不可预料的错误。

特别要注意在循环体内应包含趋于结束的语句(即循环变量值的改变),否则就可能成了一个死循环,这是初学者的一个常见错误。

for(表达式1表达式2表达式3)循环体语句 。(其中;不能省略)

参考资料来源:百度百科-C语言

算法:4x+3y+z=36x+y+z=36x,y,z属于小于36的正整数由于36个人搬,所以x不会大于9,y不会大于12,z不会大于36所以直到测试完三个条件才算考虑完毕所有情况为了简化思路,将三个条件分开首先固定x,如果x不大于9则开始循环 固定y不断计算z的值,若y值大于13则将x值增加并继续循环 若z大于36则将y值增加并且继续循环,每测试完一组值就记录在一个结构体里面每记录完一个结构体就自增计数器并且将结构体放到最后计算完毕之后返回结构体代码:#include <stdio.h>typedef struct cdt{ int x,y,z,*num struct cdt next}*adtadt fun(adt link){ adt lk=linkint x,y,zfor(x=1x!=10++x){ for(y=1y!=13++y){for(z=1z!=37++z){ if((36-4x-3y)>=1){if((z==(36-4x-3y))&&(z==(36-x-y))){lk->next =(adt)malloc(sizeof(struct cdt))lk->x=x,lk->y=y,lk->z=z,*(lk->num)++lk=lk->next } } } } } lk->next=null return link}int main(void){ adt link=(adt)malloc(sizeof(stuct cdt))link->num=(int *)malloc(sizeof(int))*link->num=0 link->next=null link=fun(link) //自己出来结果。}