下面程序段的执行结果是

下面程序段的执行结果是,第1张

又是发了两个贴子…… -_-!

prt(a,b) 是“宏”,不是函数。

因为在编译前,是要进行宏替换的,因此,我们先看看宏替换之后的代码:

(为减少内容,只看if语句那儿)

//先看完成宏替换后的代码:

if(x>y) if(!x) y=x;

else if(!y) x=y;

//这样仍然有点“迷惑人”

//那再给它加上花括号,流程就清晰了:

if(x>y) {

   if(!x) y=x;

   else {if(!y) x=y;}

}

//看上面的这段代码,运行结果很明晰了吧!

因为最初 x=1 ,而 y=0

因此,第一个if(x>y)为真,

然后if(!x) 为假,执行了 else语句块。

在else的语句块中,if(!y) 为真,就执行了x = y

最终结果,就是x和y的值都为 0 了。

你好

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

(讲的比较多 希望楼主能理解了)

a=4,b=5,c=8

过程

1 执行a<3,结构为0

2 a++

3因为a<3不成立,所以c--!=0不执行

4分支条件为假b=b+1不执行

所以得到上述结果

改下程序 #include <stdioh>

int main()

{

int k=0;

char c='A';

do

{

switch(c++)

{

case 'A': k++; printf("k={%d}\n", k); break;

case 'B': k--; printf("k=[%d]\n", k);

case 'C': k+=2; printf("k={%d}\n", k); break;

case 'D': k=k%2; printf("k=[%d]\n", k);continue;

case 'E': k=k10; printf("k={%d}\n", k); break;

default: k=k/3; printf("k=[%d]\n", k);

}

k++; printf("k=(%d)\t", k);

}while(c<'G');

printf("k=%d\n", k);

}

编译下 看输出

先执行 switch 语句 k++; k=1;

在执行 下面的k++ ; k=2;

然后回到switch k-- ; k=1;

由于没有 break; 忽略了 case 标号 继续 k=3;

执行下面的语句 k++ ; k=4;

在执行 语句 k+=2; k=6;

执行下面的语句 k++; k=7;

执行语句 k%=2; k=1;

由于是 continue; 语句 中断后继续执行

k=10; k=10;

执行下面的语句k++ ; k=11;

执行语句 k/=3; 隐式类型转换 先提升为double k=3666 后又转为int k=3;

执行 k++; k=4;

所以答案为4;

这里最主要的问题在于对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"

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

#include<stdioh>

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=11=1; a++变为2

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

再次内循环:

a=20=0; a++变为1

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

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

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

以上就是关于下面程序段的执行结果是全部的内容,包括:下面程序段的执行结果是、c语言中,下面程序的运行结果是、下面程序的运行结果为_______________.等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9294863.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存