反转C中的多个数字

时间:2014-12-05 06:13:55

标签: c arrays string reverse

我有问题,在哪里我需要最多10000个测试用例作为输入并且有5000个最大数字并且必须反转数字。

如果假设我只给出3个测试用例和每个测试用例的随机数字,如下所示

n = 3,

1] 12 43 => these are the digits => o/P 55
2] 90 235 => o/P is 09 + 532 = 541
3] 23 98899 3454 2323 => o/P is 32 + 99889 + 4543 + 3232 = 107696  

我需要将这些数字作为输入。我可以在整数数组中取这些。存储数字后,我必须反转数字并添加它们。 1] 12 43可以反转为21 34并添加为21 + 34 = 55.输出为55

我们可以使用以下公式反转单个数字

num = 12345
rev_num = 0
while(num > 0) {
  rev_num = (rev_num * 10) + (num%10)
  num = num/10
}

但是没有正确的数据结构来存储它以反转在一行上输入的多个数字并添加反转的数据。 int n; int(* p)[n]; 我们根据n的值有一个动态的数组声明。如何解决这个问题。

2 个答案:

答案 0 :(得分:3)

  1. 使用fgets()阅读输入。
  2. 使用strtok()以空格作为分隔符将输入分解为字符串。
  3. 为每个令牌使用strrev()反转字符串。
  4. 然后使用atoi()将标记转换为整数。
  5. 一旦你有整数执行添加。

答案 1 :(得分:0)

您可以将数字(integer)转换为string,然后反转字符串并转换回整数。 要反转字符串,可以使用strrev()函数。 请注意,strrev()不是标准函数,它可能在标准C库中不可用