取一个数组中的两位数整数并存储为两个单位整数

时间:2012-12-18 02:43:38

标签: c

如果用户输入6,我可以解释我想要完成的最简单的方法,它会存储在numbers[0]索引中,然后再乘以2,这会给它一个产品12但不是将12存储在0数组的productValue索引中,而是将其存储为productValue[0] = 1 productValue[1] = 2我需要#include <stdio.h> #include <string.h> int main() { char numbers[17]; char productValue[8]; int i, x; printf("Please enter number\n"); scanf("%s", numbers); for(int i = 1; i <= 16; i += 2) { for(int x = 0; x < 8; x++) { productValue[x] = (numbers[i] - '0') * 2; printf("%d\n", productValue[x]); i += 2; } } } 无法让它存储个别整数。我是C的新手,如果这看起来过于简单,请给我一个休息时间。我的代码如下:

{{1}}

3 个答案:

答案 0 :(得分:2)

使用sprintf:

#include <stdio.h>
#include <string.h>

int main()
{
  char productValue[8];
  int i, x, number,result;
  printf("Please enter number\n");
  scanf("%d", &number);
  result = number * 2;
  sprintf(productValue, "%d", result);
  printf("%s\n", productValue);
  return 0;

}

答案 1 :(得分:0)

要存储整数,您可以简单地执行这样的循环,在此循环中检查每个数字,然后再转到下一个数字。基本上,获取数字mod 10将为您提供该地点的数字。第一行将排列数组,首先从最后一位开始,然后从那里继续。有一些错误检查以及其他重要因素,但我会将其留作用户的练习。

int index=floor(log10(number));
while (number>0)
{
   productValue[index--]=number%10;
   number/=10;
}

答案 2 :(得分:0)

你需要添加进位。也不需要2个循环。 int i, x;此行在您的代码中无用,因为您在循环中重新定义它们

char numbers[17];
char productValue[18];
int carry= 0;
...
for(int i=1;i<17;i++)
{
    productValue[i] = carry+(numbers[i] - '0') * 2; 
    carry = productValue[i]>=10?1:0;
    productValue[i] = productValue[i] %10;
}
productValue[17] = carry;