标题:改改这个代码!
只看楼主
汐杨
Rank: 2
等 级:论坛游民
帖 子:27
专家分:13
注 册:2010-7-26
结帖率:100%
已结贴  问题点数:20 回复次数:8 
改改这个代码!
#include<stdio.h>
void main()
{
    int max(int x,int y);      /*对 max 函数声明*/
    long sum=0;
    int a,n;
       scanf("%d%d",&a,&n);
           sum=max(a,n);
     printf("%ld\n",sum);
}
 int max(int x,int y)          /*定义有参函数 max*/
   
{     
     long num=0;
      int i,s=0;
         for(i=1;i<=y;i++)
{   
             s=s*10+x;
        num+=s;
}
    return num;
}
有没有什么地方可以改的呢?让这段代码更简洁!
搜索更多相关主题的帖子: 代码 改改 
2010-08-12 11:00
liuzhengshen
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:83
专家分:141
注 册:2010-4-23
得分:0 
#include<stdio.h>

int max(int x,int y)          /*定义有参函数 max*/
   
{     
     long i,s=0;
     for(i=1;i<=y;i++)  
        s=s*10+x;

    return s;
}

void main()
{
    long sum=0;
    int a,n;
    scanf("%d%d",&a,&n);
    sum=max(a,n);
    printf("%ld\n",sum);

    return ;
}
2010-08-12 11:13
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
得分:5 
以下是引用汐杨在2010-8-12 11:00:20的发言:

#include
void main()
{
    int max(int x,int y);      /*对 max 函数声明*/
    long sum=0;
    int a,n;
       scanf("%d%d",&a,&n);
           sum=max(a,n);
     printf("%ld\n",sum);
}
 int max(int x,int y)          /*定义有参函数 max*/
   
{     
     long num=0;
      int i,s=0;
         for(i=1;i<=y;i++)
{   
             s=s*10+x;
        num+=s;
}
    return num;
}
有没有什么地方可以改的呢?让这段代码更简洁!
你的程序是计算n项和?sum=a+aa+aaa+aaaa+.........
更简洁 好像几乎不太可能了,但是 你的数据类型能否统一改成long类型?否则计算过程中会受到限制啊!

Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
2010-08-12 11:13
毕业旅行
Rank: 4
等 级:业余侠客
威 望:1
帖 子:130
专家分:280
注 册:2010-7-7
得分:5 
我觉得写的已经很简洁了,不知道有没有别的算法,我写的话也是这个样子
如果是为了省下行数,比如说main里面的sum可以不定义,输出直接写printf("%ld",max(a,n));

2010-08-12 11:13
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
得分:5 
以下是引用毕业旅行在2010-8-12 11:13:50的发言:

我觉得写的已经很简洁了,不知道有没有别的算法,我写的话也是这个样子
如果是为了省下行数,比如说main里面的sum可以不定义,输出直接写printf("%ld",max(a,n));
同意!
还有一点就是max这个函数名有歧义啊?换一个吧 最好能做到 见名知意

Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
2010-08-12 11:18
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
得分:0 
以下是引用liuzhengshen在2010-8-12 11:13:09的发言:

#include

int max(int x,int y)          /*定义有参函数 max*/
   
{     
     long i,s=0;
     for(i=1;i<=y;i++)  
        s=s*10+x;

    return s;
}

void main()
{
    long sum=0;
    int a,n;
    scanf("%d%d",&a,&n);
    sum=max(a,n);
    printf("%ld\n",sum);

    return ;
}
这位仁兄改了后,算法跟原来不一样了吧?算的是n位的 aaaaaaaaaa
而不是n项和a+aa+aaa+aaaa+......

要不你再看下?

Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
2010-08-12 11:20
燕强
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:78
专家分:188
注 册:2010-8-11
得分:0 
以下是引用jack10141在2010-8-12 11:20:43的发言:

这位仁兄改了后,算法跟原来不一样了吧?算的是n位的 aaaaaaaaaa
而不是n项和a+aa+aaa+aaaa+......

要不你再看下?
楼上说的正确!
2010-08-12 11:49
lml20080
Rank: 2
等 级:论坛游民
帖 子:20
专家分:96
注 册:2010-8-2
得分:0 
#include<stdio.h>
int max(int x,int y)          /*定义有参函数 max*/
{   
    long num=0;
    int i,s=0;
         for(i=1;i<=y;i++)
        {   
            s=s*10+x;
            num+=s;
        }
    return num;
}
void main()
{   int a,n;
       scanf("%d%d",&a,&n);         
     printf("%ld\n", max(a,n));
}
2010-08-12 14:24
promising
Rank: 3Rank: 3
来 自:上海
等 级:论坛游侠
帖 子:87
专家分:147
注 册:2009-8-31
得分:5 
回复 楼主 汐杨
程序代码:
#include<stdio.h>
void main()
{
    int max(int x,int y);      /*对 max 函数声明*/
    int a,n;
    scanf("%d%d",&a,&n);
    printf("%ld\n",max(a,n));/*sum不用定义了*/
}
int max(int x,int y)          /*定义有参函数 max*/
   
{    
     long num=0;
     for(int i=1;i<=y;i++)
        num=num*10+x*i;/*...num=x+xx,-> num=(x+xx)*10+x*3=x+xx+xxx...*/
     return num;
}
这样的话够简洁了吧~

向前走着……
2010-08-12 14:46



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-315497-1-1.html




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

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