以下程序运行后的输出结果是______。 #inClude <strinq.h> char *ss(char *s) { char *p;t; p=S+1;t=*s; while(*p){*(p-

admin2009-01-15  32

问题 以下程序运行后的输出结果是______。
   #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"。
转载请注明原文地址:https://kaotiyun.com/show/pTXp777K
0

最新回复(0)