C语言之数字处理中的常见问题

2023-10-31

**

C语言之数字处理中的常见问题

**

问题1:如何统计一个数字n是几位数?

算法思想:定义一个记录数字位数的变量t(计数器),并初始化0,每丢弃一次个位数字时,计数器++1,直到被处理的数字n==0.
源代码:

int Count(long long)
{
	int t = 0;                                       // 计数器
	if(n == 0)                                       //特视情况0
	return 1;
	while(n !=0)
	{
		t++;
		n /= 10;                                     //丢弃个位数字
	}
	return t;
}

测试用例:
测试用例要尽量详细,防止出现bug,这里为了函数功能范围更宽,使用llong long数据类型
在这里插入图片描述

测试结果:
在这里插入图片描述

问题2:如何顺序输出数字n的每一位数字?

算法思想:先得到数字n的高位,然后输出高位,再丢弃高位,直到n==0;
其中得到高位的方法是:借助于已有的Count(n)函数得到该数字n的位数t;
则第一个求最高位的除数的值就是pow(10.0,t-1);
第一个最高位就是n/power;

综上:

源代码:

void Show(n)
{
	if(n == 0)
	{
		printf("0\n");
		return;                                         //提前结束该函数
	}
	else if(n < 0)                                       //负数处理
	{
		printf("-");
		n = -n;
	}
	int t = Count(n);                                   //得到位数t
	int power = (int)pow(10.0,t - 1);                   //得到第一个除数
	while(n != 0{
		printf("%d",n/power)        ;                    //输出最高位
		n %= power;                                      //丢弃上一个最高位
		power /= 10;
	}
	printf("\n");
}

测试用例:
在这里插入图片描述

测试结果:
在这里插入图片描述
容易看到上述程序在Show(1234567800)这里出现bug:最后两位00没有被输出。
解决方法:用for循环代替while循环,可以让所有数字的输出直到最后一位数
代码修改:

for (int i = 0;i<t;i++)
{
	printf("%d ",n/power);
	n %= power; 
	power /= 10}

测试结果:
在这里插入图片描述

Bug修复!!!!!!!!!

问题3:如何逆序输出n的每一位数字

算法思想:先得到个位,然后输出这个个位,最后丢弃;重复该操作,直到n == 0;

源代码:

void ReverseShow(int n)
{
	if(n == 0)
	{
		printf("0\n");
		return;//提前结束该函数
	}
	else if(n < 0)
	{
		printf("-");
		n = -n;
	}

	while(n != 0)
	{
		printf("%d ",n%10);
		n /= 10;
	}
	printf("\n");
}

测试用例:
在这里插入图片描述

测试结果:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言之数字处理中的常见问题 的相关文章

随机推荐

  • jq中快速返回祖先元素

    div class one div class two div class three div class focus 我是这个div div div div div
  • 解决页面favicon.ico文件不存在提示404问题

    所谓favicon 即Favorites Icon的缩写 顾名思义 便是其可以让浏览器的收藏夹中除显示相应的标题外 还以图标的方式区别不同的网站 当然 这不是Favicon的全部 根据浏览器的不同 Favicon显示也有所区别 在大多数主流
  • 逗号和分号

    上面的程序
  • 将python代码打包成可执行文件

    文章目录 打包工具 使用 pyinstaller 安装pyinstaller库 打包 Python是一种高级编程语言 它具有易学易用 跨平台等优点 因此在开发中得到了广泛的应用 然而 Python代码需要在Python解释器中运行 这对于一
  • UML类图几种关系的总结

    UML类图几种关系的总结 转载链接 http blog csdn net sunboy 2050 article details 9211457 UML类图 描述对象和类之间相互关系的方式包括 依赖 Dependency 关联 Associ
  • mac生成树形结构

    第一步 安装tree brew install tree 第二步 在要展示树结构的文件里面打开终端 运行命令 tree d 只显示文件夹 tree L n 显示项目的层级 n表示层级数 比如想要显示项目三层结构 可以用tree l 3 tr
  • firefox安装selenium插件

    1 目前新版类似Firefox58不兼容 打开 https addons mozilla org en US firefox addon selenium ide 网址 显示add to firefox为灰色 下载Firefox48即可 2
  • R:RStudio和RStudio Server

    RStudio是R语言开发中的利器 是最好用的R语言IDE集成环境 RStudio Server更是利器中的神器 不仅提供了Web的功能 可以安装到远程服务器上 通过Web进行访问 还支持多用户的协作开发 RStudio 是一个强大的 免费
  • IDEA——手把手教你mybatis的使用(新手教程)

    说到Mybatis 很多人不知道这是用来干什么的 简单来说就是用来优化JDBC的使用 我们可以理解为一个这样的流程 数据库 gt JDBC gt MyBatis gt Java 今天来教一下简单的mybatis使用方法 对于初学者很友好 目
  • C++基础(11)类模板

    1 类模板 类模板和函数模板的定义和使用类似 我们已经进行了介绍 有时 有两个或多个类 其功能是相同的 仅仅是数据类型不同 类模板用于实现类所需数据的类型参数化 include
  • Java并发工具之CyclicBarrier

    一 简介 摘自 Java并发编程的艺术 一书中 CyclicBarrier的字面意思是可循环使用 Cyclic 的屏障 Barrier 它要做的事情是 让一组线程到达一个屏障 也可以叫同步点 时被阻塞 直到最后一个线程到达屏障时 屏障才会开
  • VQ-VAE

    前言 之前总结了一篇VAE的 这次来个它的离散版本 VAE Variational Autoencoder 简单记录 论文 Neural Discrete Representation Learning 代码 https gitee com
  • 微信小程序+TP5——token令牌生成

    token令牌的作用 客户端每次登录服务器端都会生成一个唯一的token令牌值 并返回到客户端 而服务器端会默认将token令牌值作为key 用户信息作为value 一一对应存入缓存中 当用户每一次发送请求时 都要携带这个token令牌值
  • Linux基本指令(下)

    Linux基本指令 下 前言 cat指令 more命令 less命令 head命令 tail命令 wc指令 date指令 cal指令 find指令 grep指令 top命令 alias命令 zip unzip命令 tar命令 bc命令 un
  • linux下c程序调用cuda,Linux下创建CUDA程序动态链接库示例

    1 g W Wall Wimplicit Wswitch Wformat Wchar subscripts Wparentheses Wmultichar Wtrigraphs Wpointer arith Wcast align Wret
  • Sql优化

    以MySQL DBMS MySQL Database Management System 数据库管理系统 为例 测试数据量300w 不同方案效率对比 一 测试数据导入 1 新建数据库sql optimization 设置字符集utf8 2
  • 托管与非托管的交互问题(函数调用)

    记录一下免得以后忘记 交互首先应该要解决数据结构的处理 这个资料较多 不记录了 1 托管 调用 非托管 用的较多 DllImportAttribute dll库文件 EntryPoint 函数 非托管函数的调用约定 编码等设置 extern
  • (React入门)React中的插槽

    注意 react中其实是没有插槽这个概念的 默认插槽 通过组件标签体传入结构 固定写法props children 具名插槽 通过标签属性props传入结构 默认插槽 这里使用的是函数式组件写法 子组件 function Son props
  • js 奇淫巧技

    各种 js 的奇淫巧技 在这里记录一下 也分享给广大网友 目录 js 可选链 sleep函数实现 函数劫持 自动执行函数 任意值转换为 boolean 数组 查找 过滤 更改 console输出表格 js 可选链 a b 对象 a 访问属性
  • C语言之数字处理中的常见问题

    C语言之数字处理中的常见问题 问题1 如何统计一个数字n是几位数 算法思想 定义一个记录数字位数的变量t 计数器 并初始化0 每丢弃一次个位数字时 计数器 1 直到被处理的数字n 0 源代码 int Count long long int