| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1544 人关注过本帖
标题:找倍数问题,。算法好像有点不足。网上提交无法通过。求指点改进。
取消只看楼主 加入收藏
萝莉小纯情
Rank: 1
等 级:新手上路
帖 子:73
专家分:6
注 册:2012-12-8
收藏
得分:0 
回复 22楼 azzbcc
可以问一下.change 里面的判定0==n什么意思吗。为什么删了它程序就出错了。
2012-12-10 21:33
萝莉小纯情
Rank: 1
等 级:新手上路
帖 子:73
专家分:6
注 册:2012-12-8
收藏
得分:0 
回复 24楼 azzbcc
额。老实说。你那个判断函数我看不太懂。。。。。虽说也学了快一个学期的c了。
2012-12-10 23:33
萝莉小纯情
Rank: 1
等 级:新手上路
帖 子:73
专家分:6
注 册:2012-12-8
收藏
得分:0 
回复 26楼 azzbcc
可是为什么*p要指向a+1而不是指向a呢。。,
2012-12-11 00:06
萝莉小纯情
Rank: 1
等 级:新手上路
帖 子:73
专家分:6
注 册:2012-12-8
收藏
得分:0 
回复 26楼 azzbcc
int num = 1;
for (char *p = a + 1;*p != '\0';p++)
{
num *= 10 % n;
num %= n;
num += (*p - '0') % n;
重点这段我理解不了!!!晕。。
2012-12-11 00:09
萝莉小纯情
Rank: 1
等 级:新手上路
帖 子:73
专家分:6
注 册:2012-12-8
收藏
得分:0 
回复 29楼 azzbcc
我有点明白了。。容我想想。。谢谢你啊。。
2012-12-11 00:42
萝莉小纯情
Rank: 1
等 级:新手上路
帖 子:73
专家分:6
注 册:2012-12-8
收藏
得分:0 
回复 32楼 azzbcc
嗯。我理解了。。
2012-12-11 08:43
萝莉小纯情
Rank: 1
等 级:新手上路
帖 子:73
专家分:6
注 册:2012-12-8
收藏
得分:0 
回复 32楼 azzbcc
对了。大哥。我又有个问题。如果我想在主函数中建立个二维数组来储存那些字符串我该如何做呢。我是这样想的char a[10000][100];
for ( j = 1;j<10000;j++)
 {
        change(j, &i);
        a[j-1]=chars;
 }
可是这样构造编译错误。。。。。

我的题目要求是输入若干数,遇到0终止。我就想构造那么一个数组。
在对于输入的每个整数遍历数组找到那个数。。
2012-12-11 14:44
萝莉小纯情
Rank: 1
等 级:新手上路
帖 子:73
专家分:6
注 册:2012-12-8
收藏
得分:0 
回复 35楼 azzbcc
那该如何操作。。那就设置1000组就好了。。有人跟我说了个多重指针的,。好像这样子倒是没编译错误、可我还是整不出来。。
char **a=NULL;
   scanf("%d", &n);
    for ( j = 1;j<10000;j++)
    {
        change(j, &i);
        *(a+(j-1))=chars;
    }
2012-12-11 14:54
萝莉小纯情
Rank: 1
等 级:新手上路
帖 子:73
专家分:6
注 册:2012-12-8
收藏
得分:0 
回复 37楼 azzbcc
#include <stdio.h>

void change(char *chars, int n, int *a)
{
    if (n==0)
    {
        *a = 0;
        return;
    }
    change(chars, n / 2, a);
    chars[(*a)++] = n % 2 + '0';
    chars[*a] = '\0';
}

char *judge(char *a, int n)
{
    char *p;
    int num = 1;
    for ( p = a + 1;*p != '\0';p++)
    {
        num *= 10 % n;
        num %= n;
        num += (*p - '0') % n;
    }
    if (num % n)
    return 0;
    else
    return a;
}
int main()
{
    int i,j,n;
    char chars[10000][100];
    for ( j = 1;j < 10000;j++)
        change(chars[j-1], j, &i);
     for (;;)
     {
         scanf ("%d",&n);
         if (n==0)
         break;
         else
         for (j=0;;j++)
         {
             if (judge(chars[j],n))
             {
                 printf ("%s\n",chars [j]);
                 break;
             }
         }
     }
    return 0;
}
很奇怪。输入99的时候。。窗口蹦的一声出错了- -!!其他都还行。
2012-12-11 15:28
萝莉小纯情
Rank: 1
等 级:新手上路
帖 子:73
专家分:6
注 册:2012-12-8
收藏
得分:0 
回复 40楼 beyondyf
跟n倒是没多大关系。因为n大可能输出的值小。就比如144.输出就要10位数。,其他比他大的可能只要6,7位。。
2012-12-11 15:31
快速回复:找倍数问题,。算法好像有点不足。网上提交无法通过。求指点改进。
数据加载中...
 
   



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

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