ps:所有答案都是使用vs2013编写,答案仅供参考
题目
-
输入两个字符串,从第一字符串中删除第二个字符串中所有的字符,例如,输入"They are students"和"aeiou",则删除之后的第一个字符串变成"Thy r studnts"
-
编写一个函数,求一个数字是否是回文数,回文数的概念:给定一个数,这个数顺读和逆读都是一样的,例如:121,1221是回文数,123,1231不是回文数
-
模拟实现函数pow(x,y),即实现运算x^y(x的y次方),这里x和y都为整数
答案
第一题
void delarr2(char *str1, char *str2)
{
int haxi[256] = { 0 };
while (*str2 != '\0')
{
++haxi[*str2++];
}
while (*str1 != '\0')
{
if (haxi[*str1] != 0)
{
int i = 0;
int j = 0;
while (str1[i] != '\0')
{
if (haxi[str1[i]] == haxi[str1[i + 1 + j]] && haxi[str1[i]]==1) //本来没有这一行,测试的时候发现,字符串1最后如果
{ //是字符串2里面的好像删不了,比如They are studentuuuuuuuuuu
j++;
}
str1[i] = str1[i + 1 + j];
i++;
}
}
str1++;
}
}
第二题
int huiwen(int x)
{
int x_copy = x; //复制一个x
int num = 0; //算出来的x的每一位都保存在num中
int y = 0; //反转x得到的数
while (x_copy)
{
num = x_copy % 10;
x_copy = x_copy / 10;
y = y * 10 + num;
}
if (x == y)
return 1;
return 0;
}
第三题
int mypow(int x, int y) //底数和幂
{
int num;
if (y == 0)
{
return 1;
}
if (y % 2 == 1) //y是奇数的情况
{
num = x*mypow(x, y / 2) * mypow(x, y / 2);
}
else //y是偶数
{
num = mypow(x, y / 2) * mypow(x, y / 2);
}
if (y == 0)
{
return 1;
}
return num;
}
如果看答案看不太懂,请结合https://blog.csdn.net/Heart_of_collaps/article/details/100531850观看
里面会有详细的叙述,这里仅公布答案