在某些类型的问题中,我经常遇到这种情况,即我需要重新排列数字的变量,例如int e = 2385;
。让我们假设我不知道那里存储了哪个号码,但我仍需要转移第2和第4个位置。当我知道变量的值时,我可以简单地做e = 2583
,但是当我不知道时我根本无法解决问题。
另一种情况是,当我有两个值并希望使用它们来形成另一个数字,即int a = 2, b = 1;
时,我需要对它们进行排序,以便得到21或212.我的意思是,这很容易当我输出数据时,我可以这样做:
printf("%d%d\n",a,b);
printf("%d%d%d",a,b,a);
问题是我必须将此号码存储在另一个变量中。我不知道该怎么做。
答案 0 :(得分:3)
这可以分为两个任务:(1)将数字分成几部分,(2)将部分组合成一个整数。
要将数字拆分成碎片,请使用除法和模数运算符。
int num = 2385;
int a = num / 1000; // 2
int b = num / 100 % 10; // 3
int c = num / 10 % 10; // 8
int d = num / 1 % 10; // 5
诀窍是使用除法删除右边的数字,然后使用模数来保留最右边的数字。例如,要计算数百个位置(b
),我们计算2385/100,即23. 23%10是将23除以10时的余数。余数为3.
要将这些碎片合并为一个数字,请使用乘法和加法进行相反的操作。
num = a * 1000 // 2000
+ d * 100 // + 500
+ c * 10 // + 80
+ b * 1; // + 3
// ----
// 2583
请注意我如何切换d
和b
来交换这些数字。