4

Cでは、標準の入力から2つの数値を文字列として読み取る必要があります。それらの合計を文字列として出力するにはどうすればよいですか?私は持っています:

char a[10],b[10];
printf("enter the two numbers");
scanf("%s%s",&a,&b);
char sum[20];
sum=?

ちょっとしたアドバイスをお願いします。ありがとうございました!

4

5 に答える 5

2

小学校のようにやってください

入力が「...69+...63」だったとしましょう

9 + 3     = 2 and 1 to go
6 + 6 + 1 = 3 and 1 to go
...
于 2013-02-13T18:51:34.107 に答える
2

紙の上で行うのと同じように、プログラミングでこれを行います。小さな一歩を踏み出し、気づかないうちに紙の上で行う小さな一歩をすべて明示します。

    00111
 ---------
     12345
 123456789
 ---------
 123469134
  • 長さが異なることに注意してください。その情報を保持するには、個別の変数が必要です。2つの長さを見つける必要があります。標準関数を使用するか、独自の関数を記述します。文字列はバイナリで終わります0
  • 追加するときに逆方向に進むことに注意してください。2つの文字列(文字の配列)にアクセスするには、2つのインデックスを維持する必要があります。
  • 加算の上位桁をどのように引き継ぐかに注意してください5+9=14。それを別の変数で維持する必要があります。

ループを使用します。追加した後、全長を知り、左端に移動する必要があります。取得する長さが事前にわからないため、sum配列の右端から答えを書き始めます。これについて、どのように、そして何を改善できるかを考えてください。

于 2013-02-13T19:03:29.280 に答える
2

そうすることが禁止されていない限り、私は次のようにアプローチします:

  • 入力文字列を数値に変換します。やってみstrtol()ます。

  • 数字を追加する

  • 合計を数値から文字列に変換します。やってみsnprintf()ます。

于 2013-02-13T19:44:59.443 に答える
1

を使用して文字列を数値に変換し、atoiそれらを合計してから、printfなどの印刷関数を使用して合計を印刷します。これを見る

于 2013-02-13T18:47:43.500 に答える
1

chars小さいのと同じように、8ビットの2進数intsです。文字としての意味を与えるためにそれらを解釈しなければなりません。

お使いのコンピュータはおそらくASCII標準を使用しています。ASCIIでは、char文字を表す値0は実際には数値0ではありません。48です。幸い、数字はすべて連続しているため、149などです。

char zero = '0';
printf("%d\n", zero);
char one = '1';
printf("%d\n", one);

> 48
> 49

(の%dフォーマットフラグprintfは「整数として解釈する」ことを意味することに注意してください。)

は数字なのでchars、数学を使うことができます。

char one = '1';
int one_num = one - '0';
printf("%d\n", one_num);

> 1

これで、紙の場合と同じように、10進数と持ち運びで加算を実装できます。

于 2013-02-13T19:30:25.493 に答える