关于#C语言#的问题,如何解决?

问一下第二和第三个测试点无法通过,是漏了哪些特殊情况吗?

int·reverse(·int·number·)·{
    int·sum·=·0;
    if·(number·<·0)·{
        printf("-");
        number·=·-number;
    }
    while·(number)·{
        if·(number·%·10·==·0)·{
            number·/=·10;
            continue;
        }
        sum·=·sum·*·10·+·(number·%·10);
        number·/=·10;
    }
    return·sum;
}

img

img

试下以下代码,看是否可以:

int reverse(int number){
    int sum =0;
    int n=0,i;
    int a,b,temp = number;
    /*
    if (number <0)
    {
        printf("-");
        number=-number;
    }*/
    while(temp!=0)
    {
        temp=temp/10;
        n++;
    }
    for(i=0;i<n;i++)
    {
        a=number/10;
        b=number%10;
        number=a;
        sum=sum*10+b;
    }
    return sum;
}

末尾的零要单独处理,你这样只要中间有零就会出错吧,比如101,230100:

int·reverse(·int·number·)·{
    int·sum·=·0;
    // 处理特殊情况
    if (number == 0) {
      return 0;
    }

    if·(number·<·0)·{
        printf("-");
        number·=·-number;
    }

    while·(number·%·10·==·0)·{
       number·/=·10;
    }
    while·(number)·{
        sum·=·sum·*·10·+·(number·%·10);
        number·/=·10;
    }
    return·sum;
}

参考一下,没调试过

这种问题,只要不涉及性能的,记住一点,无脑转字符串,按照字符串处理
itoa atoi 了解下

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7665682
  • 你也可以参考下这篇文章:c语言从文件中读取数据,对数据进行冒泡,选择,插入三种排序
  • 除此之外, 这篇博客: C语言实现顺序查找中的 算法思想:遍历整个数组,依次将数组中的每一个元素与待查找的数据进行比较,若没找到,则停止循环,输出其位置值;如果遍历结束,都没有找到符合条件的数,则输出“没找到”等提示信息。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    核心从数据的第一个元素开始,依次比较,直到找到目标数据或查找失败

                1.从表中的第一个元素开始,依次与关键字比较。

                2.若某个元素匹配关键字,则 查找成功。

                3.若查找到最后一个元素还未匹配关键字,则 查找失败。

     

    顺序查找对表中元素的排序无要求,这些元素在表中可以任意排序,这使得顺序查找的适应性很高。顺序查找的实现很简单,其示例代码如下:

    #include "stdio.h"
    void main(){
    	int a[10],num,i,flag;                 /*变量定义*/
    	printf("Please input numbers: ");
    	for(i=0;i<=9;i++){
    		scanf("%d",&a[i]);                 /*接收输入的数组*/
    	}
    	printf("Please finding numbers: ");
    	scanf("%d", &num);                   /*接收关键字*/
    	for(i=0;i<=9;i++){
    		if(a[i]=num){                      //查找到所需的元素,跳出循环
    			flag=1;
    			break;
    		}
    	}
    	if(i==10){
    		flag=0;
    	}
    	if(flag){
    		printf("The numbers find!\n");
    	}
    	else{
    		printf("The numbers No find!\n");
    	}
    }

    版权声明:本文为博主原创文章,未经博主允许不得转载

  • 您还可以看一下 张勇老师的初级到CS开发高手通用权限管理系统全程实录课程中的 讲解和推进客户端智能升级流程小节, 巩固相关知识点

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

w knakna