关于任意一个十进制数如何输出位数的学习

对于如下程序,思考如下问题:(7分)

#include <iostream>
using namespace std;
int main()
{
int a,x,y,z;
cout<<"请输入一个十进制的三位数:";
cin>>a;
x=a/100;
y=a/10%10;
z=a%10; 
cout<<x<<'\n'<<y<<'\n'<<z;
return 0;
}
 

(1)假如输入345,请写出输出结果。(3分)

(2)分析如果输入其它的符合条件的数字,结果是什么?可以得出什么结论?(2分)

(3) 如果要处理的数据是4位数的十进制数,如果设计程序?。(2分)

学习过程:

(1):
3
4
5

(2):
结果:
x=三位数的百位数,y=三位数的十位数,z=三位数的个位数

结论:
a为int型,由于两个整型量相除时为整除,只保留结果的整数部分,所以a/100可以得到三位数的百位数;
从左向右运算,(a/10)得到的结果可以去除三位数中的个位数,保留百位数和十位数,并使原十位数变成新结果中的个位数,再用%10求余可得到(a/10)的个位数,即原三位数中的十位数;
%10得到任何数字的个位数 。
(若要得到除了首位和个位的任意一位数,即用原数/该位的一个最小单位——如求百位用a/100,这样可以降位到个位,然后用%10可以得到该数字,简洁的讲就是降位求余)

(3):
#include <iostream>
using namespace std;
int main()
{
int a,b,c,d,x;
cout<<"请输入一个十进制的四位数:";
cin>>x;
a=x/1000; //为了得到千位数
b=x/100%10; // x/100将百位数转化为个位数,%10得到x/100中的个位数,即原四位数的百位数
c=x/10%10; //与上面同理,降位求余
d=x%10; //%10得到任何数字的个位数
cout<<a<<'\n'<<b<<'\n'<<c<<'\n'<<d;
return 0;
}

posted @ 2020-10-14 23:09  Skker  阅读(247)  评论(0编辑  收藏  举报