将9位数转换为3位3位数

时间:2015-10-15 16:53:04

标签: c math logic

大家好,所以输入中有一个9位数字(123456789),我需要将其分解为第一个中间位置和最后三个数字(123,456,789)。  我知道我可以使用modulo来获取最后三位数字。

first_group_of_three = input number % 1000;

但我不知道如何获得另外两组。 任何帮助将不胜感激。

更新! 感谢milevyo的答案,我设法弄明白。现在代码怪异,我是一个初学程序员,我想问一下什么是更有效的方式编写这个代码(下面),可能使用较少的变量或一些其他技术。我没有把它变成char,因为我们还没有被允许,因为我们还没有学会它#34;

     scanf("%d" , &input_number);
   last_group_of_three = input_number % 1000;
   temp = (input_number-last_group_of_three)/1000;
   middle_group_of_three = temp % 1000;
   first_group_of_three = (temp-middle_group_of_three)/1000;

3 个答案:

答案 0 :(得分:1)

first_group_of_three = input number % 1000;
shift=(input number-first_group_of_three)/1000

second_group_of_three = shift % 1000;

and so on

答案 1 :(得分:1)

简化:@Barmar

scanf("%d", &input_number);

last_group_of_three = input_number % 1000;
input_number /= 1000;

middle_group_of_three = input_number % 1000;
input_number /= 1000;

// % 1000 only if original input exceeded 9 digits
first_group_of_three = input_number % 1000; 

注意:许多编译器会将% 1000/ 1000优化为单个操作,提供两个结果:余数&商。

(OP没有提到代码应该用负数做什么。)

答案 2 :(得分:0)

您可以在字符表中输入数字作为字符串,然后前3个数字将保留表格的第4个字符将是char','并且第5,第6,第7个字符将是接下来的3个数字等。所以你最终将创建字符串" 123,456,789",然后打印。