2220201979 发表于 2022-8-18 11:52:55

循环结构中某语句的执行次数

在下述程序中,判断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;
        }
}

wp231957 发表于 2022-8-18 12:03:50

去运行代码啊,用脑袋去判断,多烧脑啊

wp231957 发表于 2022-8-18 12:05:57

执行一次啊,只要有执行机会,一次就break了

lingli.wu 发表于 2022-8-18 12:38:41

s>j共执行4次,当执行第四次的时候,s=12>j,然后打印s,退出循环

jackz007 发表于 2022-8-18 12:51:19

本帖最后由 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

2220201979 发表于 2022-8-19 10:56:00

jackz007 发表于 2022-8-18 12:51
一共4次

我也觉得是四次,但是答案是六次{:10_243:}

2220201979 发表于 2022-8-19 11:05:03

lingli.wu 发表于 2022-8-18 12:38
s>j共执行4次,当执行第四次的时候,s=12>j,然后打印s,退出循环

可是答案给的是六次

jackz007 发表于 2022-8-19 11:10:13

本帖最后由 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>

lingli.wu 发表于 2022-8-19 12:59:51

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]
查看完整版本: 循环结构中某语句的执行次数