两道C语言编程题目(Dev c++)(新手小白,请求指导,谢谢😊)

1、输入一个包含*的字符串,程序的功能是将字符串前部和尾部的*删除,中间的*不删除(用自定义函数实现); 2、请编写一个自定义函数fun,实现如下功能: 将一个字符串中的第一个连续数字转换为整数,作为函数值返回,否则返回0。 如字符串"abc123de45fg",则函数的返回值为123。 (如果可以请添加一定注释,谢谢谢谢!)

好的,这个题难度不大,可以的话请采纳

先来第二个

int fun(char *p, int n)
{
	int i,m = -1,k=-1;
	for (i = 0; i < n; i++)
	{
		if (*(p + i) >= '0' && *(p + i) <= '9')
		{
			if (m == -1)
			{
				m = i;
				k = i;
			}
			else
				k = i;
		}
		else if (m >= 0 && k>=0) //已找到结果,跳出循环
		{
			break;
		}
	}
	//如果找到有效数字
	if (m >= 0 && k >= 0)
	{
		int num = 0;
		int bei = 1;
		for (i = k; i >= m; i--)
		{
			num += (*(p + i)-'0')*bei;
			bei *= 10;
		}
		return num;
	}
	return 0;
}

int main()
{
	char ch[] = "ch1239var";
	int num = fun(ch, sizeof(ch));

	return 0;

}

 

void removestar(char *p, int n)
{
	char *q = new char[n];
	memset(q, 0, n);
	int i;
	for (i = 0; i < n; i++)
	{
		if (*(p + i) != '*') //找到第一个非*,直接赋值后面的内容到新串
		{
			memcpy(q, p + i, n - i);
			break;
		}
	}
	for (i = strlen(q) - 1; *(q + i) == '*'; i--)
		*(q + i) = 0;
	memset(p, 0, n);
	memcpy(p, q, strlen(q));
	delete[]q;
}

int main()
{
	char ch[] = "**ch1239var**";
	removestar(ch, sizeof(ch));
	return 0;

}

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632