如何用C ++分隔给定整数的数字?

时间:2012-03-10 10:05:34

标签: c++

你能帮帮我吗?我尝试使用while语句,但我无法编写程序。

给定一个整数,例如12564897,程序必须显示1-2-5-6-4-8-9-7

如何在C ++中检测到。非常感谢。

我尝试了五位数整数。

int z,y,x,result,number1,number2,number3,number4,number5;
cout<<"Enter a five digit integer: ";
cin>>result; //read number

cout<<"The number is: "<<result<<endl;

number1 = result / 10000;

x = result / 1000;
number2 = x % 10;

y = result / 100;
number3 = y % 10;

z = result / 10;
number4 = z % 10;

number5 = result % 10;

cout<<"digits are: "<<number1<<"-"<<number2<<"-"<<number3<<"-"<<number4<<"-"<<number5<<endl;

system("pause");
return 0;

}

6 个答案:

答案 0 :(得分:4)

我认为最聪明的方法是创建一个除以十(或基数)的循环并打印剩余部分,然后除以十并再次执行。在preudo代码中:

let a = input
let base = 10
do
{
     store a mod base in result
     a = (integer) a / base;
}while(a>0)
print result reversed

mod是余数运算符( % in C/C++ ) 请注意,通过更改基数,您可以使用任何数字表示的数字

答案 1 :(得分:0)

将整数转换为字符串,然后打印该字符串的每个字符,其中包含-

答案 2 :(得分:0)

这是来自程序的片段,它以相反的顺序打印出整数。 你可以修改它以满足你的需要(这是你的功课)

//Read input number
cin >> dInput;
//Calculate log10
int logValue = (int)log10(dInput);

//Iteration through n-th power of 10
for(int i = logValue; i >= 0; i--) {
    //Calculate actual power of 10
    double d = pow(10,(double)i);

    int n = (int)dInput / d;

    //Subtract remainder from previous number
    dInput -= (n * d);

    //Print out "-"
    cout << n;
    if(i != 0) << "-";
}

答案 3 :(得分:0)

要获得某个数字n的最低位,请计算n % 10

要获得左侧的下一个数字,请先执行n /= 10,然后重复上述步骤。

依此类推,直到n除以10时变为0。

最后,反转聚集数字的顺序。

要将一位数字转换为字符,请向其添加'0'

答案 4 :(得分:0)

我考虑过编写代码本身,但由于这是一个功课,我会给你这个想法并让你编写代码

首先,您将使用sprintf函数

将该整数转换为字符串

然后你将创建一个具有字符串大小的整数。设为 S

然后你会做一个for循环,

i=1, i < S, i+=2

我从1开始,因为 - 第一个字符后

在该循环中,您将在i的位置插入 - 字符,然后您将更新大小为S的整数S.如果您没有更新它,则会发生以下情况(例如)

12345 (size = 5)
1-2345 (size = 5, real size = 6)
1-2-345 (size = 5, real size = 7)

它会在这里停止。因为条件i&lt; 5将失败

这就是全部。祝你好运。

答案 5 :(得分:0)

好的,既然其他人都去了,这是我的尝试:

void outInt(int inInt){
  int dividend;
  dividend=inInt/10;
  if (dividend!=0){
    outInt(dividend);
    cout<<"-"<<inInt%10;
  }
  else
    cout<<(inInt);
};

不需要'打印结果反转'。应该为0而不打印任何' - '表示小于10的数字。