前提・実現したいこと
標準入力に与えられる2つの正整数 m, n ( 1 < n < 9500 ) を読み取り、 m/n の小数表示を標準出力に書き出すプログラムを作成したいです。
m, n は、m が n では割り切れないもので、出力は必要最小限の桁数で m を書き出し、 / に続いて必要最小限の桁数で n を書き出す。 続けて、空白を前後に置いて = を書き出し、整数部に続けて . を書き出し、 以後小数部を書き出して最後に改行を行え。 小数部は、循環小数になる場合は非循環部を書き出した後、' を書き出し1度だけ循環部を書き出し。 有限小数になる場合はその小数部を書き出すプログラムです。
実行例
標準入力
71 8
標準出力
71/8 = 8.875
該当のソースコード
C言語
#include <stdio.h>
#include <stdlib.h>
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("r/q = ");
for(j= 1; j!=i; j++){
if( r!=0 && j==k ) printf("'");
printf("%d", qq[j]);
}
printf("\n");
return 0;
}
回答3件
あなたの回答
tips
プレビュー