注册 登录
编程论坛 C++教室

为什么输出是0啊

a99875984 发布于 2012-03-30 08:28, 364 次点击
程序代码:
#include <iostream.h>
#include "h.h"
void main()
{
    long int a,b=0,c=1,e=0;
    cin>>a;
    for (;a>=2;a=a/2)
    {
        b=a%2*fun(c,10);
        e+=b;
        c++;
    }
    cout<<e<<endl;
}

#include <iostream.h>
int fun(int a,int b)
{
    if (a==1)return b;
    else return b*fun(a-1,b);
}
谢谢了
2 回复
#2
yuccn2012-03-30 11:06
如果你的a输入的是 0 或者是1 那么e明显就是0了,for一次都没有执行
其他情况自己分析去
#3
冉小A2012-04-05 18:48
程序代码:
#include <iostream.h>
int fun(int a,int b)
{
    if (a==1)return b;
    else return b*fun(a-1,b);
}

void main()
{
    long int a,b=0,c=1,e=0;
    cin>>a;
    for (;a>=2;a=a/2)
    {
        b=a%2*fun(c,10);
        e+=b;
        c++;
    }
    cout<<e<<endl;
}
下面是一部分对应的输入与输出结果:
0->0;1->0;2->0;3->10;4->0;5->10;6->100;7->110;8->0;9->10;10->100;11->110;12->1000;13->1010;14->1100;15->1110;16->0;17->10;18->100;19->110;20->1000;21->1010;22->1100;23->1110;24->10000;25->10010;26->10100;27->10110;28->11000;29->11010;30->11100;31->11110;32->0;33->10;34->100;35->110;36->1000;37->1010;38->1100;39->1110;
可以添加代码循环执行得到
1