【发布时间】:2021-05-02 11:03:03
【问题描述】:
问题陈述是:
- 您必须显示数字的位数。
- 将“n”作为输入,即必须显示数字的数字。
- 按行打印数字的数字。
#include<iostream>
#include<cmath>
using namespace std;
int main(){
int n;
cin>>n;
int nod = 0;
int temp = n;
while(temp != 0){
temp = temp / 10;
nod++;
}
int div = (int)pow(10, nod - 1);
while(div != 0){
int dig = n / div;
cout<<dig<<endl;
n = n % div;
div = div / 10;
}
return 0;
}
对于输入 65784383,预期输出为:
6
5
7
8
4
3
8
3
但是,程序的输出与预期不符。哪里出错了?
【问题讨论】:
-
实际输出是多少?与预期有何不同?
-
在这里按预期工作godbolt.org/z/qxhh1Y3s3
-
不要在整数问题中使用
pow或其他浮点函数。 (许多像这样的问题都是专门设计的,这样做会导致问题。)