又是发了两个贴子…… -_-!
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语言中,下面程序的运行结果是、下面程序的运行结果为_______________.等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)