.以下程序中,函数scmp的功能足返回形参指针s1和s2所指字符串中较小字符串的首地址: #include<stdio.h> #include<string.h> char*scmp(char*s1.char*s2) {

admin2019-06-12  34

问题 .以下程序中,函数scmp的功能足返回形参指针s1和s2所指字符串中较小字符串的首地址:
    #include<stdio.h>
    #include<string.h>
    char*scmp(char*s1.char*s2)
    {
    if(strcmp(sl,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);
    strcpy(string,scmp(str[0],str[1]));
    /*库函数strcpy功能是对字符串进行复制*/
    strcpy(string,scmp(string,str [2]));
    printf("%s\n",string);
    }
若运行时依次输入abcd、abba和abc三个字符串,则输出结果为(   )。

选项 A、abcd
B、abba
C、abbc
D、abca

答案B

解析 本题主要考查函数调用和字符串大小的比较。strcnlp(s1,s2)用来比较两个字符串的大小,比较方式是两个字符串自左向右逐个字符进行比较(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。当sl<s2时,返回值为负数;当s1==s2时,返回值为0;当s1>s2时,返回值为正数。gets()函数用来输入字符串,for循环用来控制逐个输入字符串。当分别输入字符串abcd、abha和abc后,执行程序strcpy(string,scmp(str[0] str[1])),然后调用scmp函数,此时返回str[1]的地址(因为字符串abcd的第三个字符c的ASCII码值大于字符串abba的第三个字符b的ASClI码值),并把该地址存放到string中。接着执行语句strcpy(string,scmp)(string,str[2])),结果是把字符串string,即abba的地址存放到string中,最后执行printf()函数,输出当前字符串string,即abba。
转载请注明原文地址:https://kaotiyun.com/show/DARp777K
0

最新回复(0)