1、编写一个程序把所有字符串的前导*保留,其他的*号都删除
效果: ***shd***swbd*dwh 转换成 ***shdswbddwh
算法分析,先研究一个字符串
char a[100]="***shd***swbd*dwh",b[100]="";
int i,j,k=0;
puts(a);
for(i=0;a[i];i++)
{
if(a[i]!='*')
{
break;
}
b[k++]=a[i];
}
for(j=i;a[j];j++)//下标跟随法
{
if(a[j]=='*')
{
continue;
}
b[k++]=a[j];
}
b[k]='\0';
puts(b);
如果是一个二维字符数组呢?
//前导*保留,后面出现的*全部删除
给定几个字符串,编写程序把字符串的前导*移动到末尾
***shd***swbd*dwh 转换成 shd***swbd*dwh***
char a[4][100]={"***sh**d","***sw76***b","***d*d*","**w12h***"};
int i,j,k=0;
for(i=0;i<4;i++)
{
puts(a[i]);
}
puts("_______");
for(i=0;i<4;i++)
{
for(j=0;a[i][j];j++)//先考察第i个字符串a[i]
{
if(a[i][j]!='*')//先要越过a[i]的前导*
{
break;
}
}
k=j;//让k与j同步,发生联系
for(;a[i][j];j++)//下标跟随法
{
if(a[i][j]=='*')
{
continue;
}
a[i][k++]=a[i][j];
}
a[i][k]='\0';
}
for(i=0;i<4;i++)//输出结果
{
puts(a[i]);
}
方法二
使用数组b来装入数组a
char a[4][100]={"***sh**d","***sw76***b","***d*d*","**w12h***"},b[4][100]={""};
int i,j,k=0,m,t;
for(i=0;i<4;i++)
{
puts(a[i]);
}
puts("_______");
for(i=0;i<4;i++)
{
for(j=0;a[i][j];j++)//先考察第i个字符串a[i]
{
if(a[i][j]!='*')//先要越过a[i]的前导*
{
break;
}
}
m=j;
k=0;
for(;a[i][j];j++)//下标跟随法
{
b[i][k++]=a[i][j];
}
for(t=0;t<m;t++)
{
b[i][k++]='*';
}
b[i][k]='\0';
}
for(i=0;i<4;i++)
{
puts(b[i]);
}
/*方法二*/
char a[4][100]={"***sh**d","***sw76***b","***d*d*","**w12h***"};
int i,j,k=0,m,t;
for(i=0;i<4;i++)
{
puts(a[i]);
}
puts("_______");
for(i=0;i<4;i++)
{
for(j=0;a[i][j];j++)//先考察第i个字符串a[i]
{
if(a[i][j]!='*')//先要越过a[i]的前导*
{
break;
}
}
//退出循环后,把j的值保存起来,移位需要差距
k=j;//让k与j同步,发生联系
for(;a[i][j];j++)//把后面元素向前移
{
a[i][j-k]=a[i][j];//a[i][0]
}
//这时j已经跑到最后了,需要在字符串后面加上j-k个*号
for(m=j-k;m<j;m++)//再加上前面的*号
{
a[i][m]='*';
}
a[i][j]='\0';
}
for(i=0;i<4;i++)
{
puts(a[i]);
}
给定几个字符串,编写程序把字符串的前导*移动到末尾,同时还要删除中间出现的*号
***shd***swbd*dwh 转换成 shdswbddwh***
char a[4][100]={"***sh**d","***sw76***b","***d*d*","**w12h***"},b[4][100]={""};
int i,j,k=0,m,t;
for(i=0;i<4;i++)
{
puts(a[i]);
}
puts("_______");
for(i=0;i<4;i++)
{
for(j=0;a[i][j];j++)//先考察第i个字符串a[i]
{
if(a[i][j]!='*')//先要越过a[i]的前导*
{
break;
}
}
m=j;
k=0;
for(;a[i][j];j++)//下标跟随法
{
if(a[i][j]=='*')
{
continue;
}
b[i][k++]=a[i][j];
}
for(t=0;t<m;t++)
{
b[i][k++]='*';
}
b[i][k]='\0';
}
for(i=0;i<4;i++)
{
puts(b[i]);
}