详细解释一下这两道C语言

2024-12-04 19:44:28
推荐回答(2个)
回答1:

这两个程序的功能:遍历字符串,如果遇到空格,就将空格后面的字符串赋值给原数组。
观察第一个程序:遇到空格并将空格后面的字符串赋值给原数组后,将计数变量i置为了0,目的是为了重新遍历新的字符串,遍历过程也将从头开始。所以第一次循环得到了新数组"are you!",第二次循环得到了新数组"you!",因此答案是A
观察第二个程序,与前一个程序不同的是,字符串赋值原函数后并没有将计数变量置0,因此在第一次生成新字符串"are you!"后不再从头开始遍历,而是从i=4处开始,这对于新的字符串"are you!"来说,刚好跳过了其中的空格,因此最终结果依旧为“are you!”,所以答案为A

回答2:

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*/