【问题标题】:Converting a 9 digit number into three 3 digit number将一个 9 位数字转换为三个 3 位数字
【发布时间】:2015-10-15 16:53:03
【问题描述】:

好的,所以我输入了一个 9 位数字 (123456789),我需要将其分解为第一个中间和最后三个数字 (123,456,789)。 我知道我可以使用模来得到最后三位。

first_group_of_three = input number % 1000;

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

更新! 感谢 milevyo 的回答,我设法弄明白了。现在,对于那里的代码怪胎,我是一个初学者程序员,我想问什么是编写此代码的更有效方法(如下),也许使用更少的变量或一些其他技术。我没有将其转换为 char,因为我们不被允许这样做,因为我们仍然“还没有学会它”

     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;

【问题讨论】:

  • 到现在为止你尝试了什么?
  • 除以 1000 并使用模数。
  • 嗯...分开。这是一道四年级的数学题,不是编程题。
  • 我知道这是一个数学问题,这就是我标记数学的原因,我什至在基础数学方面都非常糟糕,因为我在学校学习时错过了它,所以如果这让某人感到厌烦,我深表歉意
  • @LuanL 这是一个问答网站。与其更改问题,不如接受一个答案(您甚至可以发布您自己的答案),如果找到一个可接受的答案,然后然后发布您的新问题,并附上指向该问题的链接(并强调需要新帖子)。

标签: c math logic


【解决方案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

【讨论】:

  • 为什么不只是shift= input number/1000;
  • 如果有人想用float代替int,结果会是什么?
  • 如果想使用floatinput number % 1000 就不会编译——所以input number/1000 的结果是无关紧要的。将使用fmodf() 代替%。所以可以肯定 OP 的代码使用的是整数。
  • 它没有意义,但我保持逻辑。
  • first_group_of_three 不是第一组(假设 LTR 布局)。即使在你被告知这个事实之后仍然保留无用的代码是不寻常的。即使您可以写出更好的答案,这几乎就像您正在努力写出低于标准质量的答案。至少我是这样阅读你的个人资料的。
【解决方案2】:

简化:@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 没有提到代码应该如何处理负数。)

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2020-10-17
      • 1970-01-01
      • 2012-06-06
      • 1970-01-01
      • 1970-01-01
      • 2018-03-24
      • 1970-01-01
      • 1970-01-01
      • 2015-09-30
      相关资源
      最近更新 更多