编写程序实现取一个整数a从右端开始的4~7位。C++

编写程序实现取一个整数a从右端开始的4~7位。C++

问题描述:

#include
using namespace std;

int zhuanhuan(int a)
{
int b;
char c;
if((b=a/10)!=0)
zhuanhuan(b);
c=a%10+'0';
return c;
}

int main()
{
int zhuanhuang(int a);
int a;
int i;
char b[20];

    cout<<"输入一个不小于7位数的整数:";
    cin>>a;
    if(a<1000000)
    {
            cout<<"输入错误!请重新输入"<<endl;
    }
    else
            {
                    b[20]=zhuanhuan(a);
            }
                    for(i=(sizeof(b)-7);i>=(sizeof(b)-4);i++)
                    cout<<b[i];
                    cout<<endl<<endl;
    return 0;

}

为什么我的else没有输出?一旦输入了1111111这个数字,然后就直接什么都没有直接结束

 #include <iostream>
using namespace std;

void foo(int x, int acc)
{
if (acc == 0) return;
foo(x / 2, acc - 1);
cout << x % 2;
}

int main()
{
   int a = 2049;
   foo(a >> 3, 4);
   return 0;
}

补充

 #include <iostream>
using namespace std;

void foo(int x, int acc)
{
if (acc == 0) return;
foo(x / 10, acc - 1);
cout << x % 10;
}

int main()
{
   int a = 1234567;
   foo(a / 1000, 4);
   return 0;
}

输出
1234