码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • C语言程序设计笔记(浙大翁恺版) 第五周:循环控制


    按照中国大学MOOC上浙江大学翁恺老师主讲的版本所作,B站上也有资源。原课程链接如下:

    https://www.icourse163.org/course/ZJU-9001

    由于是大三抽空回头整理的,所以可能前五章会记的内容比较简略。此外,作为选学内容的A0:ACLLib的基本图形函数和链表两章也没有做。西电的考试是机试,理论上学到结构体就能够应付考试了,但为了以后的学习考虑建议全学。

     

    其他各章节的链接如下:

    C语言程序设计笔记(浙大翁恺版) 第一周:程序设计与C语言

    C语言程序设计笔记(浙大翁恺版) 第二周:计算

    C语言程序设计笔记(浙大翁恺版) 第三周:判断

    C语言程序设计笔记(浙大翁恺版) 第四周:循环

    C语言程序设计笔记(浙大翁恺版) 第五周:循环控制

    C语言程序设计笔记(浙大翁恺版) 第六周:数据类型

    C语言程序设计笔记(浙大翁恺版) 第七章:函数

    C语言程序设计笔记(浙大翁恺版) 第八周:数组

    C语言程序设计笔记(浙大翁恺版) 第九周:指针

    C语言程序设计笔记(浙大翁恺版) 第十周:字符串

    C语言程序设计笔记(浙大翁恺版) 第十一周:结构类型

    C语言程序设计笔记(浙大翁恺版) 第十二周:程序结构

    C语言程序设计笔记(浙大翁恺版) 第十三周:文件

     

    循环控制

    第三种循环

    for循环

    这是最古老的循环,确实样子看上去有点古怪

     

     

    for循环

    for循环像一个计数循环:设定一个计数器,初始化它,然后在计数器到达某值之前,重复执行循环体,而每执行一轮循环,计数器值以一定步进进行调整,比如加1或者减1

    for ( 初始条件; 条件; 每轮的动作 ) {
       
    }
    
    • 1
    • 2
    • 3

     

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

    在这里插入图片描述

     

     

    for = 对于

    for ( count=10; count>0; count-- )就读成:”对于一开始的count=10,当count>0时,重复做循环体,每一轮循环体在做完循环体内语句后,使得count--“

     

     

    阶乘

    n ! = 1 × 2 × 3 × 4 × . . × n n!=1\times 2 \times 3\times 4\times .. \times n n!=1×2×3×4×..×n

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

    int n;
    
    scanf("%d", &n);
    int fact = 1;
    
    int i = 1;
    for ( i=1; i<=n; i++ ) {
        fact *= i;
    }
    
    printf("%d!=%d\n", n, fact);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    循环控制变量i只在循环里被使用了,在循环外面它没有任何用处。因此,我们可以把变量i的定义放到for语句里面去写成for ( int i=1; i<=n; i++ ) { ... }

    但是即使宣称支持C99的编译器,也可能需要加特殊的选项才能够使用这种写法

    在这里插入图片描述

     

    循环的计算和选择

    如何计算循环的次数,如何选择不同的循环

     

     

    循环次数

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

     

     

    Tips for loops

    如果有固定次数,用for。如果必须执行一次,用do_while。其他情况用while

    在这里插入图片描述

     

    循环控制

    循环控制

    如何用break和continue来控制循环

     

     

    break vs continue

    break:跳出循环

    continue:跳过循环这一轮剩下的语句进入下一轮

    在这里插入图片描述

     

     

    素数

    只能被1和自己整除的数,不包括1

    #include 
    
    int main()
    {
    	int x;
    
    	scanf("%d", &x);
    	
    	int i;
    	int isPrime = 1;	//	x是素数
    	for ( i=2; i<x; i++ ) {
    		if ( x % i == 0 ) {
    			isPrime = 0;
    			break;
    		}
    	}
    	if ( isPrime == 1 ) {
    		printf("是素数\n");
    	} else {
    		printf("不是素数\n");
    	}
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

     

    嵌套的循环

    在循环里面还是循环

     

     

    嵌套的循环

    循环里面还是循环

     

     

    100以内的素数

    如何写程序输出100以内的素数?

    #include 
    
    int main()
    {
    	int x;
    	
    	for ( x=1; 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);
    		} 
    	}
    	printf("\n");
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

     

    前50个素数

    如何写程序输出前50个素数?

    #include 
    
    int main()
    {
    	int x;
    	int cnt = 0;
    
    	x = 1;
    	while ( cnt <50 ) {
    		int i;
    		int isPrime = 1;	//	x是素数
    		for ( i=2; i<x; i++ ) {
    			if ( x % i == 0 ) {
    				isPrime = 0;
    				break;
    			}
    		}
    		if ( isPrime == 1 ) {
    			cnt ++;
    			printf("%d\t", x);
    			if ( cnt %5 == 0 ) {
    				printf("\n");
    			}
    		} 
    		x++;
    	}
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

     

    从嵌套的循环中跳出

    break只能跳出其所在的循环

     

     

    break和continue只能对它所在的那层循环做

    当有多重循环,希望从最内层跳到最外层时可以用break接力或者goto

     

     

    凑硬币

    如何用1角、2角和5角的硬币凑出10元以下的金额呢?

    #include 
    
    int main()
    {
    	int x;
    	int one, two, five;
    	int exit = 0;
    	
    	scanf("%d", &x);
    	for ( one = 1; one < x*10; one++ ) {
    		for ( two = 1; two < x*10/2; two++ ) {
    			for ( five = 1; five < x*10/5; five++ ) {
    				if ( one + two*2 + five*5 == x*10 ) {
    					printf("可以用%d个1角加%d个2角加%d个5角得到%d元\n", 
    						one, two, five, x);
    					exit = 1;
    					break;
    				}
    			}
    			if ( exit == 1 ) break;
    		}
    		if ( exit == 1 ) break;
    	}
    	
    	return 0;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    #include 
    
    int main()
    {
    	int x;
    	int one, two, five;
    	
    	scanf("%d", &x);
    	for ( one = 1; one < x*10; one++ ) {
    		for ( two = 1; two < x*10/2; two++ ) {
    			for ( five = 1; five < x*10/5; five++ ) {
    				if ( one + two*2 + five*5 == x*10 ) {
    					printf("可以用%d个1角加%d个2角加%d个5角得到%d元\n", 
    						one, two, five, x);
    					goto out;
    				}
    			}
    		}
    	}
    out:	
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

     

     

    循环应用

    • 前n项求和
    • 整数分解
    • 求最大公约数

     

    编程练习解析

    • 4-0:给定条件的整数集
    • 4-1:水仙花数
    • 4-2:九九乘法表
    • 4-3:统计素数求和
    • 4-4:猜数游戏
    • 5-0:n项求和
    • 5-1~5-3
  • 相关阅读:
    大数据面试题Hbase篇
    C#西门子S7 协议通过偏移量的方式读写PLC DB块
    【Web世界探险家】打开Web世界的大门
    SpringBoot——原理(起步依赖+自动配置(概述和案例))
    天堂2游戏出错如何解决
    微软出品自动化神器【Playwright+Java】系列(十)元素定位详解
    linux查看python的py文件的命令
    websocket 的创建与关闭
    聊聊消息中间件(1),AMQP那些事儿
    简单明了,数据库设计三大范式
  • 原文地址:https://blog.csdn.net/zimuzi2019/article/details/126215801
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号