【问题标题】:Split int into 2 parts in C在 C 中将 int 拆分为 2 部分
【发布时间】:2018-09-12 21:42:39
【问题描述】:

我希望用户输入一个 7 位数的 Int,我已经完成了。

我有一个 7 位的 Int 值,我想在第 3 位之后添加一个连字符(将其转换为电话号码格式)

我想这样做的方法是让系统创建 1 个新 Int,它相当于初始 Int 的前 3 位数字,然后是第二个相当于最后 4 位数字。然后在 printf 之间加上连字符

int phoneNumber;

scanf

phoneNumber = 1234567

int 1pNum = 123

int 2pNum = 4567

printf(1pNum + "-" + 2pNum)

别担心,我知道我解释的格式不完全正确,我只想知道如何拆分它

【问题讨论】:

  • 1pNum = phoneNumber / 10000; 2pNum = phoneNumber % 10000; ?
  • 没有必要将它分成两个整数,你可以将它存储在一个字符串中并打印其中的两半。
  • 2pNum = phoneNumber % 10000; 1pNum = (phoneNumber - 2pNum) / 10000; 这样的事情就可以了。
  • 电话号码比数字更多 - 是否有特定原因需要数字类型的电话号码?
  • 1pNum2pNum 不是有效的标识符。

标签: c


【解决方案1】:
#include <stdio.h>

int main(void)
{
  int phoneNumber = 1234567;
  int p1 = phoneNumber / 10000;
  int p2 = phoneNumber % 10000;
  printf("OK: %03d-%04d\n", p1, p2);
  // OK: 123-4567
  return 0;
}

【讨论】:

  • 当 0 出现在错误的位置时,这可能不会满足您的要求。例如,1230056 将打印“123-56”。你可以用“%03d-%04d”来解决这个问题。
【解决方案2】:

解决此问题的简洁代码是将其转换为字符串并在第 4 个字符中插入连字符。假设您使用的是 c: 第一部分是从 int 到 string 你可以使用类似 (http://www.cplusplus.com/articles/D9j2Nwbp/) 的代码

 template <typename T>
   string NumberToString ( T Number )
 {
    ostringstream ss;
    ss << Number;
    return ss.str();
 }

对于第二部分,您可以使用 .insert,例如:

strNumber.insert(4, "-");

【讨论】:

  • 问题标记为C,而不是C++
  • 正确感谢您让我知道 Ajay,他们很亲密,这个概念对 Owen 来说是相同的和有帮助的 :) 我也会尝试找到 C 的确切代码并在此处发布
猜你喜欢
  • 2018-08-19
  • 2013-10-20
  • 2014-10-23
  • 1970-01-01
  • 2013-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多