關於省計算機二級考試的一個出題錯誤

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進行定義,

可以改爲傳指針或者引用的方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章