问一下第二和第三个测试点无法通过,是漏了哪些特殊情况吗?
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;
}
试下以下代码,看是否可以:
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 了解下
核心:从数据的第一个元素开始,依次比较,直到找到目标数据或查找失败。
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");
}
}
版权声明:本文为博主原创文章,未经博主允许不得转载
w knakna