看完这篇文章,保你学会C语言 :for 循环

举报
光之梦 发表于 2023/10/15 16:31:29 2023/10/15
【摘要】 看完这篇文章,保你学会C语言 :for 循环 如果你看完了,你绝对会有所收获的 我的目标是:用通俗易懂的口语来为大家带来我自己对C语言基础语法的理解,想让零基础小白也能看懂学会并且能够掌握C语言的基础语法

我的个人主页光之梦的博客_云社区-华为云 (huaweicloud.com)

欢迎各位 👍点赞 ⭐收藏 📝评论,如有错误请留言指正,我会第一时间改正。非常感谢!

初学者推荐用的刷题网站蓝桥杯ACM训练系统 - C语言网 (dotcpp.com)

特别标注本博主将会长期更新c语言的语法知识,初学c语言的朋友们,可以收藏订阅一下我的<C语言基础语法>专栏。关注博主,学习不迷路哦

一、for 循环的基本结构 

for(初始动作;判断循环是否继续的条件;循环每轮都要做的事)

{

        语句……

}


上面这个也可以简化成:

for (初始化;条件;每轮的动作)

{

        语句……

}


二、for 循环的概念 

for = 对于

我们可以把 for 的意思看成是 :对于  


我们先来看看以下代码:

例如:
for(count = 10; count > 0; count--)
{
  printf("%d",count);
}


for(初始动作;条件;每轮的动作)
{
    ……
}

for(count = 10; count > 0; count--)

可以解读成:对于,一开始的count = 10当count > 0的时候,重复做循环体的内容,每一轮循环在做完循环体内语句后,使得count--


for 循环的执行流程:


也就是说 for 循环:像是一个计数循环:设定一个计数器(如count),初始化它(如count=10),然后在计数器到达某值之前(count>0),重复执行循环体,而每执行一轮循环,计数器值以一定的步进 来进行调整,比如加一或者减一。因为 for 也是循环,所以在用 for 时,我们需要考虑好如何让条件不满足。否则程序就会一直循环下去。


三、for 循环 与 while循环

 for 中的每一个条件都是可以省略的,for(;条件;) == while(条件) 

 

3.1 for 循环 与 while循环的关系

请看下面代码:

for( int i = 1;i <= n;i++ )
{
    fact *= i;   
}
-------------------------------------------
int i = 1;
while(i <= n)
{
    fact *=i;
    i++;
}

上面这两部分的代码,表达的意思和程序执行的结果都是相同的。只是用代码表示的不同而已(一个程序可以用多种方法来实现,就像写数学解答题一样,有多种解题思路与方法,我们要多去尝试,从中选出最高效的那种方法就行。并没有什么是绝对的标准与答案)

也就是说 for 循环:for(;条件;) == while(条件) 


3.2 循环次数

for( i = 0; i < n; i++)

这样循环的次数n,而循环次数结束以后,i 的值是n

循环的控制变量 i,是选择从0开始还是从1开始,是判断 i<n还是判断i <=n,对循环次数,循环结束后变量的值都是有影响的


3.3 for 循环与 while 与 do while

什么时候用 for 循环 ?什么时候用while ?什么时候用 do while? 

 学了这么多的循环,想必大家一定有这个疑问吧


接下来是重点哦,拿起你的笔还有你的小本本,记好咯

敲黑板啦(咚!咚!咚!)

 

  • 如果有固定次数,就用 for
  • 如果必须执行一次,就用 do while
  • 其他情况都可以用 while 

 

3.4 一点C语言的小套路

做求和的程序时,记录结果的变量应该初始化为0,而做求积的变量时,记录结果的变量应该初始化为1


如果循环控制变量 i 只在循环里被使用了,在循环外面它没有任何用处。那么,我们可以把变量 i 的定义写到for语句里面去


四、for 循环的基本用法

光说不练是肯定学不会的接下来让我们在实战中来学习与掌握 for 循环

(一定要动动你们的小手一起敲哦,就算是看懂了也要自己实践一下哦。编程就是在实践中学习,用的多了自然也就会了。)

 

4.1 计算阶乘

要求:写出一个程序,让用户输入n,然后计算输出n!

 

思路:显然读用户的输入需要一个int的 变量n ,然后计算的结果需要用一个变量保存,也可以是int的 fact,在计算中需要有一个变量不断地从1递增到n,那可以是int的 i 

 

代码示例:

#include <stdio.h>

int main()
{
	int n;
	
	printf("请输入要计算的数:");
	//用n来保存用户输入的数
	scanf("%d",&n);
	
	printf("\n");
	
	//计算的结果用fact来保存
	int fact = 1;
	
    //计算阶乘
	int i = 1;
	for( i = 1;i <= n; i++)
	{
	    fact *= i;
	}
	
	printf("%d!=%d\n",n,fact);	

}

运行结果:

 

4.2 判断输入的数是否是素数                                                            

素数:只能被1和自身整除的数,不包括1

要求:判断输入的数是否是素数

 

代码示例:

#include <stdio.h>

int main()
{
    //输入一个数x
	int x;
	printf("请输入一个数:");
	scanf("%d",&x);
	printf("\n"); 
	
	int i;
	int isprime=1;    // 先让x是素数

    // 判断输入的是不是素数
    //素数是除了1只能被1和自身整除的数,所以从程序2开始
	for (i=2;i<x;i++)
    {
		if (x%i==0)
        {
			isprime=0;
			break;
		}
	}
	
	if (isprime==1)
    {
		printf("%d是素数\n",x);
	}else 
    {
		printf("%d不是素数\n",x);
	}
	return 0;
}


运行结果:

 

4.3 输出100以内的素数

要求:如何让程序输出100以内的素数呢?

 (一定要自己先动脑筋想一想哦,我的只是其中一个方法,或许你想到的方法会比我方法的更高效,代码量比我用的更少哦。有更好的方法欢迎大家积极在评论区投稿或者私信我哦)

代码示例:

#include <stdio.h>

int main()
{
    //定义一个变量x,让x保存我们输入的值
    int x;

    //我们需要有一个循环,从 1 到 100 
    //素数是除了1只能被1和自身整除的数,所以从程序2开始
    for(x=2; x<=100; x++)
    {
	    int i;
	    int isPrime = 1;     // x是素数
        
        //判断输入的数是不是素数
	    for ( i=2; i<x; i++ )
        {
	        if ( x % i == 0 )
            {
	            isPrime = 0;
	            break;
	        }
	    }

	    //当它是素数的时候就输出出来,不是素数就不要输出任何东西
	    if ( isPrime == 1 )
        {
	        printf("%d ", x);
	    }
    }

    return 0;
}

 运行结果:

小结:

  1. for = 对于
  2. for (初始化;条件;每轮的动作)

    {

            语句……

    }

  3. for中的每一个条件都是可以省略的,for(;条件;) == while(条件) 
  • 如果有固定次数,就用 for
  • 如果必须执行一次,就用 do while
  • 其他情况都可以用 while


各位学习C语言的初学者,如果有问题随时都可以来问我,我会随时为您解答!欢迎大家与我一起学习,互相进步。

创作不易,👍 +⭐ +📝(一键三连) 是对博主最大的鼓励与支持哦。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。