| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 707 人关注过本帖
标题:输入一个数字 输出该数字的
只看楼主 加入收藏
cqm9266
Rank: 3Rank: 3
来 自:福建
等 级:论坛游侠
帖 子:174
专家分:186
注 册:2011-10-28
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
输入一个数字 输出该数字的
#include
int sort(int n)
{
    int k;
    for (k=2;k<=n;k++)
    {     if (n==1) return (0);
        else if (n%k==0)printf("%d*",k),sort(n/k);
}}
void main ()
{printf("input n\n");
int n;
scanf("%d",&n);
sort(n);
}
这段代码没问题 输出就是有个问题 比如说 14  它的解是 2*7 但是后面总会多 7*2*14... 其它数字也是这个规律 哎 为什么
搜索更多相关主题的帖子: include 
2011-11-10 16:23
cqm9266
Rank: 3Rank: 3
来 自:福建
等 级:论坛游侠
帖 子:174
专家分:186
注 册:2011-10-28
收藏
得分:0 
输出改数字的  就是不能再除以的数 的  乘积。  忘记补充了

没病的人说有病的人有病,有病的人说没病的人有病。到底是谁有病?
2011-11-10 16:24
凌风一指
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:26
专家分:181
注 册:2011-11-9
收藏
得分:0 
很想帮你,但是不知道你的问题。
上面的代码不是没有问题,而是有问题的。
单就下面的语句
printf("input n\n");
int n;
就编译不过去。
他俩的顺序反了。
在c语言里,得先定义,再使用。

else if (n%k==0)printf("%d*",k),sort(n/k);(怎么有个逗号,逗号?分号)
这一语句,不明白为什么又递归调用了?
先把题目说清楚。
2011-11-10 19:19
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
收藏
得分:20 
程序代码:
#include <stdio.h>
int sort(int n)
{
    int k;
    for (k=2;k<=n;k++)
    {
        if (n==1)
            return (0);
        if (n%k==0)
        {
            if (k == n)
                printf("%d*%d\n", 1, k);
            else
                printf("%d*%d\n",k ,(n/k));
        }
    }
}

int main ()
{
    int n;
    printf("input n\n");
    scanf("%d", &n);
    sort(n);
    return 0;
}

o(∩∩)Linux & Python 群:187367181
2011-11-10 19:29
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
收藏
得分:0 
我不了解你要表达什么,我看了一下你的代码和一些描述,YY了其中的含义,然后根据自己的理解帮你改了一下

o(∩∩)Linux & Python 群:187367181
2011-11-10 19:30
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册


===================
这个版本可能更好理解

o(∩∩)Linux & Python 群:187367181
2011-11-10 19:33
cqm9266
Rank: 3Rank: 3
来 自:福建
等 级:论坛游侠
帖 子:174
专家分:186
注 册:2011-10-28
收藏
得分:0 
不好意思啊  题目是 输入一个数字  用素数来 比如 输入 14  输出就是2*7   输入18 输出就是  2*3*3

没病的人说有病的人有病,有病的人说没病的人有病。到底是谁有病?
2011-11-10 19:47
cqm9266
Rank: 3Rank: 3
来 自:福建
等 级:论坛游侠
帖 子:174
专家分:186
注 册:2011-10-28
收藏
得分:0 
我的解题思路是 比如输入 14  用一个数字当除数  比如 14/2=7 就可以拿 7来当被除数 反过来 除数再从2开始慢慢加上去 直到找到一个整除的

没病的人说有病的人有病,有病的人说没病的人有病。到底是谁有病?
2011-11-10 19:49
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
收藏
得分:0 
你的思路不对,首先输入一个数n,然后把n传入sort函数内,
传入之后首先判断一下n能不能被2、3、5中的任意一个数整除。
如果不能,直接执行printf("%d*%d", n, 1);
退出函数sort

如果能,那么执行下列语句:

通过循环找最小约数,找到之后用输出约数,并执行sort(n/约数)

约数不要通过循环语句找,直接用switch语句就行了。

思路我已经给了,我现在没空帮你写代码。你自己解决吧!

有空的话我再写一次。

[ 本帖最后由 thlgood 于 2011-11-10 20:06 编辑 ]

o(∩∩)Linux & Python 群:187367181
2011-11-10 20:04
cqm9266
Rank: 3Rank: 3
来 自:福建
等 级:论坛游侠
帖 子:174
专家分:186
注 册:2011-10-28
收藏
得分:0 
好的 谢谢。没事 ,我自己来就好。

没病的人说有病的人有病,有病的人说没病的人有病。到底是谁有病?
2011-11-10 22:44
快速回复:输入一个数字 输出该数字的
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018344 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved