原题链接:三进制小数

解题思路:三进制转换与二进制类似,三进制小数的转换是乘以3,取整,然后顺序输出即可。注意的是最后一位要四舍五入哦。原来方法考虑不周,没有考虑特殊情况,直接输出了,测试数据不够强大,也AC了。
但是要考虑特殊的情况,所以先用数组保存,判断进位之后再输出。
例如:第10位原来是2,第11位恰好又有进位,加上1第10位就变成3了。所以进位之后,还要判断前面的是否等于3,若是,还要往前继续进位;否则就不用再考虑。

#include<stdio.h>#include <math.h>#define N 11void test(int bit[],int n){    int i;    if(bit[n-1]<2) //判断最后一位是否小于2,若是,则不进位 ,不用再考虑前面的         return ;    bit[n-2]++;   //进位,进位之后要考虑是否等于3     for(i=n-2;i>=0;i++)    {        if(bit[i]==3)        {            bit[i]=0;  //当前位为0             bit[i-1]++;  //逢3进1        }        else  //只要不等于3,就不用再考虑前面的了             break;    }    }int main(){    int a,b,c,i=0;  //a是分子,b是分母     int bit[N+2];    while(scanf("%d/%d",&a,&b)!=EOF)    {        for(i=0;i<N;i++)  //输出前9位        {            bit[i]=(a*3)/b;  //printf("%d",(a*3)/b);            a=(a*3)%b;        }        test(bit,N);                printf(".");        for(i=0;i<N-1;i++)            printf("%d",bit[i]);        printf("\n");            }      return 0;}

 

原题链接:三进制小数

解题思路:三进制转换与二进制类似,三进制小数的转换是乘以3,取整,然后顺序输出即可。注意的是最后一位要四舍五入哦。原来方法考虑不周,没有考虑特殊情况,直接输出了,测试数据不够强大,也AC了。
但是要考虑特殊的情况,所以先用数组保存,判断进位之后再输出。
例如:第10位原来是2,第11位恰好又有进位,加上1第10位就变成3了。所以进位之后,还要判断前面的是否等于3,若是,还要往前继续进位;否则就不用再考虑。

#include<stdio.h>#include <math.h>#define N 11void test(int bit[],int n){    int i;    if(bit[n-1]<2) //判断最后一位是否小于2,若是,则不进位 ,不用再考虑前面的         return ;    bit[n-2]++;   //进位,进位之后要考虑是否等于3     for(i=n-2;i>=0;i++)    {        if(bit[i]==3)        {            bit[i]=0;  //当前位为0             bit[i-1]++;  //逢3进1        }        else  //只要不等于3,就不用再考虑前面的了             break;    }    }int main(){    int a,b,c,i=0;  //a是分子,b是分母     int bit[N+2];    while(scanf("%d/%d",&a,&b)!=EOF)    {        for(i=0;i<N;i++)  //输出前9位        {            bit[i]=(a*3)/b;  //printf("%d",(a*3)/b);            a=(a*3)%b;        }        test(bit,N);                printf(".");        for(i=0;i<N-1;i++)            printf("%d",bit[i]);        printf("\n");            }      return 0;}

 




点赞(0)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 1 条评论

zr 1年前 回复TA
66666