[算法]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
相关文章
牛客刷题之数学基础-快速幂
牛客刷题之数学基础-快速幂
68 0
|
1月前
|
算法 C语言
【C语言程序设计——函数】利用函数求解最大公约数和最小公倍数(头歌实践教学平台习题)【合集】
本文档介绍了如何编写两个子函数,分别求任意两个整数的最大公约数和最小公倍数。内容涵盖循环控制与跳转语句的使用、最大公约数的求法(包括辗转相除法和更相减损术),以及基于最大公约数求最小公倍数的方法。通过示例代码和测试说明,帮助读者理解和实现相关算法。最终提供了完整的通关代码及测试结果,确保编程任务的成功完成。
75 15
|
1月前
|
算法 C语言
【C语言程序设计——循环程序设计】求解最大公约数(头歌实践教学平台习题)【合集】
采用欧几里得算法(EuclideanAlgorithm)求解两个正整数的最大公约数。的最大公约数,然后检查最大公约数是否大于1。如果是,就返回1,表示。根据提示,在右侧编辑器Begin--End之间的区域内补充必要的代码。作为新的参数传递进去。这个递归过程会不断进行,直到。有除1以外的公约数;变为0,此时就找到了最大公约数。开始你的任务吧,祝你成功!是否为0,如果是,那么。就是最大公约数,直接返回。
92 18
|
1月前
|
存储 C语言
【C语言程序设计——循环程序设计】利用数列的累加和求 sinx(头歌实践教学平台习题)【合集】
项的累加和,一般会使用循环结构,在每次循环中计算出当前项的值(可能基于通项公式或者递推关系),然后累加到一个用于存储累加和的变量中。在C语言中推导数列中的某一项,通常需要依据数列给定的通项公式或者前后项之间的递推关系来实现。例如,对于一个简单的等差数列,其通项公式为。的级数,其每一项之间存在特定的递推关系(后项的分子是其前项的分子乘上。,计算sinx的值,直到最后一项的绝对值小于。为项数),就可以通过代码来计算出指定项的值。对于更复杂的数列,像题目中涉及的用于近似计算。开始你的任务吧,祝你成功!
58 6
|
1月前
|
存储 编译器 C语言
【C语言程序设计——函数】回文数判定(头歌实践教学平台习题)【合集】
算术运算于 C 语言仿若精密 “齿轮组”,驱动着数值处理流程。编写函数求区间[100,500]中所有的回文数,要求每行打印10个数。根据提示在右侧编辑器Begin--End之间的区域内补充必要的代码。如果操作数是浮点数,在 C 语言中是不允许直接进行。的结果是 -1,因为 -7 除以 3 商为 -2,余数为 -1;注意:每一个数据输出格式为 printf("%4d", i);的结果是 1,因为 7 除以 -3 商为 -2,余数为 1。取余运算要求两个操作数必须是整数类型,包括。开始你的任务吧,祝你成功!
54 1
|
9月前
|
C++ Java Go
C/C++每日一练(20230429) 螺旋矩阵、戳气球、实现五则运算
C/C++每日一练(20230429) 螺旋矩阵、戳气球、实现五则运算
82 0
C/C++每日一练(20230429) 螺旋矩阵、戳气球、实现五则运算
|
Python
牛客刷题之数学基础-约数
牛客刷题之数学基础-约数
69 0
【蓝桥杯集训·每日一题】AcWing 3625. 幂次方
文章目录 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 三、知识风暴 快速幂
75 0
|
人工智能
【蓝桥杯集训·每日一题】AcWing 3956. 截断数组
文章目录 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 三、知识风暴 一维前缀和
74 0
|
存储 人工智能 算法
【蓝桥杯集训·每日一题】AcWing 3485. 最大异或和
文章目录 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 三、知识风暴 前缀和 Tire树 贪心算法
182 0