永发信息网

while(--k)s+=k 这个语句怎么理解啊

答案:4  悬赏:40  手机版
解决时间 2021-02-17 03:01
while(--k)s+=k 这个语句怎么理解啊
最佳答案
翻译成最一般的语法就是
while(k=k-1) //k每次先减1,减1后,如果k不为0,则执行{ }里的语句
{
s = s+k;
}

最开始k=4,s=0
第一轮:
--k → k=3 不为0 , 即条件为真,
所以执行循环体里的语句s+=k,即s = s+k; 即s = 0+3 ,所以 s = 3;
第二轮:
--k → k=2 不为0 , 即条件为真,
所以执行循环体里的语句s+=k,即s = s+k; 即s = 3+2 ,所以 s = 5;
第三轮:
--k → k=1 不为0 , 即条件为真,
所以执行循环体里的语句s+=k,即s = s+k; 即s = 5+1 ,所以 s = 6;
第四轮:
--k → k=0 为0 , 即条件为假,
不再进入循环体, 跳出while循环,此循环到此结束.

此循环结束后各个变量的值为
k=0,s=6;
全部回答
题目搞错了,因子不包括数本身.包括了数本身的话,和肯定大于该数了啊.
#include "stdio.h"
void main()
{
int n;
scanf("%d",&n);
for(int i=2;i<=n;i++)
{
int s=0;
for(int j=1;j<=i/2;j++)
{
if(i%j==0) s+=j;
}
if(s==i) printf("%d ",i);
}
}
--k的意思是先将k此时的值自减1后再赋值给k;
while(--k)s+=k 即:先将k自减1,再判断此时k的值是否为0,若k的值大于0,则执行s+=k即
s=s+k这一语句;然后k再自减1,再判断此时k的值是否为0,若k的值大于0,则继续执行s+=k;……此为循环,直至某次执行完s+=k后k的值为1,即k再自减1后值为0了,则不再执行s+=k,循环结束,跳出循环。
此循环共执行(k-1)次
当条件不为0的时候就为真 执行循环
第一次循环 k=3 s=3
第二次循环 k=2 s=3+2=5
第三次循环 k=1 s=6
第四次循环 k=0,循环结束
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
梦见有人告诉我从零开始
索泰 geforce gtx1080-8gd5x 玩家力量至尊oc
下列各句中加粗的熟语使用有误的一项是A.这位
删除朋友再加该如何解释
湖南益阳现在生三胎要罚款吗?
济宁任城区护照在哪办理?
银川ktv荤场哪个性价比高?
剑玄录的故事概述
单选题符合下列哪种情况时,非零的三个数a、b
刚满12岁的儿子,遗会精吗
下列亚洲国家中,人口没有超过1亿的是A.中国B
二o一五山西中考作文
怎么把1/3倍频程下的声压级转化成倍频程
水煮梭边鱼怎么做?都放什么调料
姊 这个字怎么打出来
推荐资讯
人应该有所畏惧 辩论
帮忙翻译一下日本地址成英文
怎样用his和his造一个一般疑问句
日文天洒一大呦啥意思
1998年的春晚是怎样介绍功夫令的
45×47等于几列竖字
zn390t是什么意思
SPSS中的显著性差异到底有什么用?
我是坚持自己的选择,还是半路投降放弃
谁知这个是谁
宋智孝退出running man为什么
属狗之人可以带龙挂件吗
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?