C语言题目 1.下面程序的运行结果是( )

#include<stdio.h>
int main( )
{ int y=2,a=1;
while(y- -!=-1)
{ do{a * =y; a++;} while(y- -); }
printf(“%d,%d,a,y);
return 0
}

其中有不少小的错误,作为程序它是不能运行的。

#include<stdio.h>
int main( )
{ int y=2,a=1;
while(y--!=-1)
{ do{a *=y; a++;} while(y--); }
printf("%d,%d",a,y);
return 0;
}

运行后的输出是:

1,-2

分析运行过程:

y=2,a=1;

判断,为真,y变为1

进入do循环:

a=1*1=1; a++变为2

内循环判断y--为真,y变为0;

再次内循环:

a=2*0=0; a++变为1

内循环判断y--为假,y变为-1;

外循环判断为假,y变为-2;

所以,最后的输出是1,-2

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-04-01
C语言中 -1<=i<1 这样的语句是无法达到你要的效果的,对于这个句子,C语言是这样处理的: (-1<=i)<1 (1) 这样的话,-1<=i为真,所以这个表达式的值为1,也就是说(1)这个表达式等价于(1<1)然后这个式子为假,所以不会进入该循环,所以i没有发生变化,也不会输出i,所以答案为-1 如果for循环写成这样:for (a=1,i=-1;-1<=i&&i<1;i++) 那么题主你的答案就对了。追问

什么东西啊!深刻表示不采纳

本回答被网友采纳
第2个回答  2019-04-02

#include<stdio.h>
int main(void)

     int y=2,a=1;
     while(y--!=-1)
   { 
    do{a*=y; a++;} 
    while(y--); 
    }

printf("%d,%d",a,y);
 system("pause");
return 0;
}

追问

我要的是过程

追答

你应该是不懂 while语句和do while 语句的用法。
++y 和 --y都是在 先进行自加或自减后,在进入while循环中判断。
y++和 y--是先进行while循环中判断后,在对y的值进行加减。
后面是我的思路你大概看下
while语句中的内容如果成立了,则执行while循环,不成立结束while循环,。y=2,一开始while不等于-1.所以循环,y自减为1.执行后面语句。a=1x1=1; ++后a=2。 y不等于0,所以要循环,y自减为0.后执行a=1x0=0.a自加为1.因为y=0所以不执行do{}里面的循环,y自减后y=-1.在执行whiel再循环重新判断-1等于-1所以不循环,y自减为-2.
最后输出a=1,y=-2

第3个回答  2019-04-03

第4个回答  2019-04-02
运行结果是:1,-2追问

为什么,过程可以写一下么,或者我做不出来的关键步骤,麻烦您了

你答案对了

相似回答