(1)
/*
给出一个不多于5位的正整数。方法1(利用循环获取各个位上数值的同时,计算数的位数)
题目要求
1.求出它是几位数
2.分别输出各位数字
3.按逆序输出各位数字 如原数是321,逆序输出123
编程要求:使用数组
*/
#include <iostream>
using namespace std;
int main()
{
int n; //n存放要分解的数
int digit=0,i,temp; //digit存放n的位数
int a[5]; //数组a中元素存放n的各个位的数值
cout<<"请输入一个不多于5位的正整数:n=";
cin>>n;
while(n<0||n>99999) // 保证输入的n为不大于5的正整数再继续下面程序
{
cout<<"您输入的数有误,请重新输入n=";
cin>>n;
}
temp=n;
for(i=0;i<5;i++) //利用循环分解各个位上数值,逆序存放到数组中
{
a[i]=temp%10;
digit++;
temp=temp/10;
if(temp==0)break;
}
cout<<n<<"是"<<digit<<"位数"<<endl;
cout<<"顺序输出"<<n<<"的各个位为:";
for(i=digit-1;i>=0;i--)
cout<<a[i]<<" ";
cout<<endl;
cout<<"逆序输出"<<n<<"的各个位为:";
for(i=0;i<digit;i++)
cout<<a[i]<<" ";
cout<<endl;
return 0;
}
(2)
/*
给出一个不多于5位的正整数。方法2(先利用循环获取整数位数,再分解各个位上数值)
题目要求
1.求出它是几位数
2.分别输出各位数字
3.按逆序输出各位数字 如原数是321,逆序输出123
编程要求:使用数组
*/
#include <iostream>
using namespace std;
int main()
{
int n; //n存放要分解的数
int digit=0,i,temp; //digit存放n的位数
int a[5]; //数组a中元素存放n的各个位的数值
cout<<"请输入一个不多于5位的正整数:n=";
cin>>n;
while(n<0||n>99999) // 保证输入的n为不大于5的正整数再继续下面程序
{
cout<<"您输入的数有误,请重新输入n=";
cin>>n;
}
temp=n;
while(temp!=0) //利用循环得到数的位数
{ digit++;
temp=temp/10;
}
temp=n;
for(i=digit-1;i>=0;i--) //利用循环分解各个位上数值,顺序存放到数组中
{
a[i]=temp%10;
temp=temp/10;
}
cout<<n<<"是"<<digit<<"位数"<<endl;
cout<<"顺序输出"<<n<<"的各个位为:";
for(i=0;i<digit;i++)
cout<<a[i]<<" ";
cout<<endl;
cout<<"逆序输出"<<n<<"的各个位为:";
for(i=digit-1;i>=0;i--)
cout<<a[i]<<" ";
cout<<endl;
return 0;
}
(3)
/*
给出一个不多于5位的正整数。方法3(先利用条件分支获取整数位数,再分解各个位上数值)
题目要求
1.求出它是几位数
2.分别输出各位数字
3.按逆序输出各位数字 如原数是321,逆序输出123
编程要求:使用数组
*/
#include <iostream>
using namespace std;
int main()
{
int n; //n存放要分解的数
int digit=0,i,temp; //digit存放n的位数
int a[5]; //数组a中元素存放n的各个位的数值
cout<<"请输入一个不多于5位的正整数:n=";
cin>>n;
while(n<0||n>99999) // 保证输入的n为不大于5的正整数再继续下面程序
{
cout<<"您输入的数有误,请重新输入n=";
cin>>n;
}
temp=n;
if(n>=0&&n<=9) //利用if分支得到数的位数
digit=1;
else if (n<=99)
digit=2;
else if(n<=999)
digit=3;
else if(n<=9999)
digit=4;
else
digit=5;
temp=n;
for(i=digit-1;i>=0;i--) //利用循环分解各个位上数值,顺序存放到数组中
{
a[i]=temp%10;
temp=temp/10;
}
cout<<n<<"是"<<digit<<"位数"<<endl;
cout<<"顺序输出"<<n<<"的各个位为:";
for(i=0;i<digit;i++)
cout<<a[i]<<" ";
cout<<endl;
cout<<"逆序输出"<<n<<"的各个位为:";
for(i=digit-1;i>=0;i--)
cout<<a[i]<<" ";
cout<<endl;
return 0;
}
(4)
/*
给出一个不多于5位的正整数。方法4(先利用函数调用方式)
题目要求
1.求出它是几位数
2.分别输出各位数字
3.按逆序输出各位数字 如原数是321,逆序输出123
编程要求:使用数组,函数调用
分析
(1)函数1获取正整数位数
(2)函数2完成正整数各个位数值分解,利用传递数组方式
*/
#include <iostream>
using namespace std;
int getDigit(int n);//获取参数n的位数函数
void decompose(int n,int a[]);//将n分解放到a数组中
int main()
{
int n; //n存放要分解的数
int digit=0,i; //digit存放n的位数
int a[5]; //数组a中元素存放n的各个位的数值
cout<<"请输入一个不多于5位的正整数:n=";
cin>>n;
while(n<0||n>99999) // 保证输入的n为不大于5的正整数再继续下面程序
{
cout<<"您输入的数有误,请重新输入n=";
cin>>n;
}
digit=getDigit(n);
decompose(n,a);
cout<<n<<"是"<<digit<<"位数"<<endl;
cout<<"顺序输出"<<n<<"的各个位为:";
for(i=0;i<digit;i++)
cout<<a[i]<<" ";
cout<<endl;
cout<<"逆序输出"<<n<<"的各个位为:";
for(i=digit-1;i>=0;i--)
cout<<a[i]<<" ";
cout<<endl;
return 0;
}
int getDigit(int n)//获取参数n的位数函数
{
int digit=0;
while(n!=0)
{
digit++;
n=n/10;
}
return digit;
}
void decompose(int n,int a[])//将n分解放到a数组中
{
int digit=getDigit(n),i;
for(i=digit-1;i>=0;i--) //利用循环分解各个位上数值,顺序存放到数组中
{
a[i]=n%10;
n=n/10;
}
}