2007年春试题6
#include <stdio.h>
struct st{
char c, char s[80];
};
char * f(struct st t);
void main( )
{ int k;
struct st a[4] =
{{‘1’,”123”}, {‘2’,”321”},{‘3’,”123”},{ ‘4’,”321”}};
for(k = 0; k < 4; k++)
printf("%s/n", f(a[k]));
}
char * f(struct st t)
{ int k = 0;
while(t.s[k]!=’/0’){
if(t.s[k] == t.c) return t.s+k;
k++;
}
return t.s;
}
(21) 程序运行时,第1行输出 (21) 。
A、321 B、21
C、123 D、12
(22) 程序运行时,第2行输出 (22) 。
A、21 B、12
C、3 D、1
(23) 程序运行时,第3行输出 (23) 。
A、3 B、123
C、1 D、321
(24) 程序运行时,第4行输出 (24) 。
A、123 B、1
C、3 D、321
请看看以上有什么错误,出题老师真大意。。。。。
公布答案,f函数返回的指针是一个局部变量,离开函数就消失了,所以不能用传值的方法对f进行定义,
可以改为传指针或者引用的方法。