qq_43412960 2019-10-23 16:38 采纳率: 75%
浏览 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 微信小程序 用oss下载 aliyun-oss-sdk-6.18.0.min client报错
  • ¥15 ArcGIS批量裁剪
  • ¥15 labview程序设计
  • ¥15 为什么在配置Linux系统的时候执行脚本总是出现E: Failed to fetch http:L/cn.archive.ubuntu.com
  • ¥15 Cloudreve保存用户组存储空间大小时报错
  • ¥15 伪标签为什么不能作为弱监督语义分割的结果?
  • ¥15 编一个判断一个区间范围内的数字的个位数的立方和是否等于其本身的程序在输入第1组数据后卡住了(语言-c语言)
  • ¥15 Mac版Fiddler Everywhere4.0.1提示强制更新
  • ¥15 android 集成sentry上报时报错。
  • ¥15 抖音看过的视频,缓存在哪个文件