C语言之啥也不懂入门3(经典算法)

本文介绍了三种不同的算法实现方式来解决整数正序输出的问题。思路一通过两次倒序输出实现;思路二针对固定位数的整数,利用对应位数的最小值进行操作;思路三是思路二的升级版,能处理任意位数的整数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

输入整数,正序输出

思路一:倒+倒=正

#include<stdio.h>
int main() {
	int x;
	scanf("%d", &x);
	int dig;
	int res = 0;
	do {
		dig = x % 10;
		res = res * 10 + dig;
		x /= 10;
	} while (x > 0);
	printf("%d\n", res);        //倒序输出
	x = res;                //重新赋值,参与后面运算
	int t = 0;
	do {
		dig = x % 10;
		t = t * 10 + dig;
		x /= 10;
	} while (x > 0);
	printf("%d", t);        //倒+倒=正
	return 0;
}

适用于整数中前、后无0情况

思路二:与对应位数最小值直接参与运算

#include<stdio.h>

int main() {
	int x=3456;            //假设输入的数是3456的四位数
	int min = 1000;        //以四位数最小值参与运算
	int dig;
	//scanf("%d", &x);
	do  {
		dig = x / min;
		x = x % min;
		 min /= 10;
		printf("%d",dig);
	} while (min > 0);        //修改条件,使0参与运算
    return 0;
}

只适用于给定位数的整数进行正序输出

思路三:先判断所输入的数为几位数,然后将该位数的最小值赋予变量,参加于思路二的运算中

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

int main() {
	int x,y;
	int n = 0;
	scanf("%d", &x);
	y = x;            //保留初始化数值,参与下式运算
	do {
		n++;
		x /= 10;
	} while (x > 0);            //得到输入的数字位数
	int min = pow(10, n - 1);    //位数所对应的最小值为10的位数-1次方
	do {
		int dig = y / min;
		y = y % min;
		min /= 10;
		printf("%d ", dig);
	} while (min > 0);
	return 0;
}

二的进阶版,适用于所有情况.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值