C语言 统计数字位数,顺序输出和逆序输出

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>

int main()
{
	long long n;
	printf("输入一个整数:");
	scanf("%lld", &n);
	long long m = n;

	//统计数字位数
	int count = 0;
	do
	{
		count++;
		n /= 10;
	} while (n != 0);
	printf("数字位数:%d\n", count);

	//顺序输出
	n = m;
	int power = pow(10, count - 1);
	printf("顺序输出:");
	if (n < 0)
	{
		printf("- ");
		n = -n;
	}
	do
	{
		printf("%d ", n / power);
		n %= power;
		power /= 10;
	} while (n != 0);
	printf("\n");

	//逆序输出
	n = m;
	printf("逆序输出:");
	if (n < 0)
	{
		printf("- ");
		n = -n;
	}
	do
	{
		printf("%d ", n % 10);
		n /= 10;
	} while (n != 0);
	printf("\n");

	return 0;
}

当你想要求用户输入一个正整数并反转它的顺序,然后同时显示反转后的数值和位数(即数字的总位数),你可以使用以下步骤: 首先,你需要创建一个循环来获取用户的输入,直到他们输入一个正整数。然后,你会对这个输入进行处理,先检查是否为正整数,如果不是,则提示用户重新输入。 接着,你可以通过字符串转换来实现数的反转,因为整数转换成字符数组后,就可以很容易地翻转整个序列。最后,计算反转后的数字的位数,通常可以通过遍历字符数组并累加`'1'`的数量来完成。 下面是相关的C语言代码示例: ```c #include <stdio.h> #include <string.h> int main() { char input[50]; int number, reversed = 0, digit_count = 0; // 获取用户输入,检查是否为正整数 while (scanf("%s", input) == 1 && !isdigit(input[0])) { printf("请输入一个正整数:"); scanf("%*[^\d]%*c"); // 清除非数字字符 } if (!isdigit(input[0])) { printf("输入无效,请输入一个正整数。\n"); return 1; // 错误处理 } // 将字符串转换为整数并反转 sscanf(input, "%d", &number); for (int i = strlen(input)-1; i >= 0; i--) { reversed = reversed * 10 + input[i] - '0'; // 反转数字 digit_count++; } // 输出结果 printf("反转后的数值是:%d\n", reversed); printf("位数是:%d\n", digit_count); return 0; } ``` 在这个代码里,`sscanf`用于读取输入的字符串并将第一个正整数赋值给`number`,然后我们遍历字符串反向计算反转后的数字,并统计位数。如果输入不是正整数,我们会有一个错误检查并提示用户重新输入。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值