问题 单项选择题

下面程序输出的结果是( )。
#include<stdio.h>
main()

char *a="1234";
fun(a);
printf("\n");

fun(char *s)

char t;
if(*s)
t=*S++;fun(s);
else return;
if(t!='\0')
putchar(t);

A) 1234
B) 4321
C) 1324
D) 4231

答案

参考答案:B

解析: 本题的fun()函数是用递归法实现逆序输出一个字符串。函数中首先定义一个局部变量t,然后s所指的内容是否为字符串结束符,不是的话将s所指的内容赋给t,同时使s后移一位,然后递归调用fun(s)。到这条语句为止是递归过程,即接下来连续递归调用fun(s)都只会执行到这一半,直到回朔条件(s所指内容是字符串结束符)出现,fun()函数连续返回,判断t不等于0的话,就输出t,所以输入的字符串被逆序输出,故本题的正确答案应该是B。

判断题
单项选择题