2つの引数をとるプログラムを作成します。私はその整数をバイナリ値に変換し、最も重要でない "1"ビットの位置を出力する必要があります。以下は、私が現在持っているコードで、整数をバイナリに変換するのに成功したコードです。私はバイナリ値で配列を塗りつぶし、最後の位置から循環し、 "1"が出現するまでカウンタを減分してから、現在の位置から配列の全体の長さを減算することによってそのビットの位置を出力したかった配列。2進値で配列を塗りつぶして最下位ビットを決定しようとしています
#include <stdio.h>
#include <stdlib.h>
int convert(int);
int main(int argc, char *argv[])
{
int bin;
int n = atoi(argv[2]);
if (argc<2)
{
printf("\nNot Enough Arguments.");
}
if (argc>2)
{
printf("\nToo Many Arguments.");
}
if (argc==2)
{
scanf("%d", &n);
bin = convert(n);
lessbit[] = bin;
}
return 0;
}
int convert(int n)
{
if (n == 0)
{
return 0;
}
else
{
return (n % 2 + 10 * convert(n/2));
}
}
'int n = atoi(argv [2]);'私はここで読み終えました。 'argc'の値をチェックする前に' argv [2] 'を使う?それはただのトラブルを求めているだけです。また、明示的に追加する必要があります:intは既にバイナリです... – John3136
@ J.Clark整数はすでにバイナリ形式で格納されています。 –
BTW 'argv'を使う前に' argc'をチェックする必要があります。 'lessbit [] = bin;': 'lessbit'? – BLUEPIXY