问简单问题,盼望帮忙(结贴较快)

summerYe 2010-04-08 09:41:49
问题1:下面程序x,y的结果是:
#include<iostream.h>
int main()
{
int x = 1, y= 0;
do
{
x+= 2;
y+=x;
if(y>10)
break;
}
while(x = 4);
cout<<x<<endl;//输出多少?我调试出来了,但不知为什么。..
cout<<y<<endl;
return 0;
}

问题2:箱子有a个红球,b个篮球和c个黄球,从中任意取出k个球(0 <k<a+b+c),请编程实现输出所有可能的组合方案,并统计其中含有黄球的组合数。(这题不会,感觉难....)
...全文
158 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
momogua 2010-04-09
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 schoolers 的回复:]
楼主你看这样行吗?

C/C++ code
void ball(int a, int b, int c, int k)
{
int Red,Blue,Yellow;
int num=0;
printf(" Red Blue Yellow\n");
for(Red=0;Red<=a;Red++)
{
for(Blue=0;B……
[/Quote]

然后for(int i=1,i<k;i++)
{
ball(a,b,c,i);
}

是这样吗?
某某9 2010-04-09
  • 打赏
  • 举报
回复
楼主你看这样行吗?
void ball(int a, int b, int c, int k)
{
int Red,Blue,Yellow;
int num=0;
printf(" Red Blue Yellow\n");
for(Red=0;Red<=a;Red++)
{
for(Blue=0;Blue<=b;Blue++)
{
for(Yellow=0;Yellow<=c;Yellow++)
{
if((Red+Blue+Yellow)==k)
{
printf("%3d %3d %3d\n",Red,Blue,Yellow);
if (Yellow!=0)
{
++num;
}
}
}
}
}
printf("\n Yellow group is:%d\n\n", num);
}
momogua 2010-04-08
  • 打赏
  • 举报
回复
想了老半天第2题,还是没头绪
summerYe 2010-04-08
  • 打赏
  • 举报
回复
我们寝室快要熄灯了,如果你们有空看看技术帮下忙比看水贴好点呀,多谢了。....
summerYe 2010-04-08
  • 打赏
  • 举报
回复
各位达人,你们帮忙把难的那题也搞定下呀,相信对你们来说很容易呀。
liyanlin122 2010-04-08
  • 打赏
  • 举报
回复
想错了
第二题
只用2个for循环就可以了
O(n^2)
liyanlin122 2010-04-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 summerye 的回复:]
1楼大哥,我觉得第一步x=3,y = 3 后就不能运行啦,能解释下吗。还有第二题能帮忙想想吗?
[/Quote]

1#分析没错
6,15

第二题
如果a,b,c都不是太大,可以用3个for循环做,
在里面做判断
summerYe 2010-04-08
  • 打赏
  • 举报
回复
第二题感觉好麻烦呀,能不能给点代码,或者代码提示也行呀......
summerYe 2010-04-08
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 xiuxianshen 的回复:]
第一个是编程习惯不好的问题,做比较时一般常量在符号左侧
第二个说简单点就是排列组合问题和概率统计问题,先数学再代码化
[/Quote]哦,我是在做选择题。。。。第二题可以用三个for循环做吗?
xiuxianshen 2010-04-08
  • 打赏
  • 举报
回复
第一个是编程习惯不好的问题,做比较时一般常量在符号左侧
第二个说简单点就是排列组合问题和概率统计问题,先数学再代码化
lirg8405 2010-04-08
  • 打赏
  • 举报
回复
问题2:
如果球没有编号,那么当k小于或者等于某种球的时候,全取这种的话就只有一种了
hhhcj 2010-04-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 summerye 的回复:]

1楼大哥,我觉得第一步x=3,y = 3 后就不能运行啦,能解释下吗。还有第二题能帮忙想想吗?
[/Quote]
如果是比较符号(==)当然不能运行了,如果是赋值符号(=)就可以运行了。
X=4是真。。。。。
白云飘飘飘 2010-04-08
  • 打赏
  • 举报
回复
第二题简单的做法是:先找出a+b+c的所有子集,然后检查哪些子集的个数为k
lirg8405 2010-04-08
  • 打赏
  • 举报
回复
while(x = 4);
这个是永真的,就是while(true)
但是影响循环的是每次都把x赋值为4
hhhcj 2010-04-08
  • 打赏
  • 举报
回复
回朔法,八皇后问题
summerYe 2010-04-08
  • 打赏
  • 举报
回复
各位回帖好快,一下跳从1楼到5楼了,感谢2到5楼。顺便帮我看看第二题吗?
summerYe 2010-04-08
  • 打赏
  • 举报
回复
1楼大哥,我觉得第一步x=3,y = 3 后就不能运行啦,能解释下吗。还有第二题能帮忙想想吗?
白云飘飘飘 2010-04-08
  • 打赏
  • 举报
回复
问题1:第一次进入循环后x=3,y=3;关键循环的条件 while(x = 4);相当于x=4,while(true).从第二次开始,进入循环时x都等于4
na2650945 2010-04-08
  • 打赏
  • 举报
回复
问题2.
三个for循环。
用几个变量存储不可以么?

我是这么理解额。
na2650945 2010-04-08
  • 打赏
  • 举报
回复

x = 4

[Quote=引用 1 楼 schoolers 的回复:]
1. x=6, y=15 // 注意是while(x = 4),而不是while(x == 4)。 =是赋值
[/Quote]
恩。
建议用。

4 == x

加载更多回复(1)

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧