![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
c语言中,程序段分析
1、已经下列程序段:inty=1;while(y--){printf("y=%d\n",y);}则输出的结果为:(分析,文字表述)2、有下列程序段:intk=0;whil...
1、已经下列程序段:int y=1;while (y--){printf ("y=%d\n",y);}则输出的结果为:(分析,文字表述)2、有下列程序段:int k=0;while (k=1){ k++;}while循环执行的次数是:请说明理由;
展开
展开全部
同学,第一个答案确是是"y=0"原因如下,首先我们要说自增和自减运算符“++”和“--”,如果该运算符的位置在操作数之前,则操作数在进行任何计算之前就已经发生改变,如果运算符在操作数后面,则操作数在完成表达式的计算之后才发生改变,例如int
a=5,b=8,c;c=a++*b;
//"++"在操作数a后面,先计算a*b=40,赋值给c,然后a++,a值为6,c的值为40c=++a*b;
//"++"在操作数a前面,先a++,a=7,再a*b,c=56然后我们来看你给的程序,因为是y--,"--"在y后面,则先判断while的条件,此时y=1,即true,为真,然后y--,y=0,然后输出y:y=0;然后再判断while,因为此时y=0,为假,跳出循环,结束。要注意顺序,先判断whlie,然后y--,若while条件为真,则执行while的语句。
若改成"--y"的话,则先计算"--y",y=0,再判断while的条件,此时y=0,即false,为假,直接跳出循环,即什么都不做,结束。
第二题,你要注意的是while的条件不是"k==1"而是"k=1",不是一个判断语句,而是一个赋值语句。即while的条件永远都是“k被赋值为1,然后k作为条件”进行判断,此时k是1,即true,为真会永远进行下去。
a=5,b=8,c;c=a++*b;
//"++"在操作数a后面,先计算a*b=40,赋值给c,然后a++,a值为6,c的值为40c=++a*b;
//"++"在操作数a前面,先a++,a=7,再a*b,c=56然后我们来看你给的程序,因为是y--,"--"在y后面,则先判断while的条件,此时y=1,即true,为真,然后y--,y=0,然后输出y:y=0;然后再判断while,因为此时y=0,为假,跳出循环,结束。要注意顺序,先判断whlie,然后y--,若while条件为真,则执行while的语句。
若改成"--y"的话,则先计算"--y",y=0,再判断while的条件,此时y=0,即false,为假,直接跳出循环,即什么都不做,结束。
第二题,你要注意的是while的条件不是"k==1"而是"k=1",不是一个判断语句,而是一个赋值语句。即while的条件永远都是“k被赋值为1,然后k作为条件”进行判断,此时k是1,即true,为真会永远进行下去。
展开全部
1,
while循环题
输出的结果为1
当执行到while语句时,Y的值为1,此时并不执行Y--,因为--在后为后置运算,输出1,执行y--,y的值为0,跳出循环,程序结束。结果为1.2.,
循环次数为0
因为while循环语句中的K++是当K=1为真值时才执行的,而K被赋值为0此时不等于1,k=1为假,循环体并不循环,所以次数为0.
while循环题
输出的结果为1
当执行到while语句时,Y的值为1,此时并不执行Y--,因为--在后为后置运算,输出1,执行y--,y的值为0,跳出循环,程序结束。结果为1.2.,
循环次数为0
因为while循环语句中的K++是当K=1为真值时才执行的,而K被赋值为0此时不等于1,k=1为假,循环体并不循环,所以次数为0.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int
k=0;while
(k=1){
k++;}while循环执行的次数是0理由:while
循环是先做判断后在执行while快里面的语句的
k=0;while
(k=1){
k++;}while循环执行的次数是0理由:while
循环是先做判断后在执行while快里面的语句的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询