编写函数fun,它的功能是:除了字符串前导和尾部的"#"号之外,将串中其他"#"号全部删除。
形参r已指向字符串中第一个字母,形参v已指向字符串中最后一个字母。在编写函数时,不得使用C语言提供的字符串函数。例如,若字符串中的内容为"####a#bc#def##g#...
形参r已指向字符串中第一个字母,形参v已指向字符串中最后一个字母。在编写函数时,不得使用C语言提供的字符串函数。
例如,若字符串中的内容为"####a#bc#def##g#####",删除后,字符串中的内容则应当是"####abcdefg#####"。
请勿改动主函数main中的任何内容,仅在函数fun的花括号中填入所编写的若干语句,并添加必要的注释。
void fun(char s[ ], int r, int v )
{
}
谢谢 晚上就要考试了还有不会的
麻烦添加点注释好吗?我看不太懂,谢谢 展开
例如,若字符串中的内容为"####a#bc#def##g#####",删除后,字符串中的内容则应当是"####abcdefg#####"。
请勿改动主函数main中的任何内容,仅在函数fun的花括号中填入所编写的若干语句,并添加必要的注释。
void fun(char s[ ], int r, int v )
{
}
谢谢 晚上就要考试了还有不会的
麻烦添加点注释好吗?我看不太懂,谢谢 展开
2个回答
展开全部
我理解你的r是指向了字符'a',v是指向字符'g'
void fun(char s[],int r,int v)
{
int pos = 0; //用来存放字符串的个数
int count = 0; //用来计算删除'#'的个数,已被循环所用;
while *(s+pos) != '\0') //此循环计算字符串的长度
{
pos++;
}
for (int i=r; i<=v-count; i++) //从字符串'a'的位置开始循环比较,
{ //循环到字符串'g'的位置,因为中间
if (s[i] == '#') //要删除'#'所以循环的次数也要改变
{
for (int j=i; j<pos-count; j++)//此循环就是删除两地之间的'#'
{ //进行依次后一个字符补替前
s[j] = s[j+1]; //一个字符
}
count ++; //删除的个数要进行更新
i--; //假如删除了'a'后面的'#'
} //从'b'开始后面的字符串就往
} //前移,'b'就占住了删除的'#'
} //i--就是为了下一次循环从'b'
//比较
void fun(char s[],int r,int v)
{
int pos = 0; //用来存放字符串的个数
int count = 0; //用来计算删除'#'的个数,已被循环所用;
while *(s+pos) != '\0') //此循环计算字符串的长度
{
pos++;
}
for (int i=r; i<=v-count; i++) //从字符串'a'的位置开始循环比较,
{ //循环到字符串'g'的位置,因为中间
if (s[i] == '#') //要删除'#'所以循环的次数也要改变
{
for (int j=i; j<pos-count; j++)//此循环就是删除两地之间的'#'
{ //进行依次后一个字符补替前
s[j] = s[j+1]; //一个字符
}
count ++; //删除的个数要进行更新
i--; //假如删除了'a'后面的'#'
} //从'b'开始后面的字符串就往
} //前移,'b'就占住了删除的'#'
} //i--就是为了下一次循环从'b'
//比较
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2010-06-17
展开全部
void fun(char s[ ], int r, int v )
{
int i=v,j,k;
while (s[r]=='#')
r++;
while (s[i]=='#')
i--;
while (r<i)
{
if (s[r]=='#') {
for (j=r; j<=i; j++) s[j]=s[j+1];
i--;
v--;
}
else r++;
}
s[v+1]='\0';
}
{
int i=v,j,k;
while (s[r]=='#')
r++;
while (s[i]=='#')
i--;
while (r<i)
{
if (s[r]=='#') {
for (j=r; j<=i; j++) s[j]=s[j+1];
i--;
v--;
}
else r++;
}
s[v+1]='\0';
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询