给定一个整数,例如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;
}
答案 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的数字。