【C语言指南】对数字添加逗号

举报
倔强的石头_ 发表于 2025/09/03 15:21:47 2025/09/03
【摘要】 对于一个较大的整数,每三位数字之间添加一个逗号,以便于阅读。一种有效的解决办法就是将数字转换为字符,从右向左每次%10得到一位数字转换为字符存储到数组中,再除以10去掉一位数字。其次,要注意每次满三位添加一个逗号至数组,并且只有满3位时才添加逗号。最后,将得到的这个字符数组逆序输出。

目录

一、问题描述

二、解题思路

三、源代码

 拓展:

一、问题描述

二、解题思路

题目的要求,即对于一个较大的整数,每三位数字之间添加一个逗号,以便于阅读。这意味着我们需要从整数的最低位(最右边)开始,每数到三位数字就插入一个逗号,直到数完整个整数


一种有效的解决办法就是将数字转换为字符从右向左每次%10得到一位数字转换为字符存储到数组中,再除以10去掉一位数字。其次,要注意每次满三位添加一个逗号至数组,并且只有满3位时才添加逗号。最后,将得到的这个字符数组逆序输出。


三、源代码

int main()
{
	int N = 0;
	scanf("%d", &N);//读入要处理的整数

	char arr[14] = { 0 };//存储处理后的结果
	int count = 0;//计数器
	int i = 0;
	for (; N != 0; N /= 10)
	{
		if (count != 0 && count % 3 == 0)
		{
			arr[i++] = ',';//每三位添加一个逗号,并且count初始为0时不添加
		}
		arr[i++] = N % 10 + '0';//将每一位转换为对应的字符存入数组
		count++;
	}
	for (i--; i >= 0; i--)
	{
		printf("%c", arr[i]);//逆序输出
	}
	printf("\n");
	return 0;
}


 拓展:

如果想要让最后得到的字符数组以及打印时,是正常顺序,可以修改如下:

(将得到的字符数组顺序反转一下,最后只需要用%s打印即可)

#include<stdio.h>
int main()
{
	int N = 0;
	scanf("%d", &N);//读入要处理的整数

	char arr[14] = { 0 };//存储处理后的结果
	int count = 0;//计数器
	int i = 0;
	for (; N != 0; N /= 10)
	{
		if (count != 0 && count % 3 == 0)
		{
			arr[i++] = ',';//每三位添加一个逗号,并且N初始为0时不添加
		}
		arr[i++] = N % 10 + '0';//将每一位转换为对应的字符存入数组
		count++;
	}
	int j = 0;//数组的首部下标
	i--;   //数组的尾部下标
	       //因为上面的代码块处理时i多+了1,所以这里-1才能得到正确的下标
	while (j < i)
	{
		char tmp = arr[j];
		arr[j] = arr[i];
		arr[i] = tmp;
		j++;
		i--;
	}
	printf("%s\n", arr);
	return 0;
}
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。