第五期c语言答案

ps:所有答案都是使用vs2013编写,答案仅供参考

题目

  1. 输入两个字符串,从第一字符串中删除第二个字符串中所有的字符,例如,输入"They are students"和"aeiou",则删除之后的第一个字符串变成"Thy r studnts"

  2. 编写一个函数,求一个数字是否是回文数,回文数的概念:给定一个数,这个数顺读和逆读都是一样的,例如:121,1221是回文数,123,1231不是回文数

  3. 模拟实现函数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观看
里面会有详细的叙述,这里仅公布答案

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值