
你好
1程序的运行结果是:1,-2
2解释每一步的运行过程:
#include <stdioh>
void main()
{
int y, a ;
y=2, a=1;
while (y--!=-1)
{
do{
a=y ;
a++ ;
} while(y--);
}
printf("%d,%d\n",a,y);
}
从y=2,a=1开始哈
(首先我们要知道后自减y--型的返回值是y自减前的值 例如y=2 y--就返回2)
进入while循环
y--返回2 不等于-1 (此时y=1)
于是循环继续进入do while循环
执行a=y;a++后
a=2 y=1
y--返回1 是非零 于是do while循环继续进行 (此时y=0)
执行a=y;a++后
a=1 y=0
y--返回0 于是do while循环终止 (此时y=-1)
再判断while的循环条件: y--返回-1 于是while循环终止 此时y=-2
(讲的比较多 希望楼主能理解了)
这里最主要的问题在于对while (a[i++]!='\0') b[i]=a[i];这句话没有理解清楚。strcat(a,b)所以:a="ABLMNP"; b=“LMNP”
while (a[i++]!='\0') i=0表达式i++=0判断a[0]!='\0'后,i自增1,即i=1;所以进入循环体执行b[i]=a[i]时,i=1的,b[1]=a[1]='B';b[0]的值并未改变,b[0]=L;
因此将a[i]后面的值赋给b[i],所以结束的时候b="LBLMNP"。//
while (a[i]!='\0')
{
b[i]=a[i];
i++;
}
改成这样就是"ABLMNP"
当i==0时,y[x[i]++]即y[x[0]]++,即y[2]++
当i==1时,y[x[i]++]即y[x[1]]++,即y[3]++
当i==2时,y[x[i]++]即y[x[2]]++,即y[0]++
所以数组y实际是对数组x元素的计数,所以y[3]存储的实际就是x数组中3出现的次数,显然结果是4
答案是C
因为当i=4时 第一个for循环 j=1到j<=4 打印四个# 第二个for循环 j=1到j<0 不打印
当i=3时 第一个for循环 j=1到j<=3 打印三个# 第二个for循环 j=1到j<1 不打印
当i=2时 第一个for循环 j=1到j<=2 打印两个# 第二个for循环 j=1到j<2 打印一个
当i=1时 第一个for循环 j=1到j<=1 打印一个# 第二个for循环 j=1到j<3 打印两个
i从1到5循环,对应的b初始为1,0,1,0,1。
b-->=0是先取b的值判断是否>=0,再将b减1。
所以当b=0时,b-->=0成立,之后b=-1,b>=0不成立,但b--还会执行,b变成-2。
所以当b=0时,while(b-->=0)会执行一次,当b=1时,会执行两次。所以k++总共执行了2+1+2+1+2=8次。
以上就是关于c语言中,下面程序的运行结果是全部的内容,包括:c语言中,下面程序的运行结果是、下面程序的运行结果是。、下面程序运行结果是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)