题目:
求a/b的小数表现形式。如果a可以整除b则不需要小数点。如果是有限小数,则可以直接输出。如果是无限循环小数,则需要把小数循环的部分用"()"括起来。
例如:
输入 a b
1 6 输出:1/6=0.1(6)
10/1=10;
1/5=0.2;
1/6=0.1(6)
1/7=0.(142857)
#include<stdio.h>
#include<stdlib.h>
void fun(int a, int b) {
int m ;
int n ;
int s = 0;
m = a;
n = b;
int temp1 = 0;
s = m / n;
temp1 = s;
int da[10000];
int temp = 0;
for (temp = 0; temp<10000;) {
m = m % n * 10;
if (m>0) {
s = m / n;
da[temp] = m;
temp++;
}
else {
break;
}
}
int num = -1;
int num1 = 0;
for (int i = 0; i<temp; i++) {
for (int j = i + 1; j<temp; j++) {
if (da[i] == da[j]) {
num1 = i;
num = j;
break;
}
}
if (num>-1)
break;
}
if (num > 0) {
printf("%d", temp1);
printf(".");
for (int i = 0; i < num1; i++) {
m = da[i];
s = m / n;
printf("%d", s);
}
printf("(");
for (int i = num1; i < num; i++) {
m = da[i];
s = m / n;
printf("%d", s);
}
printf(")");
}
else{
printf("%g", (float)(a) / b);
}
}
int main() {
int a;
int b;
while(scanf("%d %d",&a, &b) != EOF)
fun(a,b);
return 0;
}