有以下程序: #include<string.h> void f(char p[][10],int n) {char t[10];int i,j; for(i=0;i<n-1;i++) for(j=i+1;j<n;j++)

admin2011-06-10  34

问题 有以下程序:    #include<string.h>    void f(char p[][10],int n)    {char t[10];int i,j;    for(i=0;i<n-1;i++)    for(j=i+1;j<n;j++)    if(strcmp(p,p[j])>0)    {strcpy(t,p);strcpy(p,p[j]);strcpy(p[j],t);}    }    main()    {char p[5][10]={"abc","aabdfg","abbd","dedbe","cd"};    f(p,5);    printf("%d\n",strlen(p[0]));}    程序运行后的输出结果是(       )。

选项 A、2
B、4
C、6
D、3

答案C

解析 本题考核的是二维字符数组按行存放字符串、二维数组名作为函数的参数以及字符串的排序。主函数中定义了一个二维字符串数组p并按行赋值,调用f()函数,将字符串从小到大排序,strcmp()函数的功能是对两个字符串作向右逐个字符比较,直到出现不同的字符或遇到“\0”为止。如果全部字符都相同,则认为相等;若出现不同的字符.则以第一个不相同的字符的比较结果为准。由此可知最小的字符串是“aabdfg”,排序后存放在p[0]中,最后在主函数中输出p[0]的长度。
转载请注明原文地址:https://kaotiyun.com/show/93Pp777K
0

最新回复(0)