c语言问题,不理解,求高手指点,例子如下:
#include<stdio.h>main(){intj;inta[]={1,3,5,7,9,11,13,15},*p=a+5;for(j=3;j;j--){switch...
#include<stdio.h>
main()
{
int j;
int a[]={1,3,5,7,9,11,13,15},*p=a+5;
for(j=3;j;j--)
{
switch(j)
{
case 1:
case 2: printf("%d",*p++);break;
case 3: printf("%d",*(--p));
}
}
}
不知道怎么算结果? 展开
main()
{
int j;
int a[]={1,3,5,7,9,11,13,15},*p=a+5;
for(j=3;j;j--)
{
switch(j)
{
case 1:
case 2: printf("%d",*p++);break;
case 3: printf("%d",*(--p));
}
}
}
不知道怎么算结果? 展开
5个回答
展开全部
这个不难理解啊。
for(j = 3; j ; j--) //开始的时候j=3 每运行一次 j-- 直到j=0为假。所以运行三次。
对应分别执行:case 3: case2:case1:的语句,然后i=0;退出for循环。
第一次:case 3 打印*(--p); 开始p指向数组a的第五个位置即9 现在减一个位置不就是7了吗
第二次*p++就是9了。
第三次 case1:由于没有 break语句,会再次执行 case2: 再*p++ 输出11.
for(j = 3; j ; j--) //开始的时候j=3 每运行一次 j-- 直到j=0为假。所以运行三次。
对应分别执行:case 3: case2:case1:的语句,然后i=0;退出for循环。
第一次:case 3 打印*(--p); 开始p指向数组a的第五个位置即9 现在减一个位置不就是7了吗
第二次*p++就是9了。
第三次 case1:由于没有 break语句,会再次执行 case2: 再*p++ 输出11.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
结果:
9911
第一次:case3: 输出完再减所以是“9”,减完是7.
第二次:case2: 7加完再输出是“9”,加完是9
第三次:case1自动跳case2:9加完后输出是“11”,加完是11.
result:9911
9911
第一次:case3: 输出完再减所以是“9”,减完是7.
第二次:case2: 7加完再输出是“9”,加完是9
第三次:case1自动跳case2:9加完后输出是“11”,加完是11.
result:9911
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一次:case 3 打印*(--p); 开始p指向数组a的下标为5的元素为11 p--为9第二次*p++ 是先输出*p的值之後在做p++动作,所以本次输出仍然为9,但是输出后p++。第三次 case1:由于没有 break语句,会再次执行 case2: 再*p++ 输出11,之后p++.
所以结果是9911
所以结果是9911
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一次循环:9
第二次循环:10
第三次循环:什么也不输出
第二次循环:10
第三次循环:什么也不输出
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询