C语言算法积累分离数位示例

题目:输出一个三位整数的个、十、百位数。

关键字:得到数位

思路:

Q:如何利用简单的基本运算来得到一个数字的各个数位上的数字?

A:利用除法和求余运算:以153为例

首先,百位最容易得到:153/100=1。任何三位数除以100都是得到其百位的数字

其次,个位也好弄:153%10=3。任何三位数对10取余都是其个位数。

最后,十位数有四个方法。

最好想的:

1.用(原三位数—百位数* 100—个位数 * 1)/10

153-1X100-1X3=50; 50/10=5

2.将原三位数对100取余,再除以10。

不好想的:

利用求解百位和个位的方式,组合着来求解十位

(简而言之,就是只有最高位和最低位的数是可以通过除法,取余来一步得到的,所以就是要将十位数化到最高位或者最低位上)

1.化在最高位上:

  • 1):通过已经求出的百位数,将原三位数减去其百位数100f1a;153-1100=53;
  • 2):将剩余部分除以10。53/10=5

2.化在最低位上:

  • 1):通过已经求出的个位数,将原三位数减去其个位数1:153-13=150;
  • 2):将剩余部分对10取余。53%10=3

代码:

int main()
{
    /*x,bw,sw,gw分别用来存放三位正整数及其百位,十位和个位数*/
    int x, bw, sw, gw;
    printf("请输入一个三位正整数:\n");
    scanf_s("%d", &x);
    bw = x / 100;
    sw = (x % 100) / 10;
    gw = x % 10;
    printf("个位数为%d ,十位数为%d, 百位数为%d", gw, sw, bw);
    return 0;
}

以上就是C语言算法积累分离数位示例的详细内容,更多关于C语言算法分离数位的资料请关注我们其它相关文章!

(0)

相关推荐

  • C语言详细分析贪心策略中最小生成树的Prime算法设计与实现

    目录 浅析最小生成树 Prime算法思想 此算法核心部分 结构体的选择 实现思路 构造实例 构造过程 代码详解 调试结果 总结 浅析最小生成树 设G=(V,E)是无向连通带权图.E中每条边(v,w)的权为c[v][w]. 生成树:如果G的子图G’是一棵包含G的所有顶点的树,则称G’为G的生成树. 耗费:生成树上各边权的总和 最小生成树:在G的所有生成树中,耗费最小的生成树最小生成树在实际中有广泛应用. 例如,在设计通信网络时,用图的顶点表示城市,用边(v,w)的权c[v][w]表示建立城市v和城

  • C语言非递归算法解决快速排序与归并排序产生的栈溢出

    目录 1.栈溢出原因和递归的基本认识 2.快速排序(非递归实现) 3.归并排序(非递归实现) 建议还不理解快速排序和归并排序的小伙伴们可以先去看我上一篇博客​​​​​​哦!C语言超详细讲解排序算法下篇 1.栈溢出原因和递归的基本认识 我们先简单来了解下内存分布结构: 栈区:用于存放地址.临时变量等:                                                                            堆区:程序运行期间动态分配所使用的场景: 静态区

  • C语言实现冒泡排序算法的示例详解

    目录 1. 问题描述 2. 问题分析 3. 算法设计 动图演示 4. 程序设计 设计一 设计二 结论 5. 流程框架 6. 代码实现 7. 问题拓展 1. 问题描述 对N个整数(数据由键盘输入)进行升序排列. 2. 问题分析 对于N个数因其类型相同,我们可利用 数组 进行存储. 冒泡排序是在 两个相邻元素之间进行比较交换的过程将一个无序表变成有序表. 冒泡排序的思想:首先,从表头开始往后扫描数组,在扫描过程中逐对比较相邻两个元素的大小. 若相邻两个元素中,前面的元素大于后面的元素,则将它们互换,

  • C语言数据结构算法基础之循环队列示例

    目录 说明 示例代码 1. 首先定义结构体: 2. 定义各种算法: 3. 测试: 4. 最后的结果: 说明 循环队列是一种先进先出的,首尾相连的队列. 大致的结构如下图: 用数组来抽象的表示一下的话,如下图: 循环队列有两个指针指向数据,上图中的start和end就是那两个指针,它们指向相同的位置,表示的是空,即队列是空的. 随着数据的放入,队列一般有下面的两种形式: 需要注意第二种形式,从图上看end在start的前面了,但是因为循环关系,前后并不重要. 另外需要考虑的是队列满的情况: 但这种

  • C语言算法积累加tag的循环队列

    题目: 若希望循环队列中的元素都能得到利用,则需设置一个标志域tag,并以tag的值为0或1来区分队头指针front和队尾指针rear相同时的队列状态是“空”还是“满”. 试编写与此结构相应的入队和出队算法. 关键字: 循环队列+tag的使用 思路 : 循环队列: 需要变量:队头指针front,队尾指针rear,增减元素的开关:tag 1)入队算法 尾插法:Q.data[Q.rear]=x;Q.rear=(Q.rear+1)%Maxsize;Q.tag=1 队空条件:Q.front== Q.re

  • C语言算法积累分离数位示例

    题目:输出一个三位整数的个.十.百位数. 关键字:得到数位 思路: Q:如何利用简单的基本运算来得到一个数字的各个数位上的数字? A:利用除法和求余运算:以153为例 首先,百位最容易得到:153/100=1.任何三位数除以100都是得到其百位的数字 其次,个位也好弄:153%10=3.任何三位数对10取余都是其个位数. 最后,十位数有四个方法. 最好想的: 1.用(原三位数—百位数* 100—个位数 * 1)/10 153-1X100-1X3=50; 50/10=5 2.将原三位数对100取余

  • C语言算法积累图的遍历邻接表简单路径

    目录 题目: 思路: 代码: 题目: 假设图用邻接表表示,设计一个算法,输出从顶点Vi到Vj的所有简单路径 关键字: 图,邻接表,简单路径 思路: Vi=u,Vj=v 本题采用基于递归的深度优先遍历算法,从结点u出发,递归深度优先遍历图中各个结点,若访问到结点v,则输出该搜索路径上的结点. 为此,设置:一个path数组来存放路径上的结点(初始为空),d表示路径长度(初始为-1). 查找从顶点u到v 的简单路径过程说明如下 (假设查找函数名为FindPath()): 1)FindPath(G,u,

  • Java语言字典序排序算法解析及代码示例

    字典序法就是按照字典排序的思想逐一产生所有排列. 在数学中,字典或词典顺序(也称为词汇顺序,字典顺序,字母顺序或词典顺序)是基于字母顺序排列的单词按字母顺序排列的方法. 这种泛化主要在于定义有序完全有序集合(通常称为字母表)的元素的序列(通常称为计算机科学中的单词)的总顺序. 对于数字1.2.3......n的排列,不同排列的先后关系是从左到右逐个比较对应的数字的先后来决定的.例如对于5个数字的排列 12354和12345,排列12345在前,排列12354在后.按照这样的规定,5个数字的所有的

  • C语言实现交换排序算法(冒泡,快速排序)的示例代码

    目录 前言 一.冒泡排序 1.基本思想 2.优化 3.扩展 二.快速排序 1.基本思想 2.优化 3.代码 前言 查找和排序是数据结构与算法中不可或缺的一环,是前辈们在算法道路上留下的重要且方便的一些技巧,学习这些经典的查找和排序也能让我们更好和更快的解决问题.在这个专栏中我们会学习六大查找和十大排序的算法与思想,而本篇将详细讲解其中的交换排序——冒泡排序和快速排序: 注意:本文中所有排序按照升序排序,降序只需要把逻辑反过来即可! 一.冒泡排序 1.基本思想 对于很多同学来说冒泡排序是再熟悉不过

  • Go语言算法之寻找数组第二大元素的方法

    本文实例讲述了Go语言算法之寻找数组第二大元素的方法.分享给大家供大家参考.具体如下: 该算法的原理是,在遍历数组的时,始终记录当前最大的元素和第二大的元素.示例代码如下: 复制代码 代码如下: package demo01    import (      "fmt"  )    func NumberTestBase() {      fmt.Println("This is NumberTestBase")        nums := []int{12, 2

  • Java语言实现最大堆代码示例

    最大堆 最大堆的特点是父元素比子元素大,并且是一棵完全二叉树. data[1]开始存,data[0]空着不用.也可以把data[0]当成size来用. public class MaxHeap<T extends Comparable<? super T>> { private T[] data; private int size; private int capacity; public MaxHeap(int capacity) { this.data = (T[]) new

  • SpringBoot整合sharding-jdbc实现分库分表与读写分离的示例

    目录 一.前言 二.数据库表准备 三.整合 四.docker-compose部署mysql主从 五.本文案例demo源码 一.前言 本文将基于以下环境整合sharding-jdbc实现分库分表与读写分离 springboot2.4.0 mybatis-plus3.4.3.1 mysql5.7主从 https://github.com/apache/shardingsphere 二.数据库表准备 温馨小提示:此sql执行时,如果之前有存在相应库和表会进行自动删除后再创建! DROP DATABAS

  • C语言算法金手指摩尔投票法手撕绝大多数问题

    目录 正片开始 概念 优点 算法核心 实现 正片开始 概念 嘛是摩尔投票法?简单来说就是投票法,算法解决的问题是如何在任意多的候选人,选出获得票数最多的那个.常见的算法是扫描一遍选票,也就是遍历,对每个候选人进行统计的选票进行统计. 那我遍历难道不香吗? 这里就要讲一下投票法的过人之处 优点 当执行有序情况时,只要找到中位数,然后检查中位数的个数是否超过选票的一半即可.但是当对象的数目不定时,统计选票可能会执行较长时间,相比原来的时间复杂度 O(n) ,可能需运行 O(n^2) 的时间. 针对无

  • C语言实现动态链表的示例代码

    目录 结构体定义已经函数声明 函数实现 创建一个链表 判断链表是否为空 获得链表中节点的个数 在某个特定的位置插入一个元素 获得指定下标的节点的元素 删除一个节点 链表逆序 链表的清空 链表的销毁 链表的遍历 按特定的元素查找节点 按某些特定的条件删除所有符合情况的节点 链表的排序 总结 链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的.链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成.每个结点包括两个部分:一个是存储

  • C++算法计时器的实现示例

    目录 1.毫秒级精度 1.1 CLOCKS_PER_SEC 1.2 GetTickCount()函数 (Windows API) 1.3 timeGetTime()函数(Windows API) 1.4 timeval结构体(Linux) 2.微秒级精度 QueryPerformanceCounter()函数和QueryPerformanceFrequency()函数(Windows API) 3.纳秒级精度 4.利用chrono的各精度集成版(本质微秒) 4.1 chrono库介绍 4.2 代

随机推荐