当前位置:网站首页>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,如果我的文章能对您有帮助的话,麻烦各位观众姥爷们点赞、收藏、关注我吧!如果你对我的文章有任何问题或者意见,欢迎在评论区给我留言。后期重点注释和知识点将持续更新......
边栏推荐
猜你喜欢
【数据库和SQL学习笔记】7.SQL中的插入(INSERT)、删除(DELETE)、更新(UPDATE)
哥廷根大学提出CLIPSeg,能同时作三个分割任务的模型
[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)
[After a 12] No record for a whole week
MySQL主从复制—有手就能学会的MySQL集群搭建教程
WCH系列芯片CoreMark跑分
Detailed explanation of BroadCast Receiver (broadcast)
PoE视频监控解决方案
OSPF网络类型
面向小白的深度学习代码库,一行代码实现30+中attention机制。
随机推荐
LeetCode刷题之第33题
【ts】typescript高阶:键值类型及type与interface区别
LeetCode刷题之第530题
关于存储IOPS你必须了解的概念
电子产品量产工具(4)-UI系统实现
LeetCode刷题之第416题
MSRA proposes extreme masking model ExtreMA for learning instances and distributed visual representations
【数据库和SQL学习笔记】6.SELECT查询4:嵌套查询、对查询结果进行操作
IJCAI 2022|边界引导的伪装目标检测模型BGNet
LeetCode刷题之第61题
深度学习系列(二)优化器 (Optimization)
物联网-广域网技术之NB-IoT
深度学习系列(一)简介、线性回归与成本函数
神经网络也能像人类利用外围视觉一样观察图像
CVPR 2022 | 70% memory savings, 2x faster training
LeetCode刷题之第23题
九、响应处理——内容协商底层原理
数控直流电源
CVPR 2020 - 频谱正则化
【Pytorch学习笔记】10.如何快速创建一个自己的Dataset数据集对象(继承Dataset类并重写对应方法)