当前位置:网站首页>C语言入门笔记 —— 分支与循环
C语言入门笔记 —— 分支与循环
2022-08-05 05:17:00 【Captain林】
很多新入门的小伙伴都想要深入学习C语言,但因为是刚刚接触,大多对C语言没有整体上的认知,因此很容易会在前期钻入牛角尖,耗费大量时间精力,到头来却是“竹篮打水一场空”、“捡了芝麻丢了西瓜”。因此小编在这里为刚接触C语言的同学们准备了一份C语言入门级笔记(包含概括总结),帮助同学们粗略地建立C语言的整体认知。
码字不易,别忘了先赞后看哦!
看完本篇文章,你将会对C语言分支和循环有更深层次的理解哦!
本篇文章的知识点包括选择语句(if、switch)和循环语句(for、while、do...while)的基本形式和码代码时的易错点,简单的运用形式在此文章将不再复述;
本篇文章由概念、代码、题目结合的方式组成。
目录
1. if语句
1.1形式
*单分支
if(表达式)语句1;else语句2;
*多分支
if(表达式1)语句1;else if(表达式2)语句2;else语句3;
1.2 易错点
*if语句默认只能跟一条语句,多条语句需要加上大括号,否则会出现语法问题
*在没有大括号的情况下,else总是和最近的if语句进行匹配
1.3 好风格
代码风格(可阅读高质量c++编程前三章)
好风格:if+{ }、if(5 == num)、if(1 == n%2)
2. switch语句
2.1 形式
switch(整形表达式)
{
case 整形常量表达式(1,2,3,1+0,......):
语句;
break;
default:
break;
}
2.2 易错点
switch语句后面跟的是整形表达式(int)
若没有 break,代码将继续到下一个case上
2.3 好风格
在最后一个 case 语句的后面加上一条 break语句。
3. while 循环
3.1 形式
while(表达式)循环语句;
3.2 while循环的continue和break
while循环的break,终止循环
while循环的continue,跳过本次循环continue后面的代码,重新回到循环的判断部分
3.3 while循环的特殊运用
3.3.1 字符的读取与打印
getchar()——读取字符
int ch = getchar( );//a
putchar()——打印字符
putchar(ch);
3.3.2 特殊运用
while((ch = getchar()) != EOF)
while((scanf("%d",&n)) != EOF)
scanf()、getchar()共用问题
scanf() <———— 缓冲区 <————键盘
getchar()
问:输入密码12345(\n),是否确定(Y/N);
答:使用循环,如下所示
int a = 0;
while((a = getchar()) != '\n') //用while循环取掉密码之后的字符,包括(\n)
{
; (使用空语句)
}
4. for 循环
4.1 形式
for(表达式1; 表达式2; 表达式3)循环语句;
4.2 for循环中的break、continue
for(i=0; i<10; i++)
continue会跳过continue后的代码,但是for循环调整环节(i++)依旧会执行for循环的break,终止循环
4.3 for循环变量的控制
建议:不在for循环体中调整循环变量( i );
使用“前闭后开”的方法;即(i=0;i<10),非(i=0;i<=9);
for循环如果判断部分为假(如k = 0),循环将不会进行
要注意使用k == ??;
5.do...while循环
5.1 形式
do循环语句;while(表达式);
5.2 易错
while后面要有个分号;
6. 综合练习
6.1 阶乘问题
问:计算 1!+2!+3!+……+10!

6.2 二分查找
问:查找有序数组的某一个数
*计算数组两边差
*两边
计算长度(方法一)
sz = sizeof(arr)/sizeof(arr[0])
right = sizeof(arr)/sizeof(arr[0])- 2(求的是下标,有\0)
计算长度(方法二)【要使用头文件#include<string.h>】
int right = strlen(arr) - 1

6.3 覆盖问题
*睡眠与清屏
*睡眠【要使用头文件#include<windows.h>】
sleep(1000)—— 延迟
*清屏【要使用头文件#include<stdlib.h>】
system("cls"); —— 清屏

6.5 模拟登录
问:模拟用户登录(只有三次机会)
*两个字符串不能用 == 比较
*两个字符串不能用 == 比较
要用库函数(strcmp)比较
strcmp(password,"abcdef")== 0;
需要的头文件#include<string.h>
*数组名本来就是地址
*数组名本来就是地址
char password[20] = {0};
scanf("%s",password)

6.6 0~100猜字游戏
问:制作一个0~100猜字游戏
*生成随机数
*生成随机数
#include<stdlib.h>
#include<time.h>
srand((unsigned int)time(NULL); ——时间戳,C语言提供了一个函数time,可以返回一个时间戳
int ret = rand() - 范围是(0~32767)——头文件#include<stdlib.h>



结语
看到这里,相信老铁们对C语言已经有了更深刻的了解。我是计算机海洋的新进船长Captain_ldx,如果我的文章能对您有帮助的话,麻烦各位观众姥爷们点赞、收藏、关注我吧!如果你对我的文章有任何问题或者意见,欢迎在评论区给我留言。后期重点注释和知识点将持续更新......
边栏推荐
- LeetCode刷题之第416题
- Machine Learning (1) - Machine Learning Fundamentals
- 网络通信及相关函数介绍
- 记我的第一篇CCF-A会议论文|在经历六次被拒之后,我的论文终于中啦,耶!
- MSRA提出学习实例和分布式视觉表示的极端掩蔽模型ExtreMA
- [Pytorch study notes] 11. Take a subset of the Dataset and shuffle the order of the Dataset (using Subset, random_split)
- A deep learning code base for Xiaobai, one line of code implements 30+ attention mechanisms.
- LeetCode刷题之第61题
- 【22李宏毅机器学习】课程大纲概述
- Service
猜你喜欢

华科提出首个用于伪装实例分割的一阶段框架OSFormer

HuiFer 带你读懂 BeanFactory getBean 方法

6k+ star,面向小白的深度学习代码库!一行代码实现所有Attention机制!

CVPR 2022 | 70% memory savings, 2x faster training

网络通信及相关函数介绍

LeetCode刷题之第746题

四、Web场景之静态资源配置原理

读论文 - Unpaired Portrait Drawing Generation via Asymmetric Cycle Mapping

MSRA提出学习实例和分布式视觉表示的极端掩蔽模型ExtreMA

网工必用神器:网络排查工具MTR
随机推荐
dataframe 常用操作
【Multisim仿真】直流稳压电源设计报告
Jupyter notebook选择不同的Anaconda环境作为内核运行
常用 crud 的思考和设计
11%的参数就能优于Swin,微软提出快速预训练蒸馏方法TinyViT
MSRA proposes extreme masking model ExtreMA for learning instances and distributed visual representations
单片机按键开发库-支持连击、长按等操作
全尺度表示的上下文非局部对齐
MaskDistill - Semantic segmentation without labeled data
Redis设计与实现(第二部分):单机数据库的实现
OSPF故障排除办法
原型版本管理
PID详解
LeetCode刷题之第530题
【数据库和SQL学习笔记】4.SELECT查询2:排序(ORDER BY)、聚合函数、分组查询(GROUP BY)
电子产品量产工具(1)- 显示系统实现
表情捕捉的指标/图像的无参考质量评价
Tensorflow steps on the pit notes and records various errors and solutions
手把手教你搭建小程序
【ts】typeScript高阶:any和unknown