C语言,以下程序运行后的输出结果为_____

#include<stdio.h>
#include<string.h>

void print(char *p)
{ static int len,offset;
offset=strlen(p)-len;
if(offset==0) return;
else printf("%c",*(p+offset-1));
len++;
print(p);
}

void main()
{ char str[]="dog";print(str);}
答案是god
请讲下过程,谢谢

递归函数。

开始时,len为0,offset=3,offset不为0,先输出p+offset-1上的元素,即*(p+2),为g,并len++,再调用print(str)。

之后,每次递归,len静态变量保存了上一次的值。实际上,len每加一,offset就随之向左偏移一位,指向前面的一个字符,也就是倒过来输出字符串中的每个字符。

直到len=strlen(str),offset为0时,返回,结束。

递归中执行else的次数为len次,即字符串的长度,倒过来输出原字符串。
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-09-04
程序print是个递归程序,首先当一个字符串出现在函数的形参中时,由于是第一次出现,此时静态变量len,offset分别声明为0,以后将不再声明该静态变量。此时offset变化成字符串大小,如题,offset=4,那么p+4-1之后,就是p+3,此时P指针的位置指向了字符数组的第3个字符,也就是str[2],即g,并printf出来,然后就是len++,此时len变成了1,那么再调用函数时,由于不再声明变量len,offset,所以offset就=3了,然后就。。。直到offset=0,函数return,结束函数的调用。

C语言,以下程序运行后的输出结果为__
递归函数。开始时,len为0,offset=3,offset不为0,先输出p+offset-1上的元素,即*(p+2),为g,并len++,再调用print(str)。之后,每次递归,len静态变量保存了上一次的值。实际上,len每加一,offset就随之向左偏移一位,指向前面的一个字符,也就是倒过来输出字符串中的每个字符。直到len=st...

c语言,以下程序运行后的输出结果是
因此最终结果a=0,b=0,c=-10 输出a、b、c的值,输出0,0,-10

以下程序运行后的输出结果是___main(){inta=23;printf('%d n...
【答案】:2 解析:(a\/3<0?a\/10:a%3),因为a=23;次表达式为三目运算,是说,如果a\/3<0为真,即取值a\/10;反之,取值a%3;但a\/3>0,所以a\/3<0为假,即输出的结果为:a%3的余数,即为2。

以下程序运行后的输出结果为( ) A.17 B.19 C.21 D.2
C 试题分析:由程序语言知:当 时循环,否则输出,又第一次进入循环体: ;第二次进入循环体: ;第三次进入循环体: ;第四次进入循环体: ;第五次进入循环体: ;第六次进入循环体: ;第七次进入循环体: ,此时输出,输出S的值为21。点评:本题主要考查程序语言,通过对程...

以下程序运行后,输出结果是( ) main() { char *s="abcde"; s+=2...
选择答案C,输出的为字符c的地址。因为%d是打印整形变量的值,因为前一句执行了s+=2,s指针偏移了两个位置,偏移了两个位置之后s指向的是字符c,所以输出语句输出的是指针s,而s存放的是地址,所以输出的就是字符c所在的地址。

以下程序运行后的输出结果是___。 main() { int x=10; printf("%d,%d...
c语言函数参数处理顺序-从右向左 printf是函数,遵循这个规律 所以先执行后面的--x,那么第二个参数就是--x就是9,执行完第二个参数后,x就变成9了,再执行第一个参数--x就是8

二级c语言题目 以下程序运行后的输出结果是___ main(){ int x=0210...
0210就是八进制的210 x就是16进制输入或者输出 所以答案是88

以下程序运行后输出结果是:() #include <stdio.h> main() { char s...
你的题目有问题吧 输出语句中格式应该为%c %s是输出字符串 答案选c

以下运行程序后的输出结果是#include<stdio.h>main(){int x=1,y=1...
首先指出程序中的三处错误,第一个是int m n中间应该有逗号,第二个是swtich拼写有错误,第三个是打印输入语句printf("x=%d,y=%d",x,y)有误。修正后程序的运行结果是:x=6,y=6。代码运行结果如下图所示:程序运行过程解析:1、完成变量的赋值,其中有x=1,y=1,m=1,n=1。2、执行第一...

以下程序运行后的输出结果是 #include<stdio.h> int f(int x, int...
相当于说f(int x,int y)=(y-x)*x;这里主要是计算嵌套函数f(f(a, b), f(a, c));先将f(a, b)和 f(a, c)带进去,得到f((b-a)*a,(c-a)*a)=f((4-3)*3,(5-3)*3)=f(3,6)最后计算f(3,6)=(6-3)*3=9,所以最后的输出结果就是9,执行以上程序结果如下:...

相似回答
大家正在搜