第一次
do语句后y=9
while循环条件判断后
y=8
第二次
do语句后y=7
while循环条件判断后
y=6
第三次
do语句后y=5
while循环条件判断后
y=4
第四次
do语句后y=3
while循环条件判断后
y=2
第五次
do语句后y=1
while循环条件判断后
y=0
退出循环
打印输出前先计算--y
所以y=-1
程序最后输出结果是-1
#include<stdio.h>#include<string.h>
void f(char p[][10], int n ) /* 字符串从小到大排序*/
{ char t[10]
int i,j
for(i=0i<ni++)
for(j=i+1j<nj++)
if(strcmp(p[i],p[j])>0) {strcpy(t,p[i]) strcpy(p[i],p[j]) strcpy(p[i],t) }
}
main()
{char p[5][10]={"abc","aabdfg","abbd","dcdbe","cd"}
f(p,5)
printf("%d\n",strlen(p[0]))
}
分析:
调用的f函数是排列字符串大小的。该函数采用的是选择法排序,用了两个for循环,外循环比较次数为n-1次,内循环为n-1-i次。
所以调用时,排列后的顺序为p[5][10]={“aabdfg”,”abbd”,”abc”,”cd”,”dcdbe”}
然后,求字符串长度函数strlen(p[0]),p[0]是二维数组p[5][10]第0行的首地址,指向的内容是第一个字符串,即aabdfg,长度为6,故答案选c
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)