这期题目不重要,用python一下子就过了,但c里面却出现了一个我想不透的问题。
我觉得我已经解决了,其实不是指针问题,是处理完字符了忘了加'\0'导致溢出,但是我即使这样改了,自己编译器通过了,但牛客网上仍提示我案例“657 37”错了。。。我真是无语
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXDIGIT 10000
char *intToStr(int n)
{
char rlt[MAXDIGIT];
int len = 0;
while(n)
{
rlt[len++] = '0' + n%10;
n /= 10;
}
rlt[len] = '\0'; /**< 哈哈,根本不是什么指针问题。。。只是忘了加结束符,damn */
return rlt;
}
int strToInt(char *p)
{
int i;
int rlt = 0;
int carry = 1;
for(i=strlen(p)-1; i>=0; i--)
{
rlt += (p[i] - '0')*carry;
//printf("TEST:%d from %c\n", rlt, p[i]);
carry *= 10;
}
// free(p);
// p = NULL;
return rlt;
}
int rev(int n)
{
char *rlt;
rlt = intToStr(n);
//printf("str:%s with %d length @%p\n", rlt, strlen(rlt), *rlt);
int ans = strToInt(rlt);
// free(rlt);
// rlt = NULL;
return ans;
}
int main()
{
int a, b;
scanf("%d%d", &a, &b);
// a = 956;
// b = 37;
int x = rev(a);
int y = rev(b);
printf("%d\n", rev(x + y));
//printf("%d\n", y);
system("pause");
}
题目描述
对于一个整数X,定义操作rev(X)为将X按数位翻转过来,并且去除掉前导0。例如:
如果 X = 123,则rev(X) = 321;
如果 X = 100,则rev(X) = 1.
现在给出整数x和y,要求rev(rev(x) + rev(y))为多少?
如果 X = 123,则rev(X) = 321;
如果 X = 100,则rev(X) = 1.
现在给出整数x和y,要求rev(rev(x) + rev(y))为多少?
输入描述:
输入为一行,x、y(1 ≤ x、y ≤ 1000),以空格隔开。
输出描述:
输出rev(rev(x) + rev(y))的值
示例1
输入
123 100
输出
223
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXDIGIT 10000
char *intToStr(int n)
{
char rlt[MAXDIGIT];
int len = 0;
while(n)
{
rlt[len++] = '0' + n%10;
n /= 10;
}
return rlt;
}
int strToInt(char *p)
{
int i;
int rlt = 0;
int carry = 1;
for(i=strlen(p)-1; i>=0; i--)
{
rlt += (p[i] - '0')*carry;
//printf("TEST:%d from %c\n", rlt, p[i]);
carry *= 10;
}
free(p);
p = NULL;
return rlt;
}
int rev(int n)
{
char *rlt;
rlt = intToStr(n);
printf("str:%s @%p\n", rlt, *rlt);
int ans = strToInt(rlt);
return ans;
}
int main()
{
int a, b;
//scanf("%d%d", &a, &b);
a = 957;
b = 37;
int x = rev(a);
int y = rev(b);
//printf("%d, %d\n", x, y);
printf("%d\n", y);
system("pause");
}
例如,所用的测试例 957 和 37,用rev函数之后,957理应变成759,37理应变成73,但是!37居然是变成739,末位多了一个9,而且这个“9”其实就是759的最后一位那个“9”。
但是为什么会这样子了,上一次函数调用之后,为什么指针里面的内容还在??