这两个程序的功能:遍历字符串,如果遇到空格,就将空格后面的字符串赋值给原数组。
观察第一个程序:遇到空格并将空格后面的字符串赋值给原数组后,将计数变量i置为了0,目的是为了重新遍历新的字符串,遍历过程也将从头开始。所以第一次循环得到了新数组"are you!",第二次循环得到了新数组"you!",因此答案是A
观察第二个程序,与前一个程序不同的是,字符串赋值原函数后并没有将计数变量置0,因此在第一次生成新字符串"are you!"后不再从头开始遍历,而是从i=4处开始,这对于新的字符串"are you!"来说,刚好跳过了其中的空格,因此最终结果依旧为“are you!”,所以答案为A
if(a[i]==' ')
{
strcpy(a,&a[i+1]);
i=0; /*第一张图有i=0 将空格后字符串复制到前面后,从新的a[0]开始比较,
重复直到将最后一个空格后的字符串复制到前面*/
}
if(a[i]==' ')
strcpy(a,&a[i+1]); /*第二张图将are you复制到a后,i不变(i=3),执行for中i++ i=4, a[i]=y 从you开始
if 不会碰到空格 ,因此不会再执行strcpy*/