2道c语言题~求大神不吝赐教。
发布网友
发布时间:2024-04-27 04:59
我来回答
共2个回答
热心网友
时间:2024-05-17 00:14
1.
int f(int n)
{static int s=1;
while(n) //一样的
{
s=s*n;
n--;
}
return (s);
}
第一次i=f(3)
n=3,s=s * n = 1 * 3 = 3
n=2,s=s * n = 3 * 2 = 6
n=1,s=s * n = 6 * 1 = 6
返回6
i=6
第二次j=f(3)
由于s是static变量,初始化一次,第一次运行时结束后s=6,运行j=f(3)时s初始值为6
n=3,s=s * n = 6 * 3 = 18
n=2,s=s * n = 18 * 2 = 36
n=1,s=s * n = 36 * 1 = 36
返回36
j=36
2.
printf("%s",chp);会打印从chp开始直到遇到'\0'结束符
for(chp=b; *chp; chp+=2) printf("%s",chp);
第一次chp=b
printf("%s",chp);打印出ABCD
之后chp=b+2,指向“ABCD”中的‘C’,
printf("%s",chp);打印出CD
之后chp=b+2,指向“ABCD”后面的'\0'
循环跳出
最终打印:ABCDCD结束
热心网友
时间:2024-05-17 00:15
1.因为static int s=1;是静态变量,会保留上一次的值.
2.第一次输出ABCD,第2次再输出CD