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