質問: 1.'6 ■自分なりに作成してみましたが思うような出力となりません。 修正箇所等教えて頂きたく。 ``` #include int main(int argc, char *argv[]){ int n; scanf("%d", &n); int rr[n], qq[n]; int r, q, i, j, k; r= 1; k= 0; for(i= 1; r!=0 && k==0; i++){ rr[i]= r; r*= 10; q= r/n; qq[i]= q; r= r%n; for(k= i; k!=0 && rr[k]!=r; k--); } printf("0."); for(j= 1; j!=i; j++){ if( r!=0 && j==k ) printf("'"); printf("%d", qq[j]); } printf("\n"); return 0; } ```
回答: > > 修正箇所等教えて頂きたく。 > > > コマンド行引数として与えられる2つの正整数 m, n ( 1 < n < 9500 ) を とあるのに、n を標準入力から読み込もうとしています。 コマンド行引数から読み込むように修正してください。 m を全く読み込んでいません。 コマンド行引数から読み込むように修正してください。 m と n が 71 と 8 のとき、出力は 8.87 なのに printf("0."); と書いています。修正してください。 コード全体を修正すると、 ``` #include // printf, putchar #include // atoi #define NUM 9500 int main(int argc, char *argv[]) { int i, j, m, n, m0, q[NUM], p[NUM] = { 1 }; if (argc != 3) return 1; m = atoi(argv[1]); n = atoi(argv[2]); if (m < 1 || n <= 1 || n >= NUM) return 2; m0 = m; for (i = 0; i < NUM; i++) { q[i] = m / n; m %= n; if (p[m]) break; p[m] = i + 1; m *= 10; } printf("%d/%d = %d", m0, n, q[0]); if (m || i > 0) putchar('.'); for (j = 1; j <= i; j++) { if (m && j == p[m]) putchar('\''); printf("%d", q[j]); } printf("\n"); return 0; } ``` どの部分が分からないのかを質問してください。