まず、
・何を掛け算したいのか
・何のエラーが出て困っているのか
がパッと見て把握出来ませんので、質問の際はその辺の説明を詳しく書いていただけると回答する側として助かります。
まず、文字コードについて理解してらっしゃいますか?
char ch;
scanf("%c",&ch);
で入っているcにはどのような役割があるかご存知ですか?
このお話は過去の回答で何度も説明しているので、こちらを参考にしてください。
http://dixq.net/kaitou13.html
ASCII文字コードはこの辺で確認できます。
つまり文字コード自体の掛け算をさせたいならatoiなどせずに単純にかけてやれば合計が出るでしょう。
>
かけ算をしてその
和を求めたい
とおっしゃっているので、かけ算がしたいのか足し算がしたいのかよくわかりませんが、
積を求める時はint型の扱える範囲に注意してください。
int型で使用できる範囲は2の32乗/2-1までです。先ほどの解説にビットとバイトの話がありましたね。
int型は一般的に4バイトですから32ビットになります。int型はunsignedじゃない限り負も扱えるので、その半分の値が使用できる事になり、さらに0を使用するのでその-1となります。
実際にご自分で値を表示させたい時は
printf("%f",pow(2.0,32.0)/2 -1);
で確認できます。具体的に言えば
2147483647
までです。この値を超えないように積をしてやりましょう。
もしも「文字型で受け取った数字」のみを足し算したいのなら、文字が入っていたらエラーになるような処理をさせないといけません。
今回文字コードについて勉強したいのでatoiを使わずに自分でコードを書いてみましょう。
まず
問題1
・文字「0」の文字コード表示させてください
問題2
・受け取った1バイト文字が0~9の間ならTRUE,それ以外ならFALSEと表示させてください
問題3
・受け取った10バイトにそれぞれ入っている文字に対して問題2と同じ出力をさせてください。
問題4
・受け取った10バイトにそれぞれ入っている文字が数字かどうかを判断し、数字の時のみその積を計算していくプログラムを書いてください。
このような順番で順々にやっていけばコードは完成するでしょう。
やってみてください。