以下程序运行后的输出结果是______。 #include <string.h> void fun(char *s,int p,int k) { int i; for(i=p;i<k-1;i++) s[i]=s

admin2009-01-15  11

问题 以下程序运行后的输出结果是______。
   #include  <string.h>
   void fun(char  *s,int  p,int  k)
   {  int  i;
       for(i=p;i<k-1;i++)  s=s[i+2];
   }
   main()
   {  char  s[]="abcdefg";
       fun(s,3,strlen(s)); puts(s);
   }

选项

答案abcfg

解析 本题考查的是字符数组用作函数参数。C语言中数组名可以看作该数组首地址的常量指针、因此可以直接传递给指针类型的参数。本题的主函数调用fun(s,3,strlen(s));后,函数中for循环就是for(i=3;i<strlen(s)-1;i++),即i从3递增到字符数组s的长度-2位置,循环中让 s=s[i+2],所以函数fun()实现的功能简单来说就是将字符串s下标为p+2~k范围的字符整体复制到字符串s下标为p~k-2的位置上。在本题中strlen(s)返回s的长度7,所以复制的字符为s[5]~s[7],即’f’、 ’g’,’\0’三个字符,复制到s[3]~s[5],故最终输出的字符串为abcfg(因为s[5]为’\0’,所以后面的字符不会输出)。
转载请注明原文地址:https://jikaoti.com/ti/VTK0FFFM
0

最新回复(0)