添加逗号,链接奉上
目录
- 方法1:整体存入
- 思路:
- 代码实现:
- 方法2:分段输出
- 思路:
- 代码实现:
方法1:整体存入
思路:
整体思路:
我们发现这个
整数N
对于最后1位
是比较容易操作的,
故我们可以倒序
存入一个字符数组,每隔3位
在输入一个逗号
例如:
我们有1 2 3 4 5
我们在字符数组中倒序存入:5 4 3 ,2 1
最后倒序输出:12,345
代码实现:
int main()
{
int n = 0;
scanf("%d", &n);
char arr[20];
int i = 0;
int count = 0;
while (n)
{
if (count != 0 && count % 3 == 0)
{
arr[i++] = ',';
count = 0;
}
arr[i++] = n % 10 + '0';
//因为是字符数组,需要+‘0’,否则以字符形式输出时为特殊字符,输出不了
count++;
n /= 10;
}
for (i--; i >= 0; i--)
{
printf("%c", arr[i]);
}
return 0;
}
方法2:分段输出
思路:
将数字每位倒序输入进整形数组,
输出时先判断最开始的前几位是否满足3
位,以此考虑是否需要输出逗号
判断完后再3
位输出一次逗号
代码实现:
int main()
{
int n = 0;
int tmp = 0;//防止找不到n
scanf("%d", &n);
tmp = n;
int arr[20] = { 0 };
int i = 0;
while (tmp)//利用tmp操作
{
arr[i++] = tmp % 10;
tmp /= 10;
}
tmp = n;//恢复tmp
int first = 0;
int count = 0;//用来维护first
first = i % 3;//3位一个逗号,第一个需要根据情况判断
if (first != 0 && i > 3)
//当满足3倍的位数时或是位数小于3时,不需要对第一个逗号特殊判断
{
for (i--; i >= 0; i--)
{
printf("%d", arr[i]);
count++;
if (count == first)
{
printf(",");
break;
}
}
}
count = 0;
for (i--; i >= 0; i--)
{
printf("%d", arr[i]);
count++;
if (i != 0 && count % 3 == 0)
{
printf(",");
}
}
return 0;
}
欢迎讨论