-1

6如果用户输入将其存储在numbers[0]索引中,然后乘以2它得到它的乘积,我可以解释我想要完成的最简单的方法,12但不是存储12在数组的0索引中,productValue而是需要将其存储为productValue[0] = 1 productValue[1] = 2我我无法让它存储单个整数。我是 C 的新手,所以如果这看起来过于简单,请让我休息一下。我的代码如下:

#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;
        }
    }

}
4

3 回答 3

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;

}
于 2012-12-18T02:53:30.470 回答
0

要存储整数,您可以简单地执行这样的循环,在移动到下一个数字之前检查每个数字。从本质上讲,获得数字 mod 10 将为您提供该地点的数字。第一行将排列数组以首先从最后一个数字开始,然后从那里继续。有一些错误检查和其他重要的东西,但我将把它作为练习留给用户。

int index=floor(log10(number));
while (number>0)
{
   productValue[index--]=number%10;
   number/=10;
}
于 2012-12-18T02:47:12.990 回答
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;
于 2012-12-18T02:47:54.870 回答