给出不多于5位的正整数,要求:

1,求出它是几位数

2,分别输出每一位数

3,按逆序输出每一位数字,例如原数为321,应输出123.

第一种方法:

(1)求一个数是几位数,有一种方法是:

if (x > 9999)
{
place = 5;
printf("这是一个五位数\n");
}
else if (x > 999&&x < 9999)
{
place = 4;
printf("这是一个四位数\n");
}
else if (x > 99&&x < 999)
{
place = 3;
printf("这是一个三位数\n");
}
else if (x>9&&x<99)
{
place = 2;
printf("这是一个两位数\n");
}
else if (x > 0&&x < 9)
{
place = 1;
printf("这是一个一位数\n");

}

这种方法虽然简单,但是可利用性不强,如果判断的是N位数的数字,那么要写的else if(),就不是一两个了,所以实际应用中就不太合适。

(2)分别输出每一位数字,顺序输出十进制数字n,如123 -》1 2 3

myriabit = x / 10000;//万位

thousend = (x - myriabit * 10000) / 1000;//千位

hundred = (x - myriabit * 10000 - thousend * 1000) / 100; //百位

tendigit = (x - myriabit * 10000 - thousend * 1000 - hundred * 100) / 10;// 十位

unitsdigit = (x - myriabit * 10000 - thousend * 1000 - hundred * 100 - tendigit * 10) / 1;//个位

printf("(2)个位%d,十位%d,百位%d,千位%d,万位%d\n", unitsdigit, tendigit, hundred, thousend, myriabit);// 个位

(3)按逆序输出每一位数字,例如原数为321,应输出123.

switch(place)
{
case 1:printf("(3)逆序为:%d" , unitsdigit);break;
case 2:printf("(3)逆序为:%d%d" , unitsdigit , tendigit);break;
case 3:printf("(3)逆序为:%d%d%d" , unitsdigit , tendigit , hundred);break;
case 4:printf("(3)逆序为:%d%d%d%d" , unitsdigit , tendigit , hundred , thousend);break;
case 5:printf("(3)逆序为:%d%d%d%d%d" , unitsdigit , tendigit , hundred , thousend , myriabit);break;
}

另一种方法是:

(1)求一个数是几位数,:

丢弃个位 ,例如123,

123 / 10 = 12    n = 12     count =1;

12 / 10 = 1        n =1       count =2;

1 / 10 = 0          n= 0       count =3;

int GetFigures(int n)
{
int count = 0;
if(n / 10 != 0)
{
count++;
}
n /= 10;//丢弃个位

}

程序简单可利用性比上面的方法强很多,可以解决正数,负数但是0不可以。

如果要加上0,有两种解决方法:

1,在前面加上一个判断。

2,do
{
count++;
n  /= 10;//丢弃个位

}while(n != 0);

(2)分别输出每一位数字,顺序输出十进制数字n,如123 -》1 2 3

void PrintOrder1(int n)
{
int count;
count = GetFigures(n);//函数调用
int power = 1;
//pow(10,count-1);
for(int i = 0; i < count - 1; i++)
{
power *= 10;//power = power * 10;
}
do
{
printf("%d ",n/power);//得到最高位
n %= power;//丢弃最高位
power /= 10;
}while(n!=0);
printf("\n");

}

还有利用栈的方法:

void PrintOrder(int n)
{
stack<int> s;
do
{
s.push(n % 10);//进栈
n /= 10;
} while (n != 0);
while (!s.empty())
{
printf("%d ", s.top());
s.pop();
}
printf("\n");
}

(3)按逆序输出每一位数字,例如原数为321,应输出123.

void PrintReverse(int n)
{
if(n < 0)
{
printf("-");
n = -n;
}
do
{
printf("%d ",n%10);//得到个位数字
n /= 10;//丢弃个位数字
}while(n!=0);

printf("\n");

下面是程序的总代码,运行环境为Visual Studio 2013

运行结果如下图

(有各种情况的测试!负数的顺序输出若想只有第一位数带符号可以加上

if (n < 0)
{
printf("-");
n = -n;

}

给出不多于5位的正整数,求出它是几位数,分别输出每一位按逆序输出每一位数字。相关推荐

  1. C语言:给一个不多于5位的正整数,要求:求出他是几位数分别输出每一位数字,按逆序输出各位数字,例如原数为321,应输出123

    往期回顾: 求Sn=a+aa+aaa+aaaa+...n个a ,a是数字 ,n表示a的位数 C语言:两个乒乓球队进行比赛,各出三人.甲队为a,b,c三人,乙队为x,y,z三人.排出比赛名单 C语言:杨 ...

  2. 练习-用switch语句实现输入一个不多余5位的正整数,要求①求出它是几位数②分别输出每一位数字③按逆序输出各位数字

    第1关:给一个不多余5位的正整数,要求如下:①求出它是几位数②分别输出每一位数字③按逆序输出各位数字 任务描述 本关任务:给一个不多余5位的正整数,要求如下:①求出它是几位数②分别输出每一位数字③按逆 ...

  3. 【C语言】给出一个不多于5位的正整数,要求:1.求出它是几位数;2.分别输出每一位数字;3.按逆序输出各位数字。

    给出一个不多于5位的正整数,要求: 求出它是几位数: 分别输出每一位数字: 按逆序输出各位数字. 1.求出它是几位数 思路:一个数每一次除以10都会少一位数. // scanfNum:输入的5位数 / ...

  4. 给一个不多于5位的正整数,要求: 1.求出它是几位数; 2.分别输出每一位数字; 3.按逆序输出各位数字;

    对一个数如何得出它是几位数并求出其个位.十位.百位.千位- 给一个不多于5位的正整数,要求: 1.求出它是几位数: 2.分别输出每一位数字: 3.按逆序输出各位数字: 代码如下 #include &l ...

  5. 给一个不多于5位的正整数,要求: ①求出它是几位数②分别输出每一位数③按逆序输出各位数字,例如原数为123,应输出321

    给一个不多于5位的正整数,要求: ①求出它是几位数②分别输出每一位数③按逆序输出各位数字,例如原数为123,应输出321 int main() {int n;int a,b,c,d,e;//个,十,百 ...

  6. 不多于 5 位的正整数逆序输出(python)

    写了一个看了虎躯一震的代码 题目为: [if 语句]从键盘上输入一个不多于 5 位的正整数,编写程序实现如下要求: (1)求出它是几位数: (2)分别输出每一位数字: (3)按逆序输出每位数字,例如原 ...

  7. AMNO.6 给出一个不多于5位的整数,要求 1、求出它是几位数 2、分别输出每一位数字 3、按逆序输出各位数字,例如原数为321,应输出123 输入 一个不大于5位的数字

    题目描述 给出一个不多于5位的整数,要求 1.求出它是几位数 2.分别输出每一位数字 3.按逆序输出各位数字,例如原数为321,应输出123 输入 一个不大于5位的数字 输出 三行 第一行 位数 第二 ...

  8. 给定一个不多于5位的正整数,判断它是几位数,并输出。 输入

    /给定一个不多于5位的正整数,判断它是几位数,并输出. 输入 一个不多于5位的正整数. 输出 输出正整数的位数,单独占一行. 样例输入 Copy 111 样例输出 Copy 3 来源/分类/ #inc ...

  9. 给出一个不多于5位的整数,要求 1、求出它是几位数 2、分别输出每一位数字 3、按逆序输出各位数字,例如原数为321,应输出123。

    撰写人--软工二班--陈喜平 题目描述 给出一个不多于5位的整数,要求 1.求出它是几位数 2.分别输出每一位数字 3.按逆序输出各位数字,例如原数为321,应输出123. 将下面的程序填写完整. # ...

最新文章

  1. 自从上线了 Prometheus 监控告警,真香!
  2. 9-7NOIP模拟赛总结
  3. 导入Flex/Flash项目后的一个简单错误:无法创建 HTML 包装器
  4. 美国支付巨头Verifone遭遇网络攻击
  5. php 张开收缩显示,js实现可以点击收缩或张开的悬浮窗
  6. 左神算法:判断二叉树是否为平衡二叉树(树形dp套路,Java版)
  7. DB2 存储过程中执行动态SQL的两种写法
  8. Postman中对报文进行AES+Base64加密请求
  9. [spring]spring boot项目实例
  10. OpenCV_ImageMatching with SURF and SIFT(使用SURF和 SIFT进行图像匹配 对比)
  11. 韩顺平 java笔记 第8讲 this 类变量 第9讲 类方法
  12. mysql常用语句1
  13. 打狗棒法之:Cknife(C刀)自定义模式秒过安全狗(二)
  14. webstorm主题风格jar包下载
  15. 利用python读取SEGY格式数据,主要用于对其快速解析及统计分析。
  16. 计算机作文素材,学电脑作文素材
  17. 流程图基础绘制方法和流程图制作软件功能详解
  18. Firefox OS 架构简析——(1)
  19. 汉诺塔问题解法心路历程及C语言学习请教
  20. 微信小程序--动态时间实现

热门文章

  1. ios(ipad,iphone)屏幕旋转检测通用方法
  2. 【css太极图】html+css用一个div画出太极图
  3. 传感器原理与检测技术复习笔记第六章-压电式传感器
  4. Windows平台精选软件工具列表-Windows绝赞应用
  5. 抖竹官网下载代理加盟有哪些盈利点?摆烂后短视频引流拓客软件
  6. 如何 拆 贴片电容 而不是把焊盘给搞坏
  7. 2015,了不起的邮件创意!
  8. WPS内嵌图片怎样使用Java获取图片?
  9. 163VIP邮箱全新域名上线,见证蜕变开启全新的VIP邮箱体验!
  10. IOS模拟器怎么安装应用程序