| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2678 人关注过本帖
标题:输入一个正整数N,要求满足题目条件
只看楼主 加入收藏
yuanfeng1129
Rank: 2
等 级:论坛游民
帖 子:62
专家分:31
注 册:2010-8-7
收藏
得分:0 
以上是我在我校发表的关于排序的,欢迎交流,QQ775141406,都是新手,大家一起抵制那些倚老卖老的人
2010-10-25 17:56
wujieru
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:1
帖 子:1108
专家分:1939
注 册:2010-10-9
收藏
得分:1 
倚老卖老的人 ???  别这么说你自己吗
2010-10-25 17:57
zzgzzg00
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:388
专家分:627
注 册:2010-8-2
收藏
得分:1 
   10楼的是在刷屏吗?呵呵
学习了   以前看到过一点 到现在还是不很明白呢

粗心是大敌
2010-10-25 17:57
wujieru
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:1
帖 子:1108
专家分:1939
注 册:2010-10-9
收藏
得分:0 
你不要对自己没信心
2010-10-25 18:01
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:1 
#include <stdio.h>

long Q(long n)
{
    long r = 0;
    int p = 1;
    int i, m;
    if(n == 1) return 1;
    while(n > 1)
    {
        for(i = 9; i >= 2; i--)
        {
            m = n % i;
            if(m == 0)
            {
                r += p * i;
                p *= 10;
                n /= i;
                break;
            }
        }
        if(i == 1) return -1;
    }
    return r;
}

int main()
{
    long input, q;
    printf("Input N(>0): ");
    scanf("%ld", &input);
    if(input < 0)
    {
        printf("N cannot be lower than 0.");
        return 0;
    }
    q = Q(input);
    if(q < 0)
    {
        printf("The Q is not exist.");
        return 0;
    }
    printf("The Q is %ld", q);
}

重剑无锋,大巧不工
2010-10-25 18:39
yuanfeng1129
Rank: 2
等 级:论坛游民
帖 子:62
专家分:31
注 册:2010-8-7
收藏
得分:0 
我昨天在群里问了个简单问题,一个SB就来唧唧歪歪了,妈的,不就是问个问题嘛,难得在群里说话一次,还有,我不是对自己没信心,我对自己信心十足,昨天我在编写windows截面下的俄罗斯方块,编到中途感觉一个函数Rectangle有疑问,这个函数的功能是用指定画笔画轮廓,用指定画刷填充,我想起在纯C语言中,有bar函数,是不画轮廓只填充,rectangle是只画轮廓不填充,就想在群里问问,在windows32 API有无这样的函数,我刚开始还是从简单的问,我直接问在API中画矩形是什么函数,在一个群里有人说了Rectangle,这个是我知道的,我问那人要只画轮廓怎么办,他又说用lineto函数,画四条边,这我也是知道的,后来还是提到了NULL_BRUSH,我就明白了,后来上网查了下,也在书上找到了,明白了,哪知再次用手机上线的时候另外一个群里的SB就在那唧唧歪歪,说1+1=2的问题不要在这里问,当时我问了句"你是在说我吗?",没回应,后来我说了句,我知道的不比你少,我至少还能编个俄罗斯方块,然后那狗日竟然说俄罗斯方块垃圾东西也好意思说,我直接火了,骂了那狗日几句,今天我继续骂,我还真以为那人什么本事,结果今天才知道连一些基础都不会,算法的概念都不清楚,还说:"俄罗斯方块竟然有两种算法,我第一次听说."这真是十足的垃圾,任何涉及到逻辑的问题都不止一种算法的,算法是指解题方案准确而完整的描述,简单的排序和最大公约数求法都有好多算法,他竟然说出了这种让人笑掉大牙的话,后来让我更感觉到这人垃圾,我说char是关键词,C语言里的关键词有两种,一种是int,long,char这些,还有一种是for if while这些,C++更多,他竟然还反驳我,连char是关键词都不知道,真不知道这种垃圾还好意思嘲笑别人问的问题简单了,以为自己在某某公司混了个纪念以为蛮了不起,到头来这些都不会,说实话到那种兰群也就能问些简单的,问比较细的问题,根本就得不到满意的回答,尽是一群装B之人.其实编出来也许并不困难,但是编好不容易,编软件要符合结构化程序的基本原则,变量命名规范化,次序应有序化.....最主要是程序的可读性,当然也要限制使用goto语句,我奋斗一个月的成果被人这样玷污,那人也该骂,基础都不知道,还好意思说,真想叫他编编,看他能编成怎样,C语言学到现在也没被人鄙视过,虽然五六个月前才初次接触C语言,我是研究了两份代码,一份是纯C语言下DOS截面的俄罗斯方块,还有就是WINDOWS界面下的,每个细节每个函数都搞清楚了,然后反复对比两个算法,取其精华,最后自己组织结构,才最终编出来,我上周末基本上就在研究这东西,竟然被人这么说,最初在一个月前就开始看DOS下的源码了,后来在上上星期周五找了份WINDOWS的,研究透彻之后才敢动笔,由于没电脑,都是手写的,基本写了两遍,被人这样说了下,实在愤怒,所以那种编程群全部退了,他NND,要是我是计算机专业的话,或者我学时间长一点,保证比他们强多了,我非计算机专业的,时间也很紧迫,又没接受专业培训,能编出来也不差,话说也就学几个月,五月份初学,学了一个月编了个绩点计算器,六月份基本浪费了,静不下来,七月回家,完全没看,八月回学校那个月也学的不多,主要复习了下计算机二级,时间多人就松散了,九月十月也只是利用空闲时间学点,能学成这样也不算差,竟然被人侮辱劳动成果,也不知道他能编个什么,基础都不会,还嘲笑别人,就是个垃圾.

还记得以前一次,我在研究关于C语言的变量分配问题,我问为什么在vc++中先定义的变量占据高内存,后定义的占据低内存,是不是C语言中没有栈的概念啊,一个SB说了句你对这些最基本的都不知道,还研究这么高深的栈,我当时叫他解释,他说这是编译器设置好的,不用去管,原来就这水平,后来我直接用栈给他解释清楚了,当时我用手机打的字,哎,算了,不说了.
发现我还是应该能有忍耐力,本来忍忍也就能过了,虽然后来把那人好好骂了顿,也赢了,因为他说的话漏洞百出,才几句话就被我找出两个很基础的错误,也被我好好水了顿,但是发现人心里还是不舒服,今天课都没好好上,小不忍则乱大谋啊
2010-10-25 19:14
yuanfeng1129
Rank: 2
等 级:论坛游民
帖 子:62
专家分:31
注 册:2010-8-7
收藏
得分:0 
#include<stdio.h>
int f(int n)
{
   int m,y=1;
   while(n)
   {
      m=n%10;
      n=n/10;
      y*=m;
   }
   return y;
}
main()
{
    int i,n;
    scanf("%d",&n);
    for(i=10;i<100000000;i++)
       if(f(i)==n) break;
    if(i==100000000)
    {
       printf("error");
       return 0;
    }
    printf("%d\n",i);
}
这个是穷举法,只提供思路,数字小还可以,数字大了就不行了
2010-10-25 19:16
yuanfeng1129
Rank: 2
等 级:论坛游民
帖 子:62
专家分:31
注 册:2010-8-7
收藏
得分:0 
大家说下,我提到的那种装B之人该不该骂
2010-10-25 19:20
yuanfeng1129
Rank: 2
等 级:论坛游民
帖 子:62
专家分:31
注 册:2010-8-7
收藏
得分:0 
以下是引用beyondyf在2010-10-25 18:39:22的发言:

#include

long Q(long n)
{
    long r = 0;
    int p = 1;
    int i, m;
    if(n == 1) return 1;
    while(n > 1)
    {
        for(i = 9; i >= 2; i--)
        {
            m = n % i;
            if(m == 0)
            {
                r += p * i;
                p *= 10;
                n /= i;
                break;
            }
        }
        if(i == 1) return -1;
    }
    return r;
}

int main()
{
    long input, q;
    printf("Input N(>0): ");
    scanf("%ld", &input);
    if(input < 0)
    {
        printf("N cannot be lower than 0.");
        return 0;
    }
    q = Q(input);
    if(q < 0)
    {
        printf("The Q is not exist.");
        return 0;
    }
    printf("The Q is %ld", q);
}
呵呵,兄弟写的也不错,定义的函数
2010-10-25 19:22
yuanfeng1129
Rank: 2
等 级:论坛游民
帖 子:62
专家分:31
注 册:2010-8-7
收藏
得分:0 
#include<stdio.h>
main()
{
    int i,j,k=0,t,a[81];
    unsigned long m=0,n;
    scanf("%ul",&n);
    if(n<10)
    {
        printf("%ul\n",n+10);
        return 0;
    }
    while(n!=1)
    {
        for(i=9;i>1;i--)
           if(n%i==0)
           {
              a[k++]=i;
              break;
           }
        if(i==1)
        {
           printf("error\n");
           return 0;
        }
        n=n/i;
    }
    for(i=0;i<k-1;i++)
        for(j=0;j<k-1-i;j++)
        if(a[j]>a[j+1])
        {t=a[j];a[j]=a[j+1];a[j+1]=t;}
    for(i=0;i<k;i++)
        printf("%d",a[i]);

    printf("\n");
}  
楼主注意粗体部分,注意,9楼的回答虽然正确,可是当n=100000000时会出现错误,究其原因,是因为unsigned long的取值范围局限在0-2的16次方减一,unsigned long表示的数值是32位的,故本楼更新,注意黑体部分
2010-10-25 19:36
快速回复:输入一个正整数N,要求满足题目条件
数据加载中...
 
   



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

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