求一段c++循环代码
某数学竞赛中,参赛人数大约在380~450人之间。比赛结果,全体考生的总平均分为76分,男生的平均分为75分,女生的平均分为80.1分,求男女生各有多少人?(任一循环语句...
某数学竞赛中,参赛人数大约在380~450人之间。比赛结果,全体考生的总平均分为76分,男生的平均分为75分,女生的平均分为80.1分,求男女生各有多少人?
(任一循环语句)
不会做,求模板,求讲解, 展开
(任一循环语句)
不会做,求模板,求讲解, 展开
4个回答
展开全部
数学逻辑
男生为x人,女生y人
所以就有
380 <= x + y <= 450
x*75 + 80.1*y = (x+y)*76
编程逻辑
就是用穷举法,列出所有情况,将符合条件得抽出即可
for(i=380;i<=450;i++)//循环1,是总人数可能情况循环 380到450,i是总人数
{
for(x=1;x<i;x++)//循环2,男生的可能人数是1到总人数-1(只有一个男生到只一个女生的情况)
{
y = i - x;//计算出女生的人数
if( (x*75 + 80.1*y) == ((x+y)*76 ) ){
printf("男生%d人,女生%d人\n",x,y);
}
}
}
男生为x人,女生y人
所以就有
380 <= x + y <= 450
x*75 + 80.1*y = (x+y)*76
编程逻辑
就是用穷举法,列出所有情况,将符合条件得抽出即可
for(i=380;i<=450;i++)//循环1,是总人数可能情况循环 380到450,i是总人数
{
for(x=1;x<i;x++)//循环2,男生的可能人数是1到总人数-1(只有一个男生到只一个女生的情况)
{
y = i - x;//计算出女生的人数
if( (x*75 + 80.1*y) == ((x+y)*76 ) ){
printf("男生%d人,女生%d人\n",x,y);
}
}
}
展开全部
首先从数学角度,设一共有A人,男生有B人。如题出方程式76A=75B+80.1(A-B)
算下来是B=41*A / 51。既然女生平均分有小数点,那说明这里的分数没有四舍五入。
那B一定就是合理的整数。
再回到编程。先定义几个数,要float型的
float male,female,zongshu;
接下来开始循环了
for(zongshu=380;zongshu<=450;zongshu++)
{
male=zongshu*41/51; //给男生人数赋值
if(male==(int)male)break; //判断男生人数是不是整数,是的话就跳出循环,否则继续循环。
}
female=zongshu-male; //上述循环结束后,zongshu和male都会有确切的值,从而得出女生人数
printf("男生有%d人,女生有%d人。",male,female);
算下来是B=41*A / 51。既然女生平均分有小数点,那说明这里的分数没有四舍五入。
那B一定就是合理的整数。
再回到编程。先定义几个数,要float型的
float male,female,zongshu;
接下来开始循环了
for(zongshu=380;zongshu<=450;zongshu++)
{
male=zongshu*41/51; //给男生人数赋值
if(male==(int)male)break; //判断男生人数是不是整数,是的话就跳出循环,否则继续循环。
}
female=zongshu-male; //上述循环结束后,zongshu和male都会有确切的值,从而得出女生人数
printf("男生有%d人,女生有%d人。",male,female);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
分析题意:设男生人数为x,女生人数为y;380<=x+y<=450 75x+80.1y=76*(x+y) x=4.1y 380<=5.1y<=450
y为正整数,只需找到380到450之间能被5.1整除的数即可,则会得到一系列满足条件的y的值,在从这些值中找到(x=4.1y)y*4.1后为正整数,这样可以确定最终得x和y
y为正整数,只需找到380到450之间能被5.1整除的数即可,则会得到一系列满足条件的y的值,在从这些值中找到(x=4.1y)y*4.1后为正整数,这样可以确定最终得x和y
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
//这是大体的,自己可以设置一下初始循环条件,即缩小搜索范围
for(z=380;z<=450;z++)
for(x=1;i<z;x++)
if(76*z==75*x+80.1*(z-x))
cout<<x<<(z-x)<<endl;
for(z=380;z<=450;z++)
for(x=1;i<z;x++)
if(76*z==75*x+80.1*(z-x))
cout<<x<<(z-x)<<endl;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询