这是一个关于C语言的if结构和for循环问题

源码导航 论文问答 1

我感觉 for循环就是由if选择结构和顺序结构组成的。比如

for(int i=0;i<10;i++)

这个可以改写成

int i=0;
if(i<10)
{操作
i++}

把这个封装成一个函数,执行多次就好了。循环结构应该有,但是,为什么说C语言结构三大部分有循环结构呢?我想,循环结构应该有他自己特别厉害的地方,和顺序结构选择结构完全不同的地方的。就是不清楚不同的地方在哪里。希望大佬们帮忙解疑

回复

共2条回复 我来回复
  • 源码工厂
    这个人很懒,什么都没有留下~
    评论

    光if语句构成不了循环。

    把这个封装成一个函数,执行多次就好了,那么你怎么执行多次?两种写法:

    • 一个是直接写n行语句,那么问题在于,你的程序不能重复比你写的行多一次。
    • 一个还是得用循环。循环的本质是一个向前的跳转:
    sum = 0;
    i = 0;
    a:
    i = i + 1;
    sum = sum + i;
    if (i != 101) goto a;
    printf("%d", sum);
    

    你注意看,这里要循环起来,关键在于要有一个向前的跳转,而if只能向后跳转。不使用循环语句,就必须使用另外一种方式来拥有这种机制。

    一个办法就是上面写的,用goto。

    还有一个办法利用函数调用(递归)返回到执行开始的地方 比如

    int foo(int i)
    {
    if (i == 1) return 1;
    return foo(i - 1) + i;
    }
    

    如果一种语言没有向前跳转的机制,它就不能执行循环,它因此就是非图灵机完备的语言,比如sql。

    0条评论
  • 毕设小屋
    这个人很懒,什么都没有留下~
    评论

    你那个函数形式还是需要进行循环判断的呀,单独一个函数是无法执行循环的,还是需要一个计数器进行控制循环执行函数。

    0条评论

发表回复

登录后才能评论