C/C++ c/c++ 给一个正整数, 要求:①求出它是几位数; ②分别打印出每一位数字; ③按逆序打印出各位数字, 例如原数为321, 应输出123。
作者:互联网
这个问题有一个很笨很直接的方法 就是设定很多变量来存放整数的各位数字 且原题目是不超过5位的正整数 这样效率低的没边 不过一般也没有人用这种方法 但是很神奇的是书上的答案就是这种方法 下面给出通解方法
int main()
{
int weishu(int n);
void meiyiwei(int n);
void nixu(int n);
int a = 0;
cin >> a;
int tmp = a; //储存下a 因为在下面的函数中会改变a 这样在下一个函数中就不再是原来的那个了
cout << "这是一个" << weishu(a) << "位数" << endl;
a = tmp;
meiyiwei(a);
a = tmp;
nixu(a);
return 0;
}
int weishu(int n)
{
int a = 0;
while (n)
{
n /= 10;
a++;
}
return a;
}
void nixu(int n)
{
cout << "逆序为:";
while (n) //每次输出它的最后一位 然后把最后一位消去 当等于0的时候就不会进入循环了
{
cout << n % 10;
n /= 10;
}
cout << endl;
}
void meiyiwei (int n)
{
int weishu(int n);
// 1234 1234
// 先算他是几位数 因为不知道几位数的话 很难解决
int tmp = n;
int a = weishu(n);
int chushu = 1; //如果它是4位 则chushi变为1000 为了得到第一位
a -= 1;
while (a)
{
chushu *= 10; //4位 乘3次
a--;
}
n = tmp; //因为上面函数weishu里把n改变了
cout << "正序为:";
while (chushu) //此时1234 除数是1000
{
cout << n / chushu<<" ";
// 1234
n %= chushu; //把最高位消去
chushu /= 10;
}
cout << endl;
}
标签:正整数,数字,int,void,打印,几位数,方法 来源: https://blog.csdn.net/i777777777777777/article/details/122023106