### 仕様
・2数の整数を文字列として入力する
・各桁の文字を数字押して再表現する
・それぞれの文字列の前後の並べ替えを行う
・各桁ごとに、それぞれの数字と桁上げを足し合わせる 桁上げの初期値は0とする
・↑で得られた数を10で割ったときの余りを答えの配列へ、商を次段の桁上げとして記憶
・答えの配列の前後を入れ替え、さらに数字を文字として表現する
123 a[2] a[1] a[0]
+456 → + b[2] b[1] b[0]
----- -------------------
とした方が処理しやすいため。
### 現状
計算結果が何を入力しても 4 と出てくる。
2桁+2桁 をすると、4が先頭の4桁の数字が出てきたりする。
原因がわからないので見ていただきたいです。
C言語
1#include<stdio.h> 2#include<string.h> 3int main() 4{ 5 char a[50],b[50],c[50],d[50],n[50],m[50]; 6 int len1,len2,len3,i,z,x,y,p,q,k; 7 8 printf("INput the number a : "); 9 scanf("%s",a); 10 printf("INput the number b : "); 11 scanf("%s",b); 12 13 len1=strlen(a); 14 len2=strlen(b); 15 16 for(q=0;q<len1;q++){ 17 a[q]-=48; 18 } 19 20 for(q=0;q<len2;q++){ 21 b[q]-=48; 22 } 23 k=0; 24 for(i=len1-1;i>0;i--){ 25 n[i]=a[k]; 26 k++; 27 } 28 29 30 k=0; 31 for(i=len2-1;i>0;i--){ 32 m[i]=b[k]; 33 k++; 34 } 35 36 37 if(len1>len2 || len1=len2){ 38 k=0; 39 z=0; 40 for(p=0;p<len1+2;p++){ 41 x=n[p]+m[p]+z; 42 y=x%10; 43 z=x/10; 44 c[k]=y; 45 k++; 46 } 47 } 48 else if(len2>len1){ 49 k=0; 50 z=0; 51 for(p=0;p<len2+2;p++){ 52 x=n[p]+m[p]+z; 53 y=x%10; 54 z=x/10; 55 c[k]=y; 56 k++; 57 } 58 } 59 60 len3=strlen(c); 61 62 k=0; 63 for(i=len3-1;i>0;i--){ 64 d[i]=c[k]; 65 k++; 66 } 67 68 for(q=0;q<len3;q++){ 69 d[q]+=48; 70 } 71 72 printf("Answer : %s",d); 73 74 return 0; 75 76} 77
### 補足
学習用C言語開発環境を使用。
回答2件
あなたの回答
tips
プレビュー