
关于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语言爱好者即大神帮帮我,小弟万分感谢,难于言表!!!
展开
4个回答
展开全部
最简单的方法就是用循环来写 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
我也是新手 只能用这种笨方法了 还有就是用数学只是 就是动态规划 这个我不太会...
#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
我也是新手 只能用这种笨方法了 还有就是用数学只是 就是动态规划 这个我不太会...
展开全部
我想你问的是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;
}
程序如下
#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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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;
}
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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我想你问的是x*0.2+y*0.5+z*0.6等于1,而不是最大值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询