一个简单的C语言问题 求助

来源:百度知道 编辑:UC知道 时间:2024/05/09 17:22:04
假定输入的字符串只有字母和*号,如果字符的前导*号多于3个,则删除多余的*号;若少于或等于n个,则什么也不做 输出处理后的字符串
int main(void)
{
char s[30],del[30];
int i,j=0,len,flag=1;
printf("input s");
scanf("%s",s);
len=strlen(s);
for(i=0;i<3;i++)
{
if(s[i]!='*')
flag=0;
break;
} /*判断前3个是否都为*号*/
if(flag)
{
for(i=3;i<len;i++)
del[j]=s[i]; /*新字符串*/
j++;
}
printf("%s",del);
getch();
}

请给出一个最好的算法 同时请对以上的程序做出改正 谢谢
还有一个
将输入字符串的前导*号全不删除 程序运行也不对 帮忙忙看看 加分哈

int main(void)
{
char s[30];
int i=0,j=0,count=0;
char t[30];
printf("input the string:");
scanf("%s",s);
do
{ count++;
i++;
}
while(s[i]!='*');
for(i=count;i<strlen(s);i++)
{
t[j]=s[i];
j++;
}
printf("%s",t);
getch();
}

// 最多留前面3个*
#include <stdio.h>
int main(void)
{
char s[30];
int i, len;
printf("input s:");
scanf("%s",s);
len=strlen(s);
if (len < 3) { //字串长度小于3,直接输出
printf("%s\n", s);
exit(0);
}
for(i=0;i<3;i++)
{
if(s[i]!='*') //前3个字符某个不为'*'时break
break;
}
if(i==3) //此时前面3个均为*
{
for(;i<len;i++) // 检测从后面是否还有*
if (s[i]!='*') break; //
}

if (i>3) printf("%s\n", s+i-3); //前面不止3个*,从s+i-3位置开始输出,即只输出3个*
else printf("%s\n", s);

}

// 消除前面的*
#include <stdio.h>
int main(void)
{
char s[30];
int i=0;
char t[30];
printf("input the string:");
scanf("%s",s);
while(s[i]=='*')
{
i++;
}

printf("%s\n",s+i);
}