假定输入的字符串中只包含字母和*号,请编写程序,删除字符串首部和尾部的*号,字母中间的*号保留。

#include<stdio.h>
#include<conio.h>
#define N 100
int main()
{
int i,j;
char c;
char ch[N];
printf("请输入一个只含有字母和*号的字符串:\n");
scanf("%s",ch);
for(i=0;ch[i]!=c;i++)
{
for(j=i;ch[j]!='\0';j++)
ch[j]=ch[j+1];
}
for(i=0;ch[i]!='0';i++)
{
//printf("%d\n",i);
}
for(i=i-2;ch[i]!=c;i--)
{
if((ch[i]=='*')&&(ch[i-1]!='*'))
{
for(j=i;ch[j]!='\0';j++)
{
ch[j]=ch[j+1];
}
}
}
puts(ch);

getch();
}
这是我编写的程序,感觉完全不对啊,我的想法是先从前面开始删掉字母前的全部*,再从后面开始删除字母后面的全部*,但是。。。。。。。。。急啊、、、、

粗略看了你写的程序,发现了几个问题:
1.第一段的嵌套循环无法完成你删掉字母前全部*的作用,除非你字符串前面的*只有一个
2.第二个 i 循环的作用是用 i 来标记 \0 的位置吧,如果是的话,那接下来的另一个 i 循环不用-2呀,-1就足以从最后一个*开始循环了
3.在你写的程序最后部分的条件语句if((ch[i]=='*')&&(ch[i-1]!='*'))下面的循环语句我看不出有什么实际帮助。建议,在符合条件语句的情况发生时,记录下 i 或者 i-1;用新的循环语句将这个i或者i-1作为循环条件,将它之前的字符存储于一个新的空字符串中,即可得到符合你需要的字符串。
(以上如有偏差请谅解,很久没编程了)
温馨提示:答案为网友推荐,仅供参考
相似回答