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

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

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

这个可以改写成

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

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

10个回答

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

qq_43412960
qq_43412960 最深刻
12 个月之前 回复

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

qq_43412960
qq_43412960 谢谢
12 个月之前 回复

break和continue实现就有点难,还有,它没法做到循环的效果

qq_43412960
qq_43412960 深刻
12 个月之前 回复

循环语句就是需要在循环语句的范围{}内执行语句块,达到循环要求的次数。
循环语句的for(int i =0;i< X;++i)里的X是可以变量来的, 用if语句是实现不了变量的,因为你不知道需要调用几次函数.

qq_43412960
qq_43412960 深刻
12 个月之前 回复
qq_43412960
qq_43412960 谢谢
12 个月之前 回复

你这样搞是要用递归吗,数据少的话,循环和递归用哪个都可,数据大的话,还是循环好使,毕竟递归消耗内存大

qq_43412960
qq_43412960 谢谢
12 个月之前 回复

用循环比较方便,在中断给程序做处理的时候用起来也方便,不可能一次一次的手动给他定义吧

qq_43412960
qq_43412960 谢谢
12 个月之前 回复

代码的简洁性,你可以使用顺序结构跟条件结构来实现循环结构。但是比起直接用循环代码要繁琐的多。

qq_43412960
qq_43412960 谢谢
12 个月之前 回复

循环结构最厉害的地方就在于,它可以根据需求重复相同或是有规律的事情。
它虽然也是需要进行判断,但是循环结构是为了方便我们的书写,减少代码量。
就按照你说的这方式,但如果需要调用一万次呢,要调用十万次呢,难道就得要写一万次甚至是十万次调用?
所以,循环结构和选择结构的最大区别就在于,一个可以执行一次,如果执行多次那么需要写大量的重复代码;
一个是可以根据需求执行多次,且不用写大量的重复代码

qq_43412960
qq_43412960 谢谢
12 个月之前 回复

可以批量处理需相同操作的计算数

qq_43412960
qq_43412960 谢谢
12 个月之前 回复

我同意一楼的说法,还需要一个计数器进行控制循环执行函数

qq_43412960
qq_43412960 谢谢
12 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐