【问题描述】编写程序找出一个正整数n的各位数字中最大的数字,n由键盘输入。
【样例输入】1423
【样例输出】4
【样例说明】1423有4位数字,分别是1、4、2、3,其中最大值是4
分析问题,如果按从前求n位数(n已知)的题目算的话,首先我们必须知道,输入的数字有多少位。
while (n != 0)
{
count++;
n = n / 10;
}
但是我们如果按此步骤继续,再重复之前a=n/pow(10,count),这样的操作的话,会显得非常繁琐。倒不如这样处理
#include <iostream>
using namespace std;
int main()
{
long n;
cin >> n;
int x = 0, max = 0;
while (n != 0)
{
x = n % 10;
max = (x > max ? x : max);
n = n / 10;
}
cout << max << endl;
return 0;
}
在重温这道题的过程中,我也看到了一道很有意思的题目,倒序输出各位数字
给出一个不多于5位的整数,要求1、求出它是几位数,2、分别输出每一位数字,3、按逆序输出各位数字,例如原数为321,应输出123。
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int n;
cin >> n;
int count = 1;
int n1 = n, n2 = n, n3 = n;
int k, m;
while (n / 10)
{
count++;
n = n / 10;
}
cout << "这个数的位数是" << count << endl;
for (int i = count; i > 1; i--)
{
k = n1 / pow(10, i - 1);
cout << k << " ";
n1 = n1 % int(pow(10, i - 1));
}
cout << n2 % 10 << endl;
for (int i = 1; i <= count; i++)
{
m = n3 % 10;
cout << m<<" ";
n3 = n3 / 10;
}
return 0;
}
遇到的问题:
1.需要用三个n1,n2,n3,因为在代码中,n已经变化了(突然想,如果每个部分都用函数代替,应该就不用这样了)
2.对·pow取余要n1 = n1 % int(pow(10, i - 1))
不然就会这样