回 帖 发 新 帖 刷新版面

主题:计算分数精确值

#include<stdio.h>
int remainder[101],quotient[101];
void main()
{
    int m,n,i,j;
    printf("Please input a fraction(m/n)(0<m<n<=100):");
    scanf("%d/%d",&m,&n);
    printf("%d/%d it's accuracy value is:0.",m,n);
    for(i=1;i<=100;i++)
    {
        remainder[m]=i;
        m*=10;
        quotient[i]=m/n;
        m=m%n;
        if(m==0)
        {
            for(j=1;j<=i;j++)
            printf("%d",quotient[j]);
            break;
        }
        if(remainder[m]!=0)
        {
            for(j=1;j<=i;j++)
            printf("%d",quotient[j]);
            printf("\n\tand it is a infinite cyclic fraction from %d\n",remainder[m]);
            printf("\tdigit to %d digit after decimal point.\n",i);
            break;
        }
    }
 getch();
}

求逐行解释~~!

回复列表 (共1个回复)

沙发

#include<stdio.h>
int remainder[101],quotient[101];//定义全局变量remainder和quotient,都是一维数组
void main()//主函数
{
    int m,n,i,j;//定义m,n,i,j变量为整型
    printf("Please input a fraction(m/n)(0<m<n<=100):");//给出提示,要求输入m和n值,要求0<m<n<=100,格式为;“m/n”
    scanf("%d/%d",&m,&n);//接受两个十进制数的输入
    printf("%d/%d it's accuracy value is:0.",m,n);//给出提示
    for(i=1;i<=100;i++)//大循环体,将i值初始化为1;当i大于100时,结束该循环;i值每次循环时,递增1
    {
        remainder[m]=i;//将i的值赋给remainder[m]
        m*=10;//m=m*10,m值先与10相乘后将该值重新赋值给m
        quotient[i]=m/n;//将m除以n的值赋给quotient[i]
        m=m%n;//m值先与n值求余后将该值重新赋值给m
        if(m==0)//判断m值是否等于0
        {
            for(j=1;j<=i;j++)//循环体,将j值初始化为1;当j大于i时,结束该循环;j值每次循环时,递增1
            printf("%d",quotient[j]);//输出quotient[j]的值
            break;//跳出整个大循环
        }
        if(remainder[m]!=0)//判断remainder[m]值是否不等于0
        {
            for(j=1;j<=i;j++)//循环体,将j值初始化为1;当j大于i时,结束该循环;j值每次循环时,递增1
            printf("%d",quotient[j]);//输出quotient[j]的值
            printf("\n\tand it is a infinite cyclic fraction from %d\n",remainder[m]);
            printf("\tdigit to %d digit after decimal point.\n",i);
            break;//跳出整个大循环
        }
    }
 getch();//这个你懂的,如果学习过C语言的说
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册