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

本文介绍了如何使用C语言实现一个功能,包括:计算不超过5位的正整数的位数,逐位输出数字,以及逆序输出个位数。通过条件判断和位运算,实现了对整数的处理,包括对负数的转换和逐位输出的逻辑处理。

(1)统计十进制整数的位数

当该数字为0时,直接返回为 1;

当数字为多位数时,通过/10来丢弃个位,每丢弃一次,计数器加一

最后返回数字的位数。 

//统计十进制整数为几位数字
int GetFigures(long long n)
{
	int count=0;
	if(n==0)
		return 1;
	while(n!=0)
	{
		n/=10;//丢弃个位
		count++;
	}
	return count;
	printf("\n");
}

(2)逆序输出数字

当数字为负数时,先将十进制数字变为相反数;

数字为0时,直接返回0;

当数字不为0时,通过%10,得到个位数;再通过/10丢弃个位;一直循环,直至十进制数字全部输出

//逆序输出数字每一位,得到个位(%10),再丢弃个位(/10)
void PrintReverse(long long n)
{
	if(n<0)
	{
		printf("-");
		n=-n;
	}
	if(n==0)
	{
		printf("0\n");
		return ;//结束该函数
	}
	while(n!=0)
	{
		printf("%d",n%10);//得到个位
		n/=10;//丢弃个位
	}
	printf("\n");
}

(3)顺序输出数字

通过之前的GetFigures()函数,获得十进制的数字位数个数;

求最高位时,三位数/100;所以n位数通过/10^(n-1)得到最高位;%10^(n-1)丢弃最高位;

到下一次时,n-1位数,/10^(n-2)即令power=power/10;

直至数字所有位数均已输出

//顺序输出数字的每一位 得到最高位,丢弃最高位
void PrintOrder(long long n)
{
	int fig = GetFigures(n);//得到n的位数
 	long long power = pow(10.0,
实现对多于5正整数数、输出一位数字逆序输出数字可以使用同的编程语言,以下为你列举几种常见语言的实现方法: ### C语言实现 ```c #include <math.h> #include <stdio.h> int main() { int num, y, x1, x2, x3, x4, x5, place; scanf("%d", &num); place = log10((double) num) + 1; y = num; x1 = y % 10; y /= 10; x2 = y % 10; y /= 10; x3 = y % 10; y /= 10; x4 = y % 10; y /= 10; x5 = y % 10; y /= 10; printf("%d为%d数\n", num, place); switch (place) { case 1: printf("顺序输出为:%d\n", x1); printf("逆序输出为:%d\n", x1); break; case 2: printf("顺序输出为:%d,%d\n", x2, x1); printf("逆序输出为:%d,%d\n", x1, x2); break; case 3: printf("顺序输出为:%d,%d,%d\n", x3, x2, x1); printf("逆序输出为:%d,%d,%d\n", x1, x2, x3); break; case 4: printf("顺序输出为:%d,%d,%d,%d\n", x4, x3, x2, x1); printf("逆序输出为:%d,%d,%d,%d\n", x1, x2, x3, x4); break; case 5: printf("顺序输出为:%d,%d,%d,%d,%d\n", x5, x4, x3, x2, x1); printf("逆序输出为:%d,%d,%d,%d,%d\n", x1, x2, x3, x4, x5); break; } return 0; } ``` 此C语言代码首先通过`log10`函数计算数字数,接着通过取余和除法操作分离一位数字,最后使用`switch`语句根据数进行同的输出处理,包括顺序输出逆序输出[^1]。 ### Java实现 ```java import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("请输入一个多于5正整数:"); int num = scan.nextInt(); int temp = num; int temp1 = num; int count = 0; // 数 while (num > 0) { num /= 10; count++; } System.out.println("这是一个" + count + "数"); // 分别输出一位数字 System.out.print("分别输出:"); String str = temp1 + ""; for (int i = 0; i < str.length(); i++) { System.out.print(str.charAt(i) + " "); } System.out.println(); // 逆序输出 System.out.print("逆序输出:"); while (temp > 0) { int num2 = temp % 10; System.out.print(num2); temp /= 10; } } } ``` 在Java代码中,使用`while`循环计算数字数,将数字转换为字符串后遍历输出一位数字,再通过另一个`while`循环取余操作实现逆序输出[^2]。 ### 另一种C语言实现 ```c #include <stdio.h> int main() { int a, b, c, d, e; printf("请输入一个多于正整数:"); scanf("%d", &a); if (a >= 0 && a < 100000) { if (a / 10 > 1) { if (a / 100 > 1) { if (a / 1000 > 1) { if (a / 10000 < 1) { b = a / 1000; c = (a - b * 1000) / 100; d = (a - b * 1000 - c * 100) / 10; e = a - b * 1000 - c * 100 - d * 10; printf("%d为四数\n", a); printf("每数字:千:%d 百:%d 十:%d 个位:%d\n", b, c, d, e); printf("逆序输出:%d%d%d%d\n", e, d, c, b); } } else { b = a / 100; c = (a - b * 100) / 10; d = a - b * 100 - c * 10; printf("%d为三数\n", a); printf("每数字:百:%d 十:%d 个位:%d\n", b, c, d); printf("逆序输出:%d%d%d\n", d, c, b); } } else { b = a / 10; printf("%d为两数\n", a); printf("每数字:十:%d 个位:%d\n", b, a - b * 10); printf("逆序输出:%d%d\n", a - b * 10, b); } } else { printf("%d为一位数\n", a); printf("分别输出一位个位:%d\n", a); printf("逆序输出:%d\n", a); } } else { printf("输入错误!\n"); } return 0; } ``` 该C语言代码通过多层`if`语句判断数字数,然后分离一位数字并进行顺序和逆序输出,同时对输入进行错误检查[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值