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進行定義,
可以改爲傳指針或者引用的方法。