当前位置:网站首页>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,如果我的文章能对您有帮助的话,麻烦各位观众姥爷们点赞、收藏、关注我吧!如果你对我的文章有任何问题或者意见,欢迎在评论区给我留言。后期重点注释和知识点将持续更新......
边栏推荐
- 吞吐?带宽?傻傻分不清楚
- 「实用」运维新手一定不能错过的17 个技巧
- 电子产品量产工具(2)- 输入系统实现
- 【数据库和SQL学习笔记】10.(T-SQL语言)函数、存储过程、触发器
- 《基于机器视觉的输电线路交叉点在线测量方法及技术方案》论文笔记
- [Kaggle project actual combat record] Steps and ideas sharing of a picture classification project - taking leaf classification as an example (using Pytorch)
- LeetCode刷题之第24题
- Tensorflow2 与 Pytorch 在张量Tensor基础操作方面的对比整理汇总
- 栈的应用——力扣 20.有效的括号
- 哥廷根大学提出CLIPSeg,能同时作三个分割任务的模型
猜你喜欢
11%的参数就能优于Swin,微软提出快速预训练蒸馏方法TinyViT
【Pytorch学习笔记】8.训练类别不均衡数据时,如何使用WeightedRandomSampler(权重采样器)
深度学习系列(二)优化器 (Optimization)
LeetCode刷题之第24题
LeetCode刷题之第55题
ECCV2022 | RU & Google propose zero-shot object detection with CLIP!
哥廷根大学提出CLIPSeg,能同时作三个分割任务的模型
物联网-广域网技术之NB-IoT
Jupyter notebook选择不同的Anaconda环境作为内核运行
CVPR 2020 - 频谱正则化
随机推荐
二、自动配置之底层注解
MSRA proposes extreme masking model ExtreMA for learning instances and distributed visual representations
《基于机器视觉测量系统的工业在线检测研究》论文笔记
初识机器学习
【ts】typescript高阶:键值类型及type与interface区别
1008 数组元素循环右移问题 (20 分)
【ts】typescript高阶:条件类型与infer
[Pytorch study notes] 9. How to evaluate the classification results of the classifier - using confusion matrix, F1-score, ROC curve, PR curve, etc. (taking Softmax binary classification as an example)
【ts】typescript高阶:分布式条件类型
TinyFlashDB:一种超轻量的可纠错的通用单片机flash存储方案
【shell编程】第三章:函数
【数据库和SQL学习笔记】5.SELECT查询3:多表查询、连接查询
物联网-广域网技术之NB-IoT
哥廷根大学提出CLIPSeg,能同时作三个分割任务的模型
记我的第一篇CCF-A会议论文|在经历六次被拒之后,我的论文终于中啦,耶!
关于使用QML的MediaPlayer实现视频和音频的播放时遇到的一些坑
PoE视频监控解决方案
网络通信及相关函数介绍
Tensorflow steps on the pit notes and records various errors and solutions
1004 成绩排名 (20 分)