有以下程序  #include <stdio.h>  void fun(int n)  { static int k=0;   if(n <0){printf("-");n=﹣n;}   k+=n%10;printf("%d,",k);  

admin2022-04-01  21

问题 有以下程序
 #include <stdio.h>
 void fun(int n)
 {  static int k=0;
    if(n <0){printf("-");n=﹣n;}
    k+=n%10;printf("%d,",k);
    if(n/10)fun(n/10);
 }
 main()
 {  int x=﹣12:
    fun(x);printf("\n");
 }
 程序运行后的输出结果是(          )。

选项 A、﹣2,3,
B、﹣1,﹣2,
C、﹣2,﹣3,
D、﹣2,1

答案A

解析 fun()函数使用了静态变量,静态变量只在声明时初始化一次。首先实参的数值是﹣12,if判断后输出负号,并将重新赋值n=12,计算k+=n%10也就是k+=12%10=2,因此输出2;接着用n除以10,结果为1,递归调用fun()函数;第二次调用fun(),此时n=1,k=2,计算k+=n%10也就是k+=1%10,计算机后k的值为3,打印3。故最后打印结果为﹣2,3,。故答案为A选项。
转载请注明原文地址:https://kaotiyun.com/show/h1kp777K
0

最新回复(0)