前言
今天来看看如何使用C语言对一串数字添加逗号吧,在我们电子账户上的余额都是每3位数有一个逗号吧,今天让我们来使用C语言实现这个功能。
题目描述
对于一个较大的整数 N(1<=N<=2,000,000,000)
比如 980364535,我们常常需要一位一位数这个数字是几位数,但是如果在这 个数字每三位加一个逗号,它会变得更加易于朗读。
因此,这个数字加上逗号成如下的模样:980,364,535请写一个程序帮杰克完成这件事情吧
输入描述
一行一个整数 N
输出描述
一行一个字符串表示添加完逗号的结果
题目分析
我们来看看这道题目,首先我们要理清楚这道题目的思路,我们需要一个变量来存放咋们输入的数字N,但是如何在这个变量中添加‘,’进去呢,我们可以定义一个数组来存放这个数字中的每一位数,之后在数组中添加逗号是不是就会简单很多呢。
听起来是不是很简单,其实在这里面我们还需要去想,我们要以怎样的方式将数字与逗号同时存放在数组中,我们是每三位存一个逗号,之后其他数字顺着往后移3位?还是每次存3位加逗号将后面的位数覆盖之后再拷贝后面的数据进入之后再存3位加逗号如此循环?这个思路看起来是没有问题但是实现困难,在想写代码的时候都没有头绪的。
之后了解到一个方法,我们可以将数字倒着存放到一个数组里,每存3位加一个‘,’,循环存放直到结束,之后我们将字符串倒着往回打印即可。
为什么我们要将数字倒着存放进入数组呢,因为在倒着存放数组的时候我们只需要不断的对数字模10,这样我们就可以将数字一位一位的剥离出来,之后放入数组中添加‘,’就变得很简单了。
代码实现
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
int i = 0;
int j = 0;
char a[13] = { 0 };
int k = 0;//创建变量k用来计数,直接使用i的话会引起数据混乱,i被加之后直接%3导致数字不能被
//当n被剥离到0的时候结束循环
while (n)
{
if (k != 0 && k % 3 == 0)
{
a[i++] = ',';
}
a[i++] = n % 10 + '0';
n /= 10;
k++;
}
//输出
for (int j = i - 1;j >= 0;--j)
{
printf("%c", a[j]);
}
return 0;
}
代码解析
这里我们需要注意的是,当我们给n%10之后需要给n/10保证我们是有效剥离数字。
运行结果
在我们写代码的时候一定要明确思路,这个代码看似很简单,但是在写的时候因为思路的问题还是写了好久才写出来,还是练少了,加油加油!!!
如果有不对的地方还请大佬指正!!跪谢