发布网友 发布时间:2022-05-15 00:11
共2个回答
热心网友 时间:2023-09-10 07:29
#include"stdio.h"
main()
{ char s[80];
int i,j;
gets(s);
for(i=j=0;s[i]!='\0';i++)//这里只有i++,j++在下面,j不随for循环自加1
if (s[i]!='c')
s[j++]=s[i];//每有一个不为'c'的单位出现,j自加1;并且该单位的值,重新赋值给数组s,从s[0]开始,因为j初值为0
else//这加个else便于理解,等价于源代码;该单位的值为'c',就向该单位赋予空值;
s[j]='\0';
puts(s);
}//例如输入abcdec,分别占据s[0]='a',s[1]='b',s[2]='c',s[3]='d',s[4]='e',s[5]='c';
//s[0](j==0),s[1](j==1)还是赋值在原位,
//s[2](这if不成立,j不自加1)s[2]='\0',
//s[3]不为'c'(j==2),所以'd'就赋给了s[2];
//s[4](j==3),'e'赋予s[3],
//s[5]='\0',赋空值;
热心网友 时间:2023-09-10 07:29
我举个例子啊,比如acd,首先从第一个开始,s0=a,不是c,则把a赋值给s0,同时执行j++命令,j=1,数组元素不变,然后s1=c不执行j++命令,则j仍然=1,数组元素不变,最后,s2=d,而此时j=1,所以把d赋值给s1,数组变成add,最后执行j++命令,j=2,执行sj='\0'即s2='\0',最后得到ad'\0'