qq_43412960 2019-10-23 16:38 采纳率: 78.6%
浏览 826
已采纳

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

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

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

这个可以改写成

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

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

  • 写回答

10条回答 默认 最新

  • threenewbee 2019-10-23 17:25
    关注

    光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。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(9条)

报告相同问题?

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置