问题 单项选择题

有以下程序:
#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[i],p[j])>0)
strcpy(t,p[i]);strcpy(p[i],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]的长度。

单项选择题
问答题 简答题