当前位置:网站首页>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刷题之第530题
- 《基于机器视觉的输电线路交叉点在线测量方法及技术方案》论文笔记
- A deep learning code base for Xiaobai, one line of code implements 30+ attention mechanisms.
- 最简单的防抖节流理解法
- 物联网:LoRa无线通信技术
- 面向小白的深度学习代码库,一行代码实现30+中attention机制。
- Thread handler handle IntentServvice handlerThread
- 读论文 - Unpaired Portrait Drawing Generation via Asymmetric Cycle Mapping
- 常用 crud 的思考和设计
- MSRA提出学习实例和分布式视觉表示的极端掩蔽模型ExtreMA
猜你喜欢
IT系统运行维护方法及策略
单变量线性回归
A deep learning code base for Xiaobai, one line of code implements 30+ attention mechanisms.
ECCV2022 | RU&谷歌提出用CLIP进行zero-shot目标检测!
LeetCode刷题之第23题
【数据库和SQL学习笔记】7.SQL中的插入(INSERT)、删除(DELETE)、更新(UPDATE)
CVPR 2022 |节省70%的显存,训练速度提高2倍
ECCV2022 | RU & Google propose zero-shot object detection with CLIP!
[Kaggle project actual combat record] Steps and ideas sharing of a picture classification project - taking leaf classification as an example (using Pytorch)
LeetCode刷题之第1024题
随机推荐
《基于机器视觉测量系统的工业在线检测研究》论文笔记
哥廷根大学提出CLIPSeg,能同时作三个分割任务的模型
[After a 12] No record for a whole week
如何组织一场安全、可靠、高效的网络实战攻防演习?
ECCV2022 | RU & Google propose zero-shot object detection with CLIP!
【ts】typescript高阶:映射类型与keyof
CVPR 2022 | 70% memory savings, 2x faster training
LeetCode刷题之第61题
LeetCode刷题之第746题
表情捕捉的指标/图像的无参考质量评价
LeetCode刷题之第55题
七、请求处理——Map、Model类型参数处理原理
八、响应处理——ReturnValueHandler匹配返回值处理器并处理返回值原理解析
电子产品量产工具(1)- 显示系统实现
教你如何封装功能组件和页面组件
[Database and SQL study notes] 9. (T-SQL language) Define variables, advanced queries, process control (conditions, loops, etc.)
基于STM32F407的WIFI通信(使用的是ESP8266模块)
IT系统运行维护方法及策略
CVPR2020 - 自校准卷积
11%的参数就能优于Swin,微软提出快速预训练蒸馏方法TinyViT