大家好,所以输入中有一个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;
答案 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",然后打印。