红岩中江姐的主要事迹:C语言方面的问题

来源:百度文库 编辑:高考问答 时间:2024/05/08 16:46:05
5下面的程序输出的结果是——————
main()
{int n=0;
while(n++<=1)
printf ("%d\t",n);
printf("%d\n",n);}
答案是1 2 3 怎么得出来的呢
5以下的程序段是
k=-1
do
{x=x*x;} while(!x);
答案是“只是执行一次”,是不是“ x不等于 0呢?为什么呢?

n的初始值是0,进入while循环,n++<=1这个条件在判断时先以n的当前值进行判断,判断后n自增1。

第一次循环时因为n=0满足条件所以进入循环printf ("%d\t",n);输出1(因为输出时N是已经经过自增的)。

第二次循环时因为n=1满足条件所以进入循环printf ("%d\t",n);输出2。

第三次循环时因为n=2不满足循环条件所以推出循环直接执行下面的printf("%d\n",n);输出3(即使未经过循环,但判断表达式已经执行,所以n仍然自增)。

第二段程序上面的k=-1是不是笔误?应该是x=-1吧?
while(!x)中的(!x)等价于x为非真,也就是x=0时执行循环。所以程序在一开始进入do-while循环时先执行一次循环体x=x*x;这时x的值为1,不满足循环条件,退出循环,所以答案是“只是执行一次”。

k=-1?还是x?若是X 经过X=X*X语句以后变量X中的值为1 while(!1)跳出循环

不是的