我们首先看该题目的要求,输入一个整数,给这个整数每三位添加一个逗号。然后以字符串的形式打印。
我们现在来分析如何实现该的题目。
思路:我们可以一个一个取出该整数的最后一位,存入一个字符数组中。每存三个之后就存一个','。最后将该字符数组打印即可。
当整数为0时,说明已经将该整数的每一位都取出来了,我们现在只需逆序打印该字符数组就可以得到添加逗号后的结果。
我们现在来实现该思路:
这就是实现我们思路的代码轮廓,我们现在给里面添加代码来实现功能。
#include <stdio.h>
int main()
{
//输入整数
int N = 0;
scanf("%d",&N);
//字符数组
char arr[14] = {0};
while(N)
{
//获取每一位数字
}
//打印字符数组
return 0;
}
我们可以利用下面的代码获取该整数的每一位数并转换成字符存入字符数组中,并且每存三位会放入 一个逗号。(给一个整数加上字符'0',就可以将其转化成字符)
int i = 0;
int count = 0;
while(N)
{
//每存3个就放入一个逗号
if(count != 0 && count % 3 == 0)
{
arr[i++] = ',';
}
//获取每一位数字
arr[i++] = N % 10 + '0';
N /= 10;
count++;
}
那我们是否可以直接逆序打印该数组呢?不行!
当我们放入最后一个数之后i仍然++,所以i所指的是一个空的元素。
我们观察到,当我们将该整数放入数组中,i最终会指向最后一个数的下一个位置。所以我们在打印该数组时应该先让i--。
下面附上完整代码:
#include <stdio.h>
int main()
{
//输入整数
int N = 0;
scanf("%d",&N);
//字符数组
char arr[14] = {0};
int i = 0;
int count = 0;
while(N)
{
//每存3个就放入一个逗号
if(count != 0 && count % 3 == 0)
{
arr[i++] = ',';
}
//获取每一位数字
arr[i++] = N % 10 + '0';
N /= 10;
count++;
}
//打印字符数组
for(i--; i>=0; i--)
{
printf("%c",arr[i]);
}
return 0;
}
完!