用c语言如果M/N是无限循环小数,编写程序求一个分数M/N(0<M<N<=100)的循环数(无限循环的数字串),例如:5/7的循环数是714285。
时间: 2024-05-10 08:16:51 浏览: 68
c语言版 求解循环小数的算法
3星 · 编辑精心推荐
可以使用长除法来实现,具体步骤如下:
1. 将M除以N,得到商和余数,将商作为整数部分,将余数作为小数部分的第一个数字。
2. 将余数乘以10,再除以N,得到新的商和余数,将商作为小数部分的下一个数字。
3. 重复上述步骤,直到出现重复的余数。此时,从重复的余数开始,后面的商和余数都会重复出现。
4. 将重复的余数之前的数字作为循环数,输出即可。
以下是具体的C语言代码实现:
```c
#include <stdio.h>
int main() {
int M, N, num, i = 0;
int remainder[101], decimal[101];
scanf("%d/%d", &M, &N);
num = M / N;
remainder[i] = M % N;
while (1) {
i++;
M = remainder[i - 1] * 10;
num = M / N;
decimal[i] = num;
remainder[i] = M % N;
for (int j = 0; j < i; j++) {
if (remainder[j] == remainder[i]) {
printf("0.");
for (int k = 1; k <= j; k++) {
printf("%d", decimal[k]);
}
printf("(");
for (int k = j + 1; k <= i; k++) {
printf("%d", decimal[k]);
}
printf(")\n");
return 0;
}
}
}
return 0;
}
```
在程序中,我们使用两个数组`remainder`和`decimal`分别存储余数和商,`i`表示小数部分的位数,如果出现重复的余数,就可以从重复的余数开始输出循环数。
阅读全文