问答题
s是字符数组,s[0]中存放的是该字符串的有效长度,假设s[1..7]中字符串的内容为"abcabaa",说明下列程序的功能及执行结果。 #define len 8 int k. n[len], char s[len]=“7abcabaa”; void unknown3(char T[]) {int i, j; i=1; n[1]=0; j=0; while(i<1en) {if(j==0 || T[i]==T[j]) {++i; ++j; if(T[i]!=T[j]) n[i]=j; else n[i]=n[j]; } else j=n[j]; } } main() {unknown3(s); for(k=1;k<1en; k++) printf(“%d”,n[k]); }【北京交通大学2004六、3(7分)】
【正确答案】正确答案:本程序的功能是求字符串的nextval函数,程序执行结果是01 10132。值得指出的是,用字符串给数组S赋初值会自动在最后加上‘\0’,故原题len应定义为9。
【答案解析】