注册 登录
  • 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!

C语言求解100的带分数形式

OC/C/C++ 水墨上仙 3520次浏览 已收录 手机上查看

100 可以表示为带分数的形式:100 = 3 + 69258 / 714 还可以表示为:100 = 82 + 3546 / 197 注意特征:带分数中,数字1~9分别出现且只出现一次(不包含0)。 类似这样的带分数,100 有 11 种表示法。

#include
#include
/*检查某个数是否出现重位的情况,可以与nKill整合,但这儿单独列出*/
bool checkNum(int n){
    char arr[]="x123456789";
    do{
        if(arr[n%10]<='9'){
            arr[n%10]='x';
        }else{
            return false;
        }
        n/=10;
    }while(n!=0);
    return true;
}
/*去除数组中已出现过的数字*/
void nKill(int n,char * arr){
    do{
        //标记已被选
        arr[n%10]='#';
        n/=10;
    }while(n!=0);
}
/*交换两个数*/
void change(char *a,char *b){
    char tmp;
    tmp=*a;
    *a=*b;
    *b=tmp;
}
/*字符串逆序*/
void start2End(char * arr){
    int len=strlen(arr),i;
    for(i=0;i0;i--){
        if(arr[i]>arr[i-1]){
            break;
        }
    }
    //如果找不到波动了,也就意味着找完了
    if(i==0){
        return false;
    }
    i--;
    //寻找右边第一个比i处值大的
    for(j=len-1;j>i;j--){
        if(arr[j]>arr[i]){
            break;
        }
    }
    //交换
    change(arr+i,arr+j);
    //倒序
    start2End(arr+i+1);
    return true;
}
/*字符串转数字*/
int str2N(char *arr,int len){
    int count=0,i=0;
    char ch;
    while(i!=len){
        count=count*10+(arr[i++]-'0');
    }
    return count;
}
/*遍历寻找填入/的位置*/
bool insert(char *res,int len,int result,int n){
    int i,a,b;
    for(i=len/2;i

开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明C语言求解100的带分数形式
喜欢 (0)
[开心洋葱]
分享 (0)
水墨上仙
关于作者:
水墨上仙
……
加载中……