c语言-C语言 带分数问题 求大神帮忙看看

问题描述

C语言 带分数问题 求大神帮忙看看
 /*------------------------------------------------------------------------------------------------------------------标题:带分数100 可以表示为带分数的形式:100 = 3 + 69258 / 714还可以表示为:100 = 82 + 3546 / 197注意特征:带分数中,数字1~9分别出现且只出现一次(不包含0)。题目要求:从标准输入读入一个正整数N (N<1000*1000)程序输出该数字用数码1~9不重复不遗漏地组成带分数表示的全部种数。例如:用户输入:程序输出:再例如:用户输入:程序输出:left=1时,down每调试到一定的数值后就返回了,不知道为什么,求大神帮忙看看---------------------------------------------------------------------------------------------------------------------------*/#include<stdio.h>#include<math.h>int check(int n);int check_allHave();int qiu_wei_shu(int n);int flag[10]={0};int main(){    int N=0; // N=left+up/down    int left=0;    int up=0;    int down=0;    int count=0;  //计数     int wei_shu_left=0;    int temp[10]={0};    scanf(""%d""&N);    for(left = 1;left < N;left++){        if(check(left))  continue; //不合理        wei_shu_left = qiu_wei_shu(left);        for(int i = 0;i < 10;i++)            temp[i] = flag[i];        for(down = 1;down < pow(109-wei_shu_left-1);down++){ //down最多 9-wei_shu_left-1 位数            up = (N - left) * down;            for(int i = 0;i < 10;i++) //重置为left循环时的flag为新一轮down做准备                 flag[i] = temp[i];            if(check(down) || check(up))                continue;  //不合理            else if(check_allHave() == 0)                count++;        }     }    printf(""%dn""count);    return 0;  } int check(int n){    while(n){        flag[n%10]++;        n/=10;    }    if(flag[0])  return 1; //判断是否有0     for(int i = 1;i <= 9;i++){  //判断1~9是否重复         if(flag[i] > 1) return 1;    }    return 0;}int check_allHave()  //最后判断1~9是否都包含了{    for(int i = 1;i <= 9;i++){        if(flag[i] != 1)                return 1;    }    return 0; } int qiu_wei_shu(int n){    int wei_shu=0;    while(n){        n%10;        n/=10;        wei_shu++;    }    return wei_shu;}

解决方案

带分数的概念不是这样的吧,分数部分必须是分子小于分母才对

解决方案二:
100真能分解成11组?我怎么只能得到4组?
105只有5组……

解决方案三:
N = a+b/c

N = 100 a = 3 b = 69258 c= 714
>> N = 100 a = 81 b = 5643 c= 297
>> N = 100 a = 81 b = 7524 c= 396
>> N = 100 a = 82 b = 3546 c= 197

>> N =    105 a =     72 b =   6534 c=   198>> N =    105 a =     87 b =   3456 c=   192>> N =    105 a =     87 b =   9612 c=   534>> N =    105 a =     92 b =   5681 c=   437>> N =    105 a =     92 b =   6734 c=   518

解决方案四:

 N =    100 a =      3 b =  69258 c=   714 N =    100 a =     81 b =   5643 c=   297 N =    100 a =     81 b =   7524 c=   396 N =    100 a =     82 b =   3546 c=   197 N =    100 a =     91 b =   5742 c=   638 N =    100 a =     91 b =   5823 c=   647 N =    100 a =     91 b =   7524 c=   836 N =    100 a =     94 b =   1578 c=   263 N =    100 a =     96 b =   1428 c=   357 N =    100 a =     96 b =   1752 c=   438 N =    100 a =     96 b =   2148 c=   537 N =    105 a =     72 b =   6534 c=   198 N =    105 a =     87 b =   3456 c=   192 N =    105 a =     87 b =   9612 c=   534 N =    105 a =     92 b =   5681 c=   437 N =    105 a =     92 b =   6734 c=   518 N =    105 a =     98 b =   3647 c=   521
时间: 2024-10-01 13:29:22

c语言-C语言 带分数问题 求大神帮忙看看的相关文章

程序设计-这个C语言程序怎么写,求大神帮忙

问题描述 这个C语言程序怎么写,求大神帮忙 题目二十四:职工工资管理系统 功能设计要求(1-2人) 1. 输入记录:将每一个职工的姓名.ID号以及基本工资.职务工资.岗位津贴.医疗保险.公积金的数据作为一个记录.?该软件能建立一个新的数据文件或给已建立好的数据文件增加记录. 2. 显示记录:根据用户提供的记录或者根据职工姓名显示一个或几个职工的各项工资和平均工资. 3. 修改记录:可以对数据文件的任意记录的数据进行修改并在修改前后对记录内容进行显示. 4.查找记录:可以对数据文件的任意记录的数据

c语言问题-哪里错了,求大神帮忙解决一下

问题描述 哪里错了,求大神帮忙解决一下 #include void ZH() { int a[3][4]; int n,m; printf("原矩阵是:n"); for(n=0;n<3;n++) { for(m=0;m<4;m++) { printf("a[%d][%d]=",n,m); scanf("%dn",&a[n][m]); } } for(n=0;n<3;n++) { for(m=0;m<4;m++) {

c语言-C语言的一个程序,求大神

问题描述 C语言的一个程序,求大神 三.实验内容 1.实验题目:手动输入10个0~100之内的整数,按从小到大排列输出.: (1)要求 排序算法: 使数组从小到大排序的规则如下: ⑴ 设数组为a[0],a[1],-,a[n-1],构造i循环从0,1,-,n-2变化,构造j循环从i+1,i+2,-,n-1变化,即j>i. ⑵ 对于任何一个a[i],如果a[i]>a[j],表面前面有一个元素a[i]比它后面的元素a[j]大,a[i]应该在后面,a[j]应该在前面,交换a[i]与a[j]. ⑶ 对于

基础-请问一个C语言奇怪的问题,求大神

问题描述 请问一个C语言奇怪的问题,求大神 //加了所有需要的头文件intmain(int argc char **argv){ struct event timeout; struct timeval tv; struct event_base *base; int flags; //printf(""pathvar=%s""getenv(""PATH"")); 注释1#ifdef WIN32 WORD wVersionRe

fanbao-c语言里面的问题,求大神解决

问题描述 c语言里面的问题,求大神解决 请问一下,如果用c编写了一个闹钟,那么怎么在电脑上运行这个程序时出现的是一个时钟的样子? 解决方案 用MFC或者WIN32来做 解决方案二: 可以去学习下VC的界面编程

strcpy-c语言比较细致的问题.求大神帮我解答.

问题描述 c语言比较细致的问题.求大神帮我解答. #include#includeint main(){ int sum=0; char array[20][200]={""""}; int m=0n; float k=0; int k1=0i; scanf(""%d""&n); for(i=0;i { scanf(""%d""&sum); scanf("&qu

不懂c语言基础的问题,求大神解答。

问题描述 不懂c语言基础的问题,求大神解答. for(j=0;j<=9;j++){ scanf(""%d""&i); a[j]=i;} 这样写为什么不行? 原代码:#includeint main(){ int a[10]ijz; printf(""请输入十个数值:""); for(j=0;j<=9;j++) scanf(""%d""&i); a[j]=i;

rvm-相关向量机(RVM)的C语言算法,求大神帮忙?

问题描述 相关向量机(RVM)的C语言算法,求大神帮忙? 7C 相关向量机(RVM)的C语言算法实现,不知哪位大神能给与指导-- 解决方案 这东西用C写起来可复杂了,一般是matlab写好了,做成dll给C调用 参考下:http://download.csdn.net/detail/daleloogn/7143069

条件语句-c语言,打孔问题,求大神指导。

问题描述 c语言,打孔问题,求大神指导. 题目,s得到一个数,他想知道这个数每一位上的数字的孔数之和,其中,1,2,3,5,7这几个数字是没有孔的,0,4,6,9都只有一个孔,而8有两个孔. 解决方案 不知道是不是这个意思 #include <stdio.h> #include <stdlib.h> #include <string.h> int holeNum[10] = { 1, 0, 0, 0, 1, 0, 1, 7, 2, 1 } ; int getHoleNu