如果用户输入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}}
答案 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;