有没有人能帮我讲解一下这个C语言程序的执行过程?

我没看懂这个程序是如何完成将字符串s中所有的字符c删除的功能的,从if下面开始就看不懂了,s[i]和s[j]不都是同一个数组吗?
#include"stdio.h"
main()
{ char s[80];
int i,j;
gets(s);
for(i=j=0;s[i]!='\0';i++)
if (s[i]!='c')
s[j++]=s[i];
s[j]='\0';

puts(s);}

#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',赋空值; 

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-04-04
我举个例子啊,比如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'
第2个回答  2020-04-16

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网