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

简介: 今天看了一下庞果网发布的编程挑战赛,我就做了一题目,结果却让我失望,没提交的上去,也不知道是网速原因还是什么,一直处于提交状态,然后我就没理它,一直耗到时间结束,但最后我发现,竟然记我一个挑战失败,好失望!关键是还没有重新挑战的机会。

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

题目:


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

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
相关文章
|
5月前
|
存储
【 腾讯精选练习 50 题】02—两数相加
【 腾讯精选练习 50 题】02—两数相加
|
5月前
|
测试技术
牛客刷题·组队竞赛·进制转换·连续最大和
牛客刷题·组队竞赛·进制转换·连续最大和
30 0
|
5月前
|
Java C语言 C++
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-试题 基础练习 十六进制转八进制
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-试题 基础练习 十六进制转八进制
35 0
|
5月前
|
数据安全/隐私保护
第十四届蓝桥杯集训——JavaC组第五篇——四则运算/(求余/取模)
第十四届蓝桥杯集训——JavaC组第五篇——四则运算/(求余/取模)
53 0
|
5月前
PAT甲级真题1050 字符串减法
PAT甲级真题1050 字符串减法
42 0
|
5月前
|
C语言 数据安全/隐私保护
位运算修行手册(一)
位运算修行手册(一)
73 0
|
5月前
|
C语言 索引
位运算修行手册(二)
位运算修行手册(二)
93 0
高职考技能提升教程010期 回文数(对称数)
高职考技能提升教程010期 回文数(对称数)
|
人工智能
【蓝桥杯集训·每日一题】AcWing 3956. 截断数组
文章目录 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 三、知识风暴 一维前缀和
59 0
|
算法 程序员
【算法集训暑期刷题营】8.10题---位运算
【算法集训暑期刷题营】8.10题---位运算
【算法集训暑期刷题营】8.10题---位运算
下一篇
无影云桌面