C语言/数据结构实现数字字符串千分位格式化(去除前导零+保留小数部分)
📅 2026/7/15 22:41:23
👁️ 次浏览
问题描述小M在工作时遇到了一个问题他需要将用户输入的数字字符串转换为带千分位逗号的格式。输入可能包含小数部分也可能不包含。处理规则如下去除前导零如果整数部分前面有无效的0比如000123需要去除这些前导零但注意不要去除小数点后的0小数部分的0需要保留千分位格式化整数部分从右向左每3位添加一个逗号第一个逗号前可能不足3位保留小数部分如果输入包含小数部分则原样保留所有小数位如果输入没有小数部分则输出也不包含小数部分注意输入保证是有效的数字字符串可能包含前导零也可能包含小数点。输入格式输入为一个字符串s表示需要格式化的数字输出格式返回格式化后的字符串约束条件输入字符串长度不超过 100输入保证是有效的数字格式可能包含前导零和小数点输入至少包含一个数字不会为空字符串输入不会包含千分位逗号或其他非数字字符除了可能的小数点程序代码#include stdio.h#include stdlib.h#include string.hchar* formatNumber(char* s) {char* result (char*)malloc(200 * sizeof(char));char integer[100], decimal[100];integer[0] \0;decimal[0] \0;// 分离整数部分和小数部分char* dot strchr(s, .);if (dot ! NULL) {strncpy(integer, s, dot - s);integer[dot - s] \0;strcpy(decimal, dot 1);} else {strcpy(integer, s);}// 去除整数部分的前导零int start 0;while (integer[start] 0 integer[start 1] ! \0) {start;}// 千分位格式化整数部分char formatted[100] ;int len strlen(integer start);int firstGroup len % 3;if (firstGroup 0) firstGroup 3;int idx start;// 第一组strncat(formatted, integer idx, firstGroup);idx firstGroup;// 后续每3位一组while (idx start len) {strcat(formatted, ,);strncat(formatted, integer idx, 3);idx 3;}// 拼接结果if (dot ! NULL) {sprintf(result, %s.%s, formatted, decimal);} else {sprintf(result, %s, formatted);}return result;}int main() {printf(%s\n, formatNumber(1294512.12412));printf(%s\n, formatNumber(0000123456789.99));printf(%s\n, formatNumber(987654321));printf(%s\n, formatNumber(0000.1200));printf(%s\n, formatNumber(1234));return 0;}#include stdio.h #include stdlib.h #include string.h char* formatNumber(char* s) { char* result (char*)malloc(200 * sizeof(char)); char integer[100], decimal[100]; integer[0] \0; decimal[0] \0; // 分离整数部分和小数部分 char* dot strchr(s, .); if (dot ! NULL) { strncpy(integer, s, dot - s); integer[dot - s] \0; strcpy(decimal, dot 1); } else { strcpy(integer, s); } // 去除整数部分的前导零 int start 0; while (integer[start] 0 integer[start 1] ! \0) { start; } // 千分位格式化整数部分 char formatted[100] ; int len strlen(integer start); int firstGroup len % 3; if (firstGroup 0) firstGroup 3; int idx start; // 第一组 strncat(formatted, integer idx, firstGroup); idx firstGroup; // 后续每3位一组 while (idx start len) { strcat(formatted, ,); strncat(formatted, integer idx, 3); idx 3; } // 拼接结果 if (dot ! NULL) { sprintf(result, %s.%s, formatted, decimal); } else { sprintf(result, %s, formatted); } return result; } int main() { printf(%s\n, formatNumber(1294512.12412)); printf(%s\n, formatNumber(0000123456789.99)); printf(%s\n, formatNumber(987654321)); printf(%s\n, formatNumber(0000.1200)); printf(%s\n, formatNumber(1234)); return 0; }运行结果
问题描述小R正在计划一次从地点A到地点B的徒步旅行,总路程需要 N 天。为了在旅途中保持充足的能量,小R每天必须消耗1份食物。幸运的是,小R在路途中每天都会经过一个补给站,可以购买食物进行补充。每个补给站的食物每份的价格可能不…
📅 2026/7/15 22:41:23
数据库SQL Plan的自动演进:用多臂老虎机算法在线选择最优执行计划
一、同一条SQL,优化器昨天选A方案、今天选B方案——计划漂移的烦恼
生产环境中最让DBA头疼的问题之一:一条运行了半年的SQL突然变慢了。排查发现不是数据量变了,不…
📅 2026/7/15 22:41:23
LLMOps平台搭建:从实验追踪到模型服务的完整流水线
一、LLMOps的独特挑战
LLMOps不是MLOps的简单平移。两者的核心差异在于规模和成本。LLM参数规模从7B到数百B。推理成本是传统ML模型的100-1000倍。提示词工程是全新的变更管理维度。评估标准从精确率变为语义相关性…
📅 2026/7/15 22:41:23
还记得第一次打开 Python 编辑器时的场景吗?面对空白的代码窗口,你可能在想:这么多教程,到底该从哪里开始?变量、循环、函数这些概念听起来简单,但为什么自己写出来的代码总是报错?网上的资料要…
📅 2026/7/15 23:28:43
1. 数字电源保护机制的核心需求在电力电子系统中,过流和过压保护是确保设备安全运行的生命线。传统基于软件中断的保护方案存在致命缺陷——从故障发生到CPU响应通常需要数百纳秒甚至微秒级延迟。对于开关频率超过100kHz的现代数字电源系统,这种延迟可能…
📅 2026/7/15 23:28:43
1. 为什么选择Homebrew和pip3部署Jupyter生态在Mac上搭建Python数据科学环境,Homebrew和pip3的组合堪称黄金搭档。我这些年帮数百位开发者配置过环境,这套方案的优势非常明显:首先,Homebrew作为macOS的包管理神器,能帮…
📅 2026/7/15 23:28:43
视频地址:https://www.bilibili.com/video/BV1kP5e6BENv?spm_id_from333.788.videopod.sections&vd_source707ec8983cc32e6e065d5496a7f79ee6第三课:程序化生成森林
建立一个PCG空图表2个主要的节点,地形数据获取节点和表明采样器节点&a…
📅 2026/7/15 23:28:43
1. Zynq RAM三种读写模式深度解析第一次用Zynq的Block RAM时,我就被"写优先"和"读优先"搞晕了——明明代码逻辑没问题,读出来的数据却总是不对。后来才发现是读写模式没选对,这个问题困扰了我整整两天。今天我们就来彻底…
📅 2026/7/15 23:28:43
一、AOP 基础概念1. 什么是 AOPAOP:面向切面编程(Aspect Oriented Programming) 核心思想:横向抽取通用公共逻辑,不侵入业务代码,实现解耦。 传统 OOP 是纵向继承;AOP 是横向切面,统…
📅 2026/7/15 23:27:43
1. COM线程模型基础与CoInitializeEx核心作用在Windows平台开发中,组件对象模型(COM)的线程处理机制一直是开发者必须掌握的底层知识。作为COM初始化的门户函数,CoInitializeEx不仅决定了对象在何种线程环境下运行,更影响着整个组件的并发性能…
📅 2026/7/15 0:00:17
1. 为什么M芯片Mac用户需要降级到Monterey? 去年刚拿到M2芯片的MacBook Pro时,我第一时间升级到了Ventura系统。结果第三天就遇到了微信闪退、Final Cut Pro渲染卡顿的问题。后来在开发者论坛发现,不少专业软件对Ventura的适配都存在问题。这…
📅 2026/7/15 0:00:17
1. 背景与核心概念在AI大模型快速发展的今天,许多开发者和研究者都面临一个现实问题:如何在有限的硬件预算下实现高效的本地大模型部署。特别是对于个人开发者和小型团队来说,购买最新的高端显卡成本高昂,而利用现有的或二手硬件资…
📅 2026/7/15 0:00:17
豆包openclaw最近圈子里都在聊豆包openclaw,我也没忍住,掏腰包入手了一套。说实话,刚拿到手的时候,心里是打鼓的。毕竟市面上类似的智能硬件太多了,有的吹得天花乱坠,用起来却是一堆bug。为了不让大家的钱打水漂,我连续用了半个月。从开箱到日常高频使用,甚至故意测试它…
📅 2026/7/15 22:51:06
SQLyog 13.3.1 社区版在Windows 10/11上的完整安装与连接指南 对于刚接触MySQL数据库管理的开发者和学生来说,选择一个直观易用的图形化管理工具至关重要。SQLyog作为一款轻量级但功能强大的MySQL GUI工具,能够显著提升数据库操作的效率和体验。本文将详…
📅 2026/7/15 19:03:10
SPEC CPU 2006 跨平台基准测试深度实战:ARM/X86/MIPS 架构配置优化与结果分析方法论在当今多元化的计算架构时代,如何客观评估不同处理器平台的真实性能成为系统工程师和性能优化专家的核心挑战。SPEC CPU 2006 作为业界公认的计算密集型基准测试套件&am…
📅 2026/7/15 14:09:20
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/15 22:46:06
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/15 2:24:18
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/15 22:51:03