以下程序中,函数scmp的功能足返回形参指针s1和s2所指字符串中较小字符串的首地址:
#include< stdio.h >
#include< string.h >
char*scmp(char*s1.char*s2)
{
if(strcmp(s1,s2)< 0)return(s1);
else return(s2);
}
void main()
{
int i;
char string[20],str[3][20];
for(i=0;i< 3;i++)
gets(str[i]);
strcpy(string,scmp(str[0],str[1]));
/*库函数strcpy功能是对字符串进行复制*/
strcpy(string,scmp(string,str[2]));
printf("%s\n",string);
}
若运行时依次输入abcd、abba和abc三个字符串,则输出结果为()。
【正确答案】
B
【答案解析】本题主要考查函数调用和字符串大小的比较。strcmp(s1,s2)用来比较两个字符串的大小,比较方式是两个字符串自左向右逐个字符进行比较(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。当s1< s2时,返回值为负数;当s1==s2时,返回值为0;当s1 >s2时,返回值为正数。gets()函数用来输入字符串,for循环用来控制逐个输入字符串。当分别输入字符串abcd、abba和abc后,执行程序strcpy(string,scrnp(str[0],str[1])),然后调用scmp函数,此时返回str[1]的地址(因为字符串abcd的第三个字符c的ASCII码值大于字符串abba的第三个字符b的ASCII码值),并把该地址存放到string中。接着执行语句strcpy(string,scmp(string,str[2])),结果是把字符串string,即abba的地址存放到string中,最后执行printf()函数,输出当前字符串string,即abba。