输出一个整数val的每一位

本文介绍了一个简单的C++程序,该程序能够接收一个整数输入,并依次输出这个整数的每一位数字。通过循环和算术操作实现了数字的分解。





//输出一个整数val的每一位
#include<iostream>
using namespace std;
int main()
{
           int val = 0;
          printf( "请输入一个整数" );
          scanf( "%d", &val);
           while (val)
          {
                   printf( "%d ",val %10);
                   val /= 10;
          }
          system( "pause");
           return 0;
}


给定正整数求其位数并分别输出一位数字,有多种实现方法,以下为几种不同思路的示例代码: ### 方法一:if 嵌套运算(整) ```c #include "stdio.h" void main() { int a; scanf("%d", &a); if ((int)a / 10000 > 0) printf("五位数 %d %d %d %d %d", a / 10000, a / 1000 % 10, a / 100 % 10, a / 10 % 10, a % 10); else if ((int)a / 1000 > 0) printf("四位数 %d %d %d %d", a / 1000 % 10, a / 100 % 10, a / 10 % 10, a % 10); else if ((int)a / 100 > 0) printf("三位数 %d %d %d", a / 100 % 10, a / 10 % 10, a % 10); else if ((int)a / 10 > 0) printf("二位数 %d %d", a / 10 % 10, a % 10); else if ((int)a > 0) printf("一位数 %d", a % 10); else printf("输出错误"); } ``` 此方法通过不断用输入的数除以 10 的不同次幂来判断位数,并通过整和余操作输出一位数字,适用于不多于 5 位的正整数判断 [^1]。 ### 方法二:使用循环统计位数 ```c #include <stdio.h> /** 获整数位数 */ unsigned int Get_Digit(unsigned int val) { unsigned int tmp = 0; while (val > 0) { val /= 10; // 消除尾数 tmp++; } return tmp; } ``` 该函数通过循环不断将数字除以 10,每除一次计数器加 1,直到数字变为 0,从而得到数字的位数 [^2]。 ### 方法三:另一种循环实现位数统计 ```c int Several_digits(int n) { int i = 0; while (n != 0) { i++; n = n / 10; } return i; } ``` 此函数使用 while 循环,每次将数字除以 10 并增加计数器的,直到数字为 0,返回计数器的即为数字的位数,但当给定数字为 0 时无法正确判断位数 [^4]。 ### 方法四:结合获位数输出一位数字 ```c #include <stdio.h> int main() { int n; printf("请输入数:"); scanf("%d", &n); int m = n; // m是备份 if (n <= 0 || n > 99999) { printf("enter data error\n"); return 0; } // 1. 获位数 int count = 0; while (n != 0) { n /= 10; count = count + 1; } printf("位数是 %d\n", count); int index = 1; // 权重 for (int i = 0; i < 4; i++) { index = index * 10; } // 2. 正着打印 n = m; // 0 -> 12345 while (n != 0) { printf("%d", n / index); n = n % index; index = index / 10; } printf("\n"); // 3. 逆着打印 n = m; // 0->12345 while (n != 0) { printf("%d", n % 10); n /= 10; } printf("\n"); return 0; } ``` 该方法先判断输入是否合法,然后通过循环获数字的位数,接着通过权重和余操作顺序输出一位数字,最后逆序输出一位数字 [^5]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值