问题
填空题
以下程序运行后的输出结果是______。 #inClude <strinq.h> char *ss(char *s) { char *p;t; p=S+1;t=*s; while(*p){*(p-1)=*p;p++;} *(p-1)=t; return s; } main() { char *p,str[10]="abcdefgh"; p=ss(str); printf("%s\n",p); }
答案
参考答案:bcdefgha
解析: 在本题定义的 ss()函数中首先定义了一个指针p和一个字符变量t,然后让p指向参数指针s的下一个位置s+1,并让t保存s位置的字符.然后使用一个while循环将p指向的内容赋给它前面一个位置,即将参数s所指的字符串从第2个字符开始整体往前移动一位。循环结束时,p指向原s串的结束标志处,所以让*(p-1)=t;即是将原s串的第1个字符复制到s串的最后一个位置。整个函数实现的是让一个字符串循环左移一位。故主函数中最后输出的字符串是"bcdefgha"。