计算机二级循环储存,这个循环怎么解释啊??计算机二级

这个循环怎么解释啊??计算机二级

答案:6  信息版本:手机版

解决时间 2019-10-01 19:57

已解决

2019-10-01 16:29

有以下程序段

int k,j,s;

for(k=2;k<6;k++,k++)

{s=1;

for(j=k;j<6;j++)s+=j:

}

printf("%d";s);

请问这个循环是怎么计算的?为什么答案是10,而不是24,请解释一下循环过程

最佳答案

2019-10-01 16:40

for(k=2;k<6;k++,k++) //k只循环了两次即k=2和k=4

{s=1; //每次循环s的初始值都是1

for(j=k;j<6;j++)s+=j; //j循环了6-k次每次循环s的值都加上j

}

printf("%d",s); //将s的值打印出来

当k=2时s=1 j=2,s=2+1=3 j=3,s=3+3=6 j=4,s=6+4=10 j=5,s=10+5=15

当k=4时s=1 j=4,s=4+1=5 j=5,s=5+5=10

所以最后s的值就是10

全部回答

1楼

2019-10-01 23:25

k之前的循环式没必要的,因为下面设置s总从1开始,真正有用的是k等于4,因为连续两个k++超过6,所以该退出,现在看k=4时,j可以取4和5,而s=1,s的值就是1+4+5,所以等于10.

2楼

2019-10-01 21:52

修改的话将s=1放在for(k=2;k<6;k++,k++)上面即可。

3楼

2019-10-01 20:25

for(k=2;k<6;k++,k++)进行一次循环之后,k=4;

s=1;

for(j=k;j<6;j++)s+=j:即

s=1;

for(j=4;j<6;j++)

{

s+=j:

}

s总共加了2次,即1+4+5 = 10;

4楼

2019-10-01 19:01

2',在abcll表中可以看到整数0所对应的ascll码是48,所以循环还是执行的。 2.当然是v[i]++;结束才可以,要是循环要是成立的话:i=2,在ascll表中可以看到null对应的ascll码是0、、:i=0,要是字符数组:char *s="12134211";1'.for(k=0,由于后面没有break,你要知道字符数组的结标志是‘\0’; 代码: #include改为char *s=&quot! 1: switch(s[k]) {case':i=2; case' } 结果;:i=3; } v[i]++;:i=1; case'3',v[0],v[1];:i=3;; case' case'2' case'4';,同样还得执行case',0;s[k];k++)循环结束的表示是s[k]=='的时候;:i=0; case',0},k,i; for(k=0;s[k],那么v[i]++;自加的是数组v的4个元素 :i=3;2':i=1;; main() {char *s="12134011",v[k]);12130211&quot,即最后i的值是3,那么v[i]++; int v[4]={0;:i=3;} 要是s[k]=':i=2; case',即null,执行的是{}内的所有语句 还有就是关于break的用法,要是没有break:看看你的程序;4'由于后面没有break;k++)printf("%d ",0:i=0; #include<:i case for switch>的话,会执行case'1',v[2]还是0,会执行case'自加的是数组v的4个元素, 当s[k]=',那么还得执行case'2',这才是使循环结束的标志!!

5楼

2019-10-01 17:35

你好!!!

1.for(k=0;s[k];k++)循环结束的表示是s[k]=='/0',你要知道字符数组的结标志是‘\0’,即NULL,在ascll表中可以看到null对应的ASCLL码是0,这才是使循环结束的标志,要是字符数组:char *s="12134211";改为char *s="12130211";程序还是循环到最后,读到字符0的时候,在ABCLL表中可以看到整数0所对应的ascll码是48,所以循环还是执行的。

2.当然是v[i]++;结束才可以,要是循环要是成立的话,执行的是{}内的所有语句

还有就是关于break的用法,要是没有break:看看你的程序:

switch(s[k])

{case'1':i=0;

case'2':i=1;

case'3':i=2;

case'4':i=3;}

要是s[k]='1'的话,会执行case'1':i=0;由于后面没有break,那么还得执行case'2':i=1;,同样还得执行case'3':i=2;

case'4':i=3;,即最后i的值是3,那么v[i]++;自加的是数组v的4个元素,

当s[k]='2'的时候,会执行case'2':i=1;,由于后面没有break,那么还得执行同样还得执行case'3':i=2;

case'4':i=3;,即最后i的值还是是3,那么v[i]++;自加的是数组v的4个元素

、、、、

由此可以每次循环后i的值都是3,那么自加的始终是v[3]的值,v[0],v[1],v[2]还是0;

代码:

#include

#include

main()

{char *s="12134011";

int v[4]={0,0,0,0},k,i;

for(k=0;s[k];k++)

{

switch(s[k])

{case'1':i=0;

case'2':i=1;

case'3':i=2;

case'4':i=3;

}

v[i]++;

}

for(k=0;k<4;k++)printf("%d ",v[k]);

}

结果:0 0 0 8 Press any key to continue

我要举报

如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!

大家都在看

推荐资讯

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值