[算法]CSDN编程挑战赛之整数取反

来源:互联网 发布:苹果下载软件itunes 编辑:程序博客网 时间:2024/05/22 04:23

今天看了一下庞果网发布的编程挑战赛,我就做了一题目,结果却让我失望,没提交的上去,也不知道是网速原因还是什么,一直处于提交状态,然后我就没理它,一直耗到时间结束,但最后我发现,竟然记我一个挑战失败,好失望!关键是还没有重新挑战的机会。算了,关键是自己得到了锻炼就好!下面就共享我的算法,可能不是最优的算法,如果读者有什么好的建议或者是好的算法欢迎提出,一起交流!

题目:


以下是我做的几个版本的代码:

C语言版本代码:

#include<stdio.h>int reverse(int x){    int yushu;    int res[20];    int jieguo=0;    int i=0;    if (x>0)    {        do         {            yushu=x%10;            res[i]=yushu;            x=x/10;            i++;        } while (x);        int ii=i-1;        for (int j=0;j<i;j++,--ii)        {            int r=1;            //printf("%d",res[j]);            for (int n=0;n<ii;n++)            {                r*=10;            }            jieguo+=res[j]*r;        }        return jieguo;    }    //如果是负数    else    {        int jj = 0-x;        int jieguo1=reverse(jj);        jieguo1=0-jieguo1;        return jieguo1;    }    }int main(){    int num;    printf("请输入数字:");    scanf("%d",&num);    printf("你输入的数字是:%d\n",num);    int n =reverse(num);    printf("转置后的数字是:%d",n);    return 0;}


C语言另外一版本:

#include<stdio.h>int main(){    printf("题目1:整数取反\n");    char a[20],*p,*q;    int i,j;    p=a;    q=a;    for(i=0;i<20;i++)    {        scanf("%c",&a[i]);        if(a[i]!='\n')        {            p++;        }        else             break;    }    printf("取反后的数是:");    //如果是正数    if (*q!='-')    {        for(i;i>=0;i--)        {            printf("%c",*(--p));        }    }    //如果是负数    else    {        printf("%c",*q);        for (i;i>1;i--)        {            printf("%c",*(--p));        }    }    return 0;}

运行结果:




C#版本代码:

#include<stdio.h>int main(){    printf("题目1:整数取反\n");    char a[20],*p,*q;    int i,j;    p=a;    q=a;    for(i=0;i<20;i++)    {        scanf("%c",&a[i]);        if(a[i]!='\n')        {            p++;        }        else             break;    }    printf("取反后的数是:");    //如果是正数    if (*q!='-')    {        for(i;i>=0;i--)        {            printf("%c",*(--p));        }    }    //如果是负数    else    {        printf("%c",*q);        for (i;i>1;i--)        {            printf("%c",*(--p));        }    }    return 0;}



运行结果:



最后提供一个简易版的算法,上面的代码都太差劲了

int fun(int a) { int temp = 0; while(a) { temp = temp*10 + a%10; a = a / 10; } return temp; }

很简单有木有,呵呵,看来算法还是很能考验一个程序员编程和思想的能力的!



==================== 迂者 丁小未 CSDN博客专栏=================

MyBlog:http://blog.csdn.net/dingxiaowei2013             MyQQ:1213250243

Unity QQ群:858550         cocos2dx QQ群:280818155

====================== 相互学习,共同进步 ===================

转载请注明出处:http://blog.csdn.net/dingxiaowei2013/article/details/17471827

欢迎关注我的微博:http://weibo.com/u/2590571922
8 1
原创粉丝点击