几道C语言的问题

下边几道题我不知道正确答案是怎么得出来的,麻烦大家写一下详细过程,谢谢!1.有以下程序段,其中x,y为整型变量,程序的输出结果是()(正确答案:A)for(x=0,y=0... 下边几道题我不知道正确答案是怎么得出来的,麻烦大家写一下详细过程,谢谢!
1.有以下程序段,其中x,y为整型变量,程序的输出结果是()(正确答案:A)
for(x=0,y=0;(x<=1)&&(y=1);x++,y--);
printf("x=%d,y=%d",x,y);
A)x=2,y=0 B)x=1,y=0 c)x=1,y=1 D)x=0,y=0
2.设j为int型变量,则下面for循环语句的执行结果是()(正确答案:B)
for(j=10;j>3;j--)
{ if(j%3)j--;--j;--j;
printf("%d ",j);}
A)6 3 B)7 4 C)6 2 D)7 3
3.以下程序的输出结果是____(正确答案:5)
main()
{ int s,i;
for(s=0,i=1;i<3;i++,s+=i);
printf("%d\n",s);
}
4.下面程序段的运行结果是____(正确答案:-1)
for(a=1,i=-1;-1<=i<1; i++)
{a++;printf("%2d",a);}
printf("%2d",i);
5.下面程序的运行结果是_____(正确答案:*
#)
main()
{ int i
for(i=1;i<=5;i++)
switch (i%2)
{ case 0: i++; printf("#");break;
case 1: i+=2; printf("*");
default: printf("\n");} }
第5题的答案格式显示的不对,正确的格式如下图所示:
展开
 我来答
chen_huiwei
2010-07-30 · TA获得超过152个赞
知道小有建树答主
回答量:276
采纳率:77%
帮助的人:67.9万
展开全部
1、逻辑与&&的问题。右边y=1是赋值函数,永远为真,所以左边x<=1为真时,循环继续。所以当x=2时就不满足了。此时y=1经过y--后就为0了。所以A
2、这一题很简单,j=10进入循环体,满足10%3为真,所以会进行3次--后j=7,输出7,然后进行for循环的j--,此时j=6,然后满足j>3,继续循环,满足7%3为真,再3次--后j=4,再运算for循环里的j--后j=3,不满足j>3.主要是要搞懂for循环是在循环体过后才进行小括号里的j--就很简单了。
3、搞懂小括号3个语句在什么时候执行就很简单了。i=1时,满足条件,i++后i=2,s+=i,s=2;i=2时,满足,i++后i=3,s+=i后s=5;
4、纯粹循环问题啊。经过前2题解说该明白了。举一反三吧。
5、跟第2题类似啊
crazynlyn
2010-07-30 · TA获得超过373个赞
知道小有建树答主
回答量:92
采纳率:0%
帮助的人:127万
展开全部
1. (y=1)是赋值!永远为1,每次循环后y--变为0;但(x<=1)如果不为1,&&后面的(y=1)不会执行因此循环到第三次时x=2,y=0跳出循环。
2. 第一次循环j=10,因此j%3(隐含!=0)为1,在循环体内减三次,为7;打印后进入下一个循环前又减一次,为6;第二次循环时j%3为0,在循环体内只减两次,所以为4.
3. 因为每次循环尾先i++再s+=i,因此实际上是(1+1) + (2+1) = 5
4. 因为循环进行条件是-1<=i<1,可以看做(-1<=i)<1,前一个因为i=-1所以为1,因此循环直接跳出,打印i=-1.
5. 第一个循环i=1,+=2后打印"*"后没有break,因此又打了一个换行;然后循环结束前i++变为4,再次进入循环进入case 0,++然后打印"#" break;此时i已经为5,所以下次循环前i为6,跳出。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kirayamato201
2010-07-30 · TA获得超过365个赞
知道小有建树答主
回答量:251
采纳率:0%
帮助的人:270万
展开全部
第一个
循环过程
第一次循环x=0 y=1 自加自减后x=1 y=0
第二次循环x=1,y=0 自加自减后x=2,y=0
第三次 不满足条件跳出循环 注意 每次到了判断条件的时候Y都会被复制为1

第二个
第一次循环时 j=10 10 除3得余数1 自减3次 为7 输出7
第二次循环时 j=6 由于不满足if条件 只自减2次 为4 输出
第三次 j=3 不满足条件 然后 退出循环

第三个
第一次循环 s=0,i=1
第二次循环 s=3,i=2;
第三次循环 s=5,i=3,不满足条件 退出;
所以s为5 循环里面有一个空一句
第四个

(-1<=i)<1 -1《=-1 为真 而1《1为假 跳出循环 输出-1
第五个就是
第一次循环 i=1 求余为1 所以输出* 由于标签1没有跳出语句 会输出换行符
第二次 i=4求余为0 输出# 跳出循环 i=5 进入下次循环 i=6
第三次 不满足条件退出
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友6d4bc1b
2010-07-30 · 超过30用户采纳过TA的回答
知道答主
回答量:69
采纳率:0%
帮助的人:95.6万
展开全部
授人以鱼,不如授人以渔

初学C语言,要静下心来,耐心一点

循环的问题,就是去想象计算机是怎么运行的

example 1
for(x=0,y=0;(x<=1)&&(y=1);x++,y--);
printf("x=%d,y=%d",x,y);

循环第一次 x=0 y=0 满足条件(x<=1)&&(y=1)
printf() x=0 y=1
x++;y--; x=1 y=0
循环第二次 x=1 y=0 满足条件(x<=1)&&(y=1)
printf() x=1 y=1
x++;y--; x=2 y=0
循环第三次 x=2 y=0 不满足其条件(x<=1)&&(y=1)
循环推出

所以答案是 x=2 y=0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chinazhouguowu
2010-07-30
知道答主
回答量:20
采纳率:0%
帮助的人:8.6万
展开全部
for(x=0,y=0;(x<=1)&&(y=1);x++,y--);
y=1 条件恒成立,为真
相当于下面这样
for(x=0;(x<=1)&&(true);x++);

y=1
y--
所以等于0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式