有以下函数: fun(char *a, char *b) { while((*a!=’\0’)&&(*b!=’\0’)&&(*a==*b)) { a++; b++;} return(*a-*b); } 该函数的功

admin2009-01-15  27

问题 有以下函数:    fun(char *a, char *b)    { while((*a!=’\0’)&&(*b!=’\0’)&&(*a==*b))      { a++; b++;}      return(*a-*b);    }    该函数的功能是(  )。

选项 A、计算a和b所指字符串的长度之差
B、将b所指字符串复制到a所指字符串中
C、将b所指字符串连接到a所指字符串后面
D、比较a和b所指字符串的大小

答案8

解析 本题要求阅读的代码是一个函数,阅读之前先要看清函数的定义,该函数有两个参数,都是字符指针,这说明它接收的是两个字符串。该函数没有定义返回类型,C语言规定函数的返回类型为int时可以省略,所以切不可将其看成是无返回类型的void型函数,它是int型函数。函数体中除了返回语句外,只有一条while循环语句,该循环的循环条件为(*a!=’\0’)&&(*b!=’\0’)&&(*a==*B) ,即当a和b所指处都不是字符结束符’\0’并且a和b所指处的内容相等时执行循环。而循环体中只是简单地将指针a和b同时往后移动1位。循环结束后返回a所指内容减去b所指内容的差。换个角度去考虑,也就是说当字符串a或b中有一个结束了或者是它们的相同位置小有一个字符不同时,则返回该位置两个字符之差。若两者长度相同而且所有对应字符都相同的话,最后返回的是’\0-’\0’=0,否则的话就返回两个字符串第一对不相同的字符之差。这时应该可以看出来,这个函数实现的是对两个字符串的比较。所以,4个选项中D正确。
转载请注明原文地址:https://kaotiyun.com/show/6oXp777K
0

最新回复(0)