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,一经查实,立即删除!

相关文章

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

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

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…

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…

要查询 `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训练技…

香橙派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…

FPGA自学之路:到底有多崎岖?

FPGA&#xff0c;即现场可编程门阵列&#xff0c;被誉为硬件世界的“瑞士军刀”&#xff0c;其灵活性和可编程性让无数开发者为之倾倒。但谈及FPGA的学习难度&#xff0c;不少人望而却步。那么&#xff0c;FPGA自学之路到底有多崎岖呢&#xff1f; 几座大山那么高&#xff1f;…

【KLEE】源码阅读笔记----KLEE执行流程

本文架构 1. 动机2.KLEE简介3.KLEE的代码工程结构4. 从KLEE主函数入手main函数step1: 初始化step2&#xff1a;加载.bc文件进行符号执行 读取测试用例输出日志信息 1. 动机 最近准备对KLEE进行修改使其符合我的需要&#xff0c;因此免不了需要对源码进行修改。读懂源码是对在其…

CS 144 check7: putting it all together

Exercises 经验&#xff1a;两边的TCP连接建立得尽快&#xff0c;如果服务器端启动了&#xff0c;客户端没有紧接着启动就连不上。 这是什么神奇的bug呢&#xff1f; 和我之前给域控刷SOC的版本一样。如果域控启动了&#xff0c;在我本地的电脑没有马上和域控的SOC通上信&…

Suno Api V4模型无水印开发「综合实战开发自己的音乐网站」 —— 「Suno Api系列」第14篇

历史文章 Suno AI API接入 - 将AI音乐接入到自己的产品中&#xff0c;支持120并发任务 Suno Api V4模型无水印开发「灵感模式」 —— 「Suno Api系列」第1篇 Suno Api V4模型无水印开发「自定义模式」 —— 「Suno Api系列」第2篇 Suno Api V4模型无水印开发「AI生成歌词」…

【物联网技术与应用】实验15:电位器传感器实验

实验15 电位器传感器实验 【实验介绍】 电位器可以帮助控制Arduino板上的LED闪烁的时间间隔。 【实验组件】 ● Arduino Uno主板* 1 ● 电位器模块* 1 ● USB电缆*1 ● 面包板* 1 ● 9V方型电池* 1 ● 跳线若干 【实验原理】 模拟电位器是模拟电子元件&#xff0c;模…

【YOLO】(基础篇一)YOLO介绍

YOLO YOLO&#xff08;You Only Look Once&#xff09;是一种用于实时物体检测的算法&#xff0c;由Joseph Redmon等人提出。它能够同时进行物体分类和定位&#xff0c;并且因其速度和效率而广受赞誉。 工作原理 假设我们要对这张猫的图片完成目标检测&#xff0c;需要框选出…

Linux-----进程处理(文件IO资源使用)

下面代码是通过父进程和子进程对同一个文件IO资源进行操作&#xff0c;父进程和子进程都对这个进程进行写入操作&#xff0c;我们都知道这两个进程实际上是并发的&#xff0c;所以需要一个同步机制来去操作同一个资源&#xff08;后面再深入去说明同步的api&#xff0c;这里使用…

golang标准库SSH操作示例

文章目录 前言一、了解SSH二、重要知识点1.安装ssh库2.ssh库重要知识牢记 三、模拟连接远程服务器并执行命令四、SSH与os/exec标准库下执行命令的几种方式对比五、SSH库下三种执行命令方式演示5.1. session.CombinedOutput()示例5.2. session.Run()示例5.3. session.Start()、s…

替代传统FTP传输,镭速大数据传输系统实现安全高效数据流转!

信息技术的快速进步让大数据成为了企业决策的关键支撑&#xff0c;但同时也带来了巨大的挑战。企业在运营过程中产生的数据量急剧增加&#xff0c;这对数据传输的速度、安全性和效率提出了更高的要求。然而&#xff0c;传统的FTP传输方式在处理大规模数据时显得力不从心&#x…