-1

ユーザーが入力した場合に何を達成しようとしているのかを説明できる最も簡単な方法は6、インデックスに格納され、numbers[0]それを乗算し2て の積が得られますが、配列のインデックスに12格納する代わりに、次のように格納する必要があります。個々の整数を格納するのに問題があります。私は C を初めて使用するので、これを達成するのが簡単すぎると思われる場合は、休憩をとってください。私のコードは以下の通りです:120productValueproductValue[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;
        }
    }

}
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

整数を格納するには、次の数字に進む前に各数字をチェックする、次のような単純なループを実行できます。基本的に、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 に答える