【正确答案】
D
【答案解析】[考点] 字符串、函数递归、标识符的作用域和存储类 选项while(*t=*s){t++;s++;}中,“*t=*s”既完成字符的复制,又将当前复制字符的ASCII码作为循环条件。当s不断向后移动指向字符串结束标记'\0'时,将*s的值*\0'赋值给*t,'\0的ASCII码等于0,条件判断为假,跳出循环。选项for(i=0,j=0;t[i++]=s[j++];);和for(i=0;t[i]=s[i];i++);的程序算法类似,也是把s指向的字符赋值到t指向的存储单元,并对该字符进行是否为0的判断,若等于字符'\0',则跳出循环。而在选项do{*t++=*s++;}while(*s);中,使用了do…while循环,先执行循环体再进行条件判断。循环中先取出*s赋值给*t,然后s和t分别自加1,指向下一个单元,最后再对*s的值进行判断,若此时*s等于'\0',则跳出循环,由于字符'\0'没有复制到t指向的存储单元中,因此它不能实现字符串的复制。