我正在尝试一项希望用户输入2个4位整数的实验练习。然后程序将提取4位整数中的所有数字,并使用该数字进行算术计算,就像下面的图像链接一样。
Arithmetic Calculation with 2 4-digit integer
然而,本实验练习的目的不是允许我自己使用for循环来获得结果。
例如,当我想获得4位整数的最后一个数字时,我可以通过使用它来轻松完成。
int firstDigit = firstNo % 10; //i will get 4 if the integer is 1234
int secondDigit = secondNo % 10; //i will get 8 if the integer is 5678
当然,在使逻辑正确之前,表格格式化无需担心。接下来是使用从上面获得的数字非常简单的数字计算。
int addfirstNumbers = firstDigit + secondDigit;
int minusfirstNumbers = firstDigit - secondDigit;
int multiplefirstNumbers = firstDigit * secondDigit;
int modfirstNumbers = firstDigit % secondDigit;
double divfirstNumbers = firstDigit / secondDigit;
cout << "add: " << addfirstNumbers << endl
<< "minus " << minusfirstNumbers << endl
<< "multipile " << multiplefirstNumbers << endl
<< "remainder " << modfirstNumbers << endl
<< "division " << divfirstNumbers << endl;
我明白forloop可以让我的生活更轻松。但是我只是尝试了一个很长的方法,然后再试一下forloop的短路。
但即使在我继续之前,我仍然无法从这个4位整数中提取出其他数字。
答案 0 :(得分:3)
与评论中提到的Mike Vine一样,你可以在取模之前进行整数除法。
#include <iostream>
int main(){
int x = 1234;
std::cout << (x/10)%10 << "\n";
}
#Output
3
编辑:这适用于所有数字的地方。要从结尾找到第n个值,只需向除数添加0即可。例如,为了找到最后一个,你想要将x除以100。
答案 1 :(得分:1)
你可以简单地做
int secondLastDigit = ((i - (i % 10)) % 100)) / 10;
对于i = 5678:
i % 10
(5678%10)等于8
i - (i % 10)
(5678 - 8)因此等于5670。
(i - (i % 10)) % 100
(5670%100)等于70
最后(i - (i % 10)) % 100) / 10
(70/10)= 7
答案 2 :(得分:0)
这很简单,只需在数字上使用模数运算符100(num%100
),得到最后两位数,然后将结果除以10,并将数字存储在int中(所以十进制被正确截断。)