C语言期末复习笔记(中)

目录

五、选择控制结构

1.算法中的概念及描述方法

2.关系运算符和逻辑表达式

3.条件运算符和条件表达式

4.两种多分支if

5.switch语句

6.逻辑运算符和逻辑表达式

六、循环控制结构

1.控制循环的方式

2.控制非法输入

3.选择三种循环的一般原则

4.猜数游戏

5.嵌套循环

6.流程的转移控制

7.goto语句

七、函数

1.函数的参数传递

2.函数定义和函数声明的区别

3.防御性程序的设计

4.断言(Assert)

5.函数设计基本原则

6.嵌套调用

7.递归函数

8.变量的存储类型

9.模块化设计猜数游戏

八、数组

1.二维数组的存储结构

2.最大值算法

3.排序算法

(1)冒泡排序

(2)选择排序

4.查找算法

(1)顺序查找

​(2)折半查找


五、选择控制结构

1.算法中的概念及描述方法

 

2.关系运算符和逻辑表达式

3.条件运算符和条件表达式

 4.两种多分支if

 

如三角形的判断 

main()
{……if (a+b>c && b+c>a && a+c>b) /*三角形的基本条件*/{if (a==b && b==c && c==a){printf("等边");flag = 0;}else if (a==b || b==c || c==a){printf("等腰");flag = 0;}if (a*a+b*b==c*c || a*a+c*c==b*b || b*b+c*c==a*a){printf("直角");flag = 0;}if (flag)printf("一般");printf("三角形\n");}elseprintf("不是三角形\n");
}

5.switch语句

没有break就会一直往下执行,记得写break

计算器程序:

main()
{int    data1, data2;            /*定义两个操作符*/char   op;                      /*定义运算符*/printf("Please enter the expression:");scanf("%d%c%d", &data1, &op, &data2);  /*输入运算表达式*/switch (op) {case '+':                         /*处理加法*/printf("%d + %d = %d\n", data1, data2, data1 + data2); break;case '-':                         /*处理减法*/printf("%d - %d = %d\n", data1, data2, data1 - data2);break;case '*':                         /*处理乘法*/printf("%d * %d = %d\n", data1, data2, data1 * data2); break;case '/':                         /*处理除法*/if (0 == data2)printf("Division by zero!\n");else  printf("%d/%d = %d\n", data1, data2, data1/data2); break;default: printf("Invalid operator! \n");}
}

 其中为什么不用if (data2 == 0)?

答:在一些编程规范和老派的编程习惯中,推荐将常量写在比较表达式的左边,像 if (0 == data2) 这样的写法。这样做的好处是,如果不小心写成了 if (0 = data2) (将比较写成了赋值),编译器会直接报错,因为在 C 语言中,常量是不能被赋值的,所以这样的写法能帮助程序员尽早发现这种低级但容易疏忽的错误。而如果写成 if (data2 == 0) ,当误写成 if (data2 = 0) 时,编译器通常不会报错,只是会把赋值操作的结果(也就是 0)作为条件判断的值,往往会导致程序逻辑出现意外情况且不容易被察觉。

6.逻辑运算符和逻辑表达式

六、循环控制结构

1.控制循环的方式

2.控制非法输入

3.选择三种循环的一般原则

4.猜数游戏

 

直到猜对为止 

#include  <stdlib.h>
#include  <stdio.h>
#include  <time.h>
main()
{ int  magic;               int  guess;               int  counter;             /*记录人猜次数的计数器变量*/srand(time(NULL));magic = rand() % 100 + 1; counter = 0;              /*计数器变量count初始化为0*/do{printf("Please guess a magic number:");scanf("%d", &guess);        counter ++;                 /*计数器变量count加1*/if (guess > magic)          printf("Wrong! Too high!\n");else if (guess < magic)       printf("Wrong! Too low!\n");elseprintf("Right!\n");}while (guess != magic);        printf("counter = %d \n", counter);  
}

最多猜十次

#include  <stdlib.h>
#include  <stdio.h>
#include  <time.h>
main()
{ int  magic;               int  guess;               int  counter;             /*记录人猜次数的计数器变量*/srand(time(NULL)); magic = rand() % 100 + 1;counter = 0;              /*计数器变量count初始化为0*/do{printf("Please guess a magic number:");scanf("%d", &guess);        counter ++;                 /*计数器变量count加1*/if (guess > magic)          printf("Wrong! Too high!\n");else if (guess < magic)       printf("Wrong! Too low!\n");elseprintf("Right!\n");}while (guess != magic && counter < 10);        printf("counter = %d \n", counter);  
}

猜多个数10次,猜不对就猜下一个数,直到用户选择结束为止

do{magic = rand() % 100 + 1;   counter = 0;            do{printf("Please guess a magic number:");scanf("%d", &guess);       counter ++;               if (guess > magic)    printf("Wrong!Too high!\n");else if (guess < magic)  printf("Wrong!Too low!\n");elseprintf("Right!\n");}while (guess != magic && counter < 10);printf("counter = %d\n", counter); printf("Do you want to continue(Y/N or y/n)?");scanf(" %c", &reply);}while ((reply == 'Y') || (reply == 'y')); 

 防止非法字符输入

5.嵌套循环

 6.流程的转移控制

break和continue语句

break退出一层循环

continue中断此次循环,开启下一次

7.goto语句

韩信点兵

#include <stdio.h>
main()
{int  x;for (x=1; ;x++) {if (x%5==1 && x%6==5 && x%7==4 && x%11==10){printf("x = %d\n", x); goto END;		}		}END:  ;	
}
#include <stdio.h>
main()
{int  x;for (x=1; ;x++) {if (x%5==1 && x%6==5 && x%7==4 && x%11==10){printf("x = %d\n", x); break;		}		}	
}
#include <stdio.h>
#include <stdlib.h>
main()
{int  x;for (x=1; ;x++) {if (x%5==1 && x%6==5 && x%7==4 && x%11==10){printf("x = %d\n", x); exit(0);		}		}	
}
#include <stdio.h>
main()
{int  x;      int  find = 0;      /*置找到标志为假*/for (x=1; !find ;x++) {if (x%5==1 && x%6==5 && x%7==4 && x%11==10){printf("x = %d\n", x); find = 1; /*置找到标志为真*/ 	}		}	
}

七、函数

1.函数的参数传递

2.函数定义和函数声明的区别

3.防御性程序的设计

注意标红部分,声明为无符号类型,会产生报错,可以用下面的解决方法

 4.断言(Assert)

 5.函数设计基本原则

6.嵌套调用

 7.递归函数

8.变量的存储类型

auto和static 

寄存器变量

9.模块化设计猜数游戏

 

八、数组

1.二维数组的存储结构

数组名的数组的首地址

2.最大值算法

3.排序算法

(1)冒泡排序

(2)选择排序

4.查找算法

(1)顺序查找

 (2)折半查找

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/65274.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android jetpack compose Model对象更新变量 UI不更新、不刷新问题

以前是搞老本行Android原生开发的&#xff0c;因为工作原因&#xff0c;一直在用vue小程序&#xff1b;因为一些工作需要&#xff0c;又需要用到Android原生开发&#xff0c;建了个项目&#xff0c;打开源码一看&#xff0c;天塌了&#xff01;&#xff01;&#xff01;我以前的…

Python的Pandas--Series的创建和实现

1.Series函数的格式&#xff1a; pandas.Series(data,index,dtype,name,copy) data&#xff1a;一组数据&#xff08;ndarray类型、list、dict等类&#xff09;或标量值 index&#xff1a;数据索引标签。如果不指定&#xff0c;默认为整数&#xff0c;从0开始 dtype&#x…

python通过正则匹配SQL

pattern r"(?:[^;]|(?:\\.|[^])*);" sql_list [match.group().strip() for match in re.finditer(pattern, execute_sql) if match.group().strip()]for sql in sql_list:print(sql)(?:[^;]|(?:\\.|[^])*); 匹配 连续的非分号内容 或 单引号包裹的字符串&#…

利用Gurobi追溯模型不可行原因的四种方案及详细案例

文章目录 1. 引言2. 追溯不可行集的四种方法2.1 通过约束增减进行判断2.2 通过computeIIS函数获得冲突集2.3 利用 feasRelaxS() 或 feasRelax() 函数辅助排查2.4 利用 IIS Force 属性1. 引言 模型不可行是一个让工程师头疼的问题,对于复杂模型而言,导致模型不可行的原因可能…

算法工程化工程师

算法工程化工程师是一种结合算法研究与工程开发能力的技术职位&#xff0c;主要职责是将算法从理论研究到实际落地&#xff0c;应用到各种工业或商业场景中。以下是关于这个职位的一些核心内容&#xff1a; 核心职责&#xff1a; 算法实现与优化&#xff1a; 将数学模型或算法…

MySQL和HBase的对比

Mysql &#xff1a;关系型数据库&#xff0c;主要面向 OLTP &#xff0c;支持事务&#xff0c;支持二级索引&#xff0c;支持 sql &#xff0c;支持主从、 Group Replication 架构模型&#xff08;此处以 Innodb 为例&#xff0c;不涉及别的存储引擎&#xff09;。 HBase &am…

mybatis-plus自动填充时间的配置类实现

mybatis-plus自动填充时间的配置类实现 在实际操作过程中&#xff0c;我们并不希望创建时间、修改时间这些来手动进行&#xff0c;而是希望通过自动化来完成&#xff0c;而mybatis-plus则也提供了自动填充功能来实现这一操作&#xff0c;接下来&#xff0c;就来了解一下mybatis…

【软件工程】十万字知识点梳理 | 期末复习专用

原创文章,禁止转载。 文章目录 图CRC卡片用例图类图状态图活动图泳道图软件质量因素自顶向下集成自底向上集成人员与工作量之间的关系时序图关键路径软件结构基本路径测试判定表数据流图(DFD)体系结构设计问题数据字典挣值分析等价划分程序流程图PAD | N-S燃尽图甘特图对象模…

STM32完全学习——FLASH上FATFS文件管理系统

一、需要移植的接口 我们通过看官网的手册&#xff0c;可以看到我们只要完成下面函数的实现&#xff0c;就可以完成移植。我们这里只移植前5个函数&#xff0c;获取时间的函数我们不在这里移植。 二、移植接口函数 DSTATUS disk_status (BYTE pdrv /* Physical drive nmuber…

安卓帧率获取

背景 性能优化&#xff0c;经常用到一些指标&#xff0c;诸如帧率、功耗等。对于普通app来讲&#xff0c; 之前一直使用gfxinfo指令获取丢帧率。但是这个指令无法获取游戏的帧率&#xff0c;查阅资料&#xff0c;发现SurfaceFlinger可以获取游戏帧率。 帧率获取原理 获取当前f…

Redis - Token JWT 概念解析及双token实现分布式session存储实战

Token 定义&#xff1a;令牌&#xff0c;访问资源接口&#xff08;API&#xff09;时所需要的资源凭证 一、Access Token 定义&#xff1a;访问资源接口&#xff08;API&#xff09;时所需要的资源凭证&#xff0c;存储在客户端 组成 组成部分说明uid用户唯一的身份标识time…

软体机器人研究报告:设计方法、材料与驱动、感知与控制

软体机器人因其出色的可变形性和高适应性受到了广泛关注&#xff0c;这些特性使其在医疗、救援、探测等复杂场景中展现出独特的优势和巨大的应用潜力。研究人员对软体机器人的设计方法、材料与驱动技术、感知与控制策略等方面进行深入研究&#xff0c;取得了一系列成果。 本文汇…

imgproxy图像处理的高效与安全

摘要 imgproxy作为一个高效且安全的独立服务器,为图像处理提供了全新的解决方案。它不仅简化了图像调整和转换的过程,还极大地提升了处理速度,确保了整个流程的安全性。通过集成imgproxy,用户可以轻松优化网页上的图像,提高加载速度,改善用户体验。本文将深入探讨imgpro…

获取XML 属性值

<controlActProcess classCode"CACT" moodCode"EVN"><queryByParameter><statusCode code"new"/><queryByParameterPayload><statusCode code"new"/><actId><value><!--申请单编号-->…

要查询 `user` 表中 `we_chat_subscribe` 和 `we_chat_union_id` 列不为空的用户数量

文章目录 1、we_chat_subscribe2、we_chat_union_id 1、we_chat_subscribe 要查询 user 表中 we_chat_subscribe 列不为空的用户数量&#xff0c;你可以使用以下 SQL 查询语句&#xff1a; SELECT COUNT(*) FROM user WHERE we_chat_subscribe IS NOT NULL;解释&#xff1a; …

RTMW:实时多人2D和3D 全人体姿态估计

单位&#xff1a;上海AI实验室 代码&#xff1a;mmpose/tree/main/projects/rtmpose 系列文章目录 RTMO: 面向高性能单阶段的实时多人姿态估计 目录 系列文章目录摘要一、背景二、相关工作2.1 自上而下的方法。2.2 坐标分类。2.3 3D Pose 3 实验方法3.1.1 任务限制3.1.3训练技…

操作系统之同步与互斥的基本概念

1. 同步的基本概念 定义&#xff1a;同步是指在多个并发执行的进程或线程之间协调其行为&#xff0c;以使它们能够正确地相互合作。在计算机科学中&#xff0c;同步通常指对共享资源进行访问控制&#xff0c;以避免竞争条件和死锁等问题。 实现方式&#xff1a;为了实现同步&a…

Lua元表

哈喽&#xff0c;好久没有做记录了&#xff0c;最近刚好有时间打算整理一些基础常用内容&#xff0c;先做一期关于Lua相关的内容热热身。如果内容有误&#xff0c;欢迎大家指出我会积极做出响应。 在Lua中&#xff0c;元表&#xff08;metatable&#xff09; 和 元方法&#xf…

香橙派5Plus启动报错bug: spinlock bad magic on cpu#6, systemd-udevd/443

一、问题 如图&#xff1a; 接上调试串口&#xff0c;每次启动都会报错。不过使用过程中没有发现有什么影响。 百度查阅&#xff0c;有一位博主提到&#xff0c;但是没有细说解决方案&#xff1a; spinlock变量没有初始化_spinlock bad magic on-CSDN博客https://blog.csdn.n…

多语言宿舍管理:宿舍管理系统的国际化

2.1 Java语言 Java语言是目前最流行的语言之一&#xff0c;不仅可以做桌面窗口形式的程序&#xff0c;还可以做浏览器访问的程序&#xff0c;目前最流行的就是用Java语言作为基础&#xff0c;做各种程序的后台处理。Java语言是操作变量的语言&#xff0c;而变量则是Java对于数据…