while(--k)s+=k 这个语句怎么理解啊
答案:4 悬赏:40 手机版
解决时间 2021-02-17 03:01
- 提问者网友:捧腹剧
- 2021-02-16 03:21
while(--k)s+=k 这个语句怎么理解啊
最佳答案
- 五星知识达人网友:舍身薄凉客
- 2021-02-16 03:51
翻译成最一般的语法就是
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;
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;
全部回答
- 1楼网友:末日狂欢
- 2021-02-16 07:08
题目搞错了,因子不包括数本身.包括了数本身的话,和肯定大于该数了啊.
#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);
}
}
#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);
}
}
- 2楼网友:梦中风几里
- 2021-02-16 05:38
--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)次
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)次
- 3楼网友:酒醒三更
- 2021-02-16 03:59
当条件不为0的时候就为真 执行循环
第一次循环 k=3 s=3
第二次循环 k=2 s=3+2=5
第三次循环 k=1 s=6
第四次循环 k=0,循环结束
第一次循环 k=3 s=3
第二次循环 k=2 s=3+2=5
第三次循环 k=1 s=6
第四次循环 k=0,循环结束
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯