Cでは、標準の入力から2つの数値を文字列として読み取る必要があります。それらの合計を文字列として出力するにはどうすればよいですか?私は持っています:
char a[10],b[10];
printf("enter the two numbers");
scanf("%s%s",&a,&b);
char sum[20];
sum=?
ちょっとしたアドバイスをお願いします。ありがとうございました!
小学校のようにやってください
入力が「...69+...63」だったとしましょう
9 + 3 = 2 and 1 to go
6 + 6 + 1 = 3 and 1 to go
...
紙の上で行うのと同じように、プログラミングでこれを行います。小さな一歩を踏み出し、気づかないうちに紙の上で行う小さな一歩をすべて明示します。
00111
---------
12345
123456789
---------
123469134
0
。5+9=14
。それを別の変数で維持する必要があります。ループを使用します。追加した後、全長を知り、左端に移動する必要があります。取得する長さが事前にわからないため、sum
配列の右端から答えを書き始めます。これについて、どのように、そして何を改善できるかを考えてください。
そうすることが禁止されていない限り、私は次のようにアプローチします:
入力文字列を数値に変換します。やってみstrtol()
ます。
数字を追加する
合計を数値から文字列に変換します。やってみsnprintf()
ます。
を使用して文字列を数値に変換し、atoi
それらを合計してから、printfなどの印刷関数を使用して合計を印刷します。これを見る
chars
小さいのと同じように、8ビットの2進数ints
です。文字としての意味を与えるためにそれらを解釈しなければなりません。
お使いのコンピュータはおそらくASCII標準を使用しています。ASCIIでは、char
文字を表す値0
は実際には数値0ではありません。48です。幸い、数字はすべて連続しているため、1
49などです。
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進数と持ち運びで加算を実装できます。