关于c语言程序问题,求各位c语言爱好者和大神们相助,具体的请看补充问题!!万分感谢!

有这个方程x+y+z=1。规定x,y,z都是取小数点后一位的数,即x可以等于0.1,0.2,0.3到0.9。y,z和x的取值方式一样。现在求一个c语言程序,使x*0.2+... 有这个方程x+y+z=1。规定x,y,z都是取小数点后一位的数,即x可以等于0.1,0.2,0.3到0.9。y,z和x的取值方式一样。现在求一个c语言程序,使x*0.2+y*0.5+z*0.6的值最大。(以及怎么推广到不止xyz三个数,比如有四个数的和等于1,那么程序又是怎么写哦。*表示乘号哈)求各位c语言爱好者即大神帮帮我,小弟万分感谢,难于言表!!! 展开
 我来答
正峰雅T
2012-11-29
知道答主
回答量:11
采纳率:0%
帮助的人:7.9万
展开全部
最简单的方法就是用循环来写 x y z分别循环然后判断哪组符合约束条件取值最大
#include<stdio.h>
int main()
{
double x,y,z,max,sum;
max=sum=0.0;
for(x=0.1;x<=0.9;x=x+0.1)
for(y=0.1;y<=0.9;y=y+0.1)
for(z=0.1;z<=0.9;z=z+0.1)
{sum=x*0.2+y*0.5+z*0.6;
if(max<=sum)
max=sum;
}
printf("%lf\n",max);
}
至于那个四个数和等于1的那个 就是在判断是否最大的时候加一个约束条件 就是x+y+z+k是否等于一 等于就将值给max
我也是新手 只能用这种笨方法了 还有就是用数学只是 就是动态规划 这个我不太会...
阳顶天鹿鼎记
2012-11-30 · TA获得超过502个赞
知道小有建树答主
回答量:675
采纳率:100%
帮助的人:416万
展开全部
我想你问的是x*0.2+y*0.5+z*0.6等于1,而不是最大值:
程序如下
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(int argc, char**argv)
{
float x,y,z;
for(x=0.1f;x<1;x+=0.1f)
for(y=0.1f;y<1;y+=0.1f)
for(z=0.1f;z<1;z+=0.1f)
if((x*0.2+y*0.5+z*0.6)==1.0f)
printf("%f,%f,%f",&x,&y,&z);
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
杜细为
2012-12-02 · 超过11用户采纳过TA的回答
知道答主
回答量:71
采纳率:0%
帮助的人:27.1万
展开全部
#include<stdio.h>
double sum(double ,double,double);
int main()
{ double x,y,z,max=0,sum1,sum2;
for(x=0.1;x<=0.9;x=x+0.1)
for(y=0.1;y<=0.9;y=y+0.1)
for(z=0.1;z<=0.9;z=z+0.1)
{
sum1=sum(x,y,z);
if(sum1==1)
{
sum2=0.2*x+0.5*y+0.6*z;
if(max<sum2) max=sum2;
}
}
printf("%f\n",max);
}
double sum(double a ,double b,double c)
{
double i;
i=a+b+c;
return i;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小迈白城C9
2012-12-01 · TA获得超过211个赞
知道答主
回答量:202
采纳率:0%
帮助的人:83.8万
展开全部
我想你问的是x*0.2+y*0.5+z*0.6等于1,而不是最大值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式