c编程题:求1/n,如何是循环小数的,如何只输出第一个循环节

来源:百度知道 编辑:UC知道 时间:2024/06/17 13:25:25

#include <stdio.h>
#include <alloc.h>

/* 使用链表实现 */
struct node {
int beichushu,shang;
struct node *next;
};

void main()
{
int beichushu=1,chushu,yushu;
struct node *head, *p, *q;
head=(struct node *)malloc(sizeof(struct node));
p=head;
printf("Chushu=?( >1 )");
scanf("%d",&chushu);
printf("1/%d=0.",chushu);
while(beichushu)
{
/* 从链表头开始查找是否是循环节的开始 */
q=head->next;
while(q&&(q->beichushu!=beichushu)) q=q->next;

if(q) break;
/* 如果q不空,说明找到,无需继续计算了 */
else { /* 否则继续计算下一位小数 */
p->next=(struct node *)malloc(sizeof(struct node));
p=p->next;
p->beichushu=beichushu;
beichushu*=10;
p->shang=beichushu/chushu;
p->next=NULL;
beichushu%=chushu;
}
}
p=head->next;
while(p!=q) /* 本循环输出非循环节部分 */
{
pri