循环结构中某语句的执行次数
在下述程序中,判断s>j共执行的次数是()次#include<stdio.h>
void main()
{
int i=0,j=10,k=2,s=0;
for(;;)
{
i+=k;
if(s>j)
{
printf("%d",s);
break;
}
s+=i;
}
} 去运行代码啊,用脑袋去判断,多烧脑啊 执行一次啊,只要有执行机会,一次就break了 s>j共执行4次,当执行第四次的时候,s=12>j,然后打印s,退出循环 本帖最后由 jackz007 于 2022-8-18 12:52 编辑
一共4次
第1次: s = 0,i = 2
第2次: s = 2,i = 4
第3次: s = 6,i = 6
第4次: s = 12 ,i = 8
jackz007 发表于 2022-8-18 12:51
一共4次
我也觉得是四次,但是答案是六次{:10_243:} lingli.wu 发表于 2022-8-18 12:38
s>j共执行4次,当执行第四次的时候,s=12>j,然后打印s,退出循环
可是答案给的是六次 本帖最后由 jackz007 于 2022-8-19 11:52 编辑
2220201979 发表于 2022-8-19 10:56
我也觉得是四次,但是答案是六次
什么,答案是六次?毫无疑问,那是错误答案!
其实,只要编译、运行一下下面的代码,是非曲直立判!!!
#include<stdio.h>
int main(void)
{
int i , k , s ;
for(i = k = s = 0 ;;) {
i += 2 ;
k ++ ;
if(s > 10) break ;
s += i ;
}
printf("s = %d , k = %d\n" , s , k) ;
}
编译、运行实况:
D:\\C>g++ -o x x.c
D:\\C>x
s = 12 , k = 4
D:\\C> 2220201979 发表于 2022-8-19 11:05
可是答案给的是六次
那答案就是错的,我把你的代码加上printf语句,把每次的循环都打印出来,你看
#include<stdio.h>
int main()
{
int i=0,j=10,k=2,s=0;
int a=0;
for(;;)
{
a++;
printf("第 %d 次循环:\n",a);
i=i+k;
printf("i = %d\n",i);
printf("s = %d\n",s);
printf("j = %d\n",j);
if(s>j)
{
printf("%d",s);
break;
}
s=s+i;
printf("s = %d\n",s);
}
return 0;
}
运行出来的结果是这样的
第 1 次循环:
i = 2
s = 0
j = 10
s = 2
第 2 次循环:
i = 4
s = 2
j = 10
s = 6
第 3 次循环:
i = 6
s = 6
j = 10
s = 12
第 4 次循环:
i = 8
s = 12
j = 10
12
--------------------------------
Process exited after 0.01986 seconds with return value 0
请按任意键继续. . .
页:
[1]