添加千位分隔符——C语言

添加千位分隔符——C语言添加千位分隔符 C 语言 读入 1 个 7 位整数 要求进行格式化的输出 输出时在合适的地方加上千分位分隔符 并补

大家好,欢迎来到IT知识分享网。

文章目录


提示:以下是本篇文章正文内容,下面案例可供参考

一、千位分隔符是什么?

千位分隔符其实就是一个逗号,在数字中,每三位后添加一个千位分隔符;

示例:,添加千位分隔符的结果为:123,456,789

二、思考逻辑

1.方法一:while循环

代码如下(示例):

int i = 0; int j = 0; int main() {     long long  n = 0;     scanf("%lld", &n);     char arr[100];     while (n>=1)     {         i++;         if (i % 4 != 0)         {             arr[j] = n % 10 + '0';         }         else         {             arr[j] = ',';             arr[++j] = n % 10 + '0';         }                  if (n/10!=0)         {             j++;         }         n = n / 10;     }     int k = 0;     for (k = j; k >= 0; k--)     {         printf("%c", arr[k]);     }     return 0; } 

 (1)首先,要想实现最后输出带千位分隔符的数字,那么需要利用数组,并且因为C语言数组内部的元素一定是相同数据类型的元素,因此我们不能用整型数组来存储这些元素,所以我们应该用字符数组来接收这些元素;

并且由于所输入的数字可能有小数,而小数部分是不需要添加千位分隔符的,所以我们直接将需要输入的数字的数据类型定义为long long 类型,就能够直接将小数部分去掉,变为整型;

所以我们创建一个字符类型的数组,且要保证创建的数组的大小足够大,char arr[100];

(2)每隔三个元素,就要添加一个千位分隔符,并且要从数字最右边来算,每隔三个数字,添加一位,那么我们首先想到利用循环!并且要获取一个数最后一位的数字,那么我们可以利用取余运算符。但是获得的仍然是整型数据,因此我们需要把整型数据转化为字符类型:+‘0’即可;

而i%4!=0;实现每三个元素的循环处理;

n=n/10,直到n为一位数时,才不再进行j++;

并且要主义,n=n/10这个条件要放在if条件语句外面,否则的话,当n为一位数时,就无法进行下一次的循环,第一位数也就不能被赋值给相应的a[j];

2.方法二——利用函数递归

代码如下(示例):

int i = 1, j = 0; void recombination(char a[], long long n) {          if (i % 4 != 0)     {         a[j] = n % 10 + '0';//整型加上‘0’就变成对应的字符类型的数据;     }     else      {          a[j] = ',';          a[++j] = n % 10 + '0';          i++;      }     if (n / 10 != 0)     {         j++;          i++;         recombination(a, n / 10);     } } int main() {     long long k, n;     char a[100];     scanf("%lld", &n);     if (n < 0)     {         printf("-");         n = -1 * n;     }     recombination(a, n);     for (k = j; k >= 0; k--)         printf("%c", a[k]);     return 0; } 第二种方法,其实与第一种while循环的思想一致,不过是,循环条件换成了递归!

在这里还有局部变量与全局变量的区别问题;在这里,i与j都定义在main()主函数的外部,是全局变量,所以在函数内部,对于这两个变量的值进行修改,在到函数内部,这个值依然不会被销毁,依然可以继续使用;

最终的数组打印一定要从最后开始打印即倒着打印,才能得到正确顺序的结果!


总结

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/118832.html

(0)
上一篇 2025-11-10 09:15
下一篇 2025-11-10 09:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信