有没有人能帮我讲解一下这个C语言程序的执行过程?
我没看懂这个程序是如何完成将字符串s中所有的字符c删除的功能的,从if下面开始就看不懂了,s[i]和s[j]不都是同一个数组吗?#include"stdio.h"main...
我没看懂这个程序是如何完成将字符串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++)
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',赋空值;
展开全部
我举个例子啊,比如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'
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询