C语言题目 请写出详细解题过程。。有追赏!

来源:百度知道 编辑:UC知道 时间:2024/06/19 18:18:11
下列程序的输出结果是_____
void fun(int *n)
{
while((*n)--);
printf("%d",++( *n ));
}
main()
{ int a=100;
fun(&a);
}

下列程序的输出结果是__0___

原因如下:
在main函数中,将&a伪作参数传递给fun(int *n) ,
所以指针n指向了a的地址,*n的值即为a的值,也就是100

在fun函数中,
while((*n)--);
注意,这个while语句后面有一个;分号,所以这一个while循环的作用是:
将*n的值循环递减,直到(*n)--的值为0。
又由于(*n)--是先带入,再处理--,
所以退出循环后,*n的值变为了-1。

再执行printf("%d",++( *n )); 这一句,
注意,这里++(*n)是先进行++处理,再带入,
所以是先将*n加一变为0后,再输出。

所以输出结果是0

void fun(int *n) // 定义一个函数fun,整型指针n
{
while((*n)--); //当n的值不为0时,执行语句,注意:但此处是空语句.
printf("%d",++( *n ));//输出n的自加1的值。只执行一次
}
main()
{ int a=100; //定义咦个整型变量a
fun(&a); //调用函数fun
}

就大概写下注释,要结果,可自己编译运行。

一开始没瞅到那while后面的;,搞的理解错了,郁闷,
结果应该为0