C语言程序设计 笔记代码梳理 重制版

news2024/11/15 3:24:31

前言

第1章 C语言的流程

1.C程序经历的六个阶段

  • 编辑(Edit)
  • 预处理(Preprocess)
  • 编译(Compile)
  • 汇编(Assemble)
  • 链接(Link)
  • 执行(Execute)

 2.C语言编写代码到运行

都是先编译,后链接,最后运行。(.c ---> .obj --->.exe)这个过程中注意.c和.obj文件时无法运行的,只有.exe文件才可以运行。

3.C程序流程图


4.计算机基础

计算机的数据在电脑中保存是以 二进制的形式。 数据存放的位置就是它的地址。

bit 是位 是指为0 或者1。 byte 是指字节, 一个字节 = 八个位(1 byte = 8 bit)。

(1) 十进制转 N 进制

万能公式 十进制 转 N进制

 x 一直 除 n(n表示n进制),取余数倒排

例1 十进制转二进制

x = 25(十进制) 转二进制

25 / 2 = 12 ... 1

12 / 2 = 6 ... 0

6 / 2 = 3 ... 0

3 / 2 = 1 ... 1

1 / 2 = 0 ... 1

得到 二进制 11001,对应十进制 25

例2 十进制转八进制

x = 25(十进制) 转八进制

25 / 8 = 3 ... 1

3 / 8 =0 ... 3

得到 八进制 31,对应十进制的 25

例3 十进制十六进制

x = 25(十进制) 转十六进制

25 / 16 =  1 ... 9

1 / 16 =0 ... 1

得到 十六进制 19,对应十进制的 25

特别注意

十六进制中 没有 10 ~ 15的阿拉伯数字,

用的是 a ,b ,c ,d ,e ,f 字母代替 数字10 ,11 ,12 ,13 ,14 ,15

(2) N 进制 转十进制

万能公式 N进制转十进制 

右边第一位开始,第一位的数字,从0次幂开始 ~ i次幂结束,依次递增1。

n进制转成十进制 = x * n^1 +  x * n^2 + x * n^i

例1 二进制转十进制

(二进制)11001

= 1 * 2^4 + 1 * 2^3 + 1 * 2^0 

= 25

例2 八进制转十进制

(八进制)31

= 3 * 8^1 + 1 * 8^0

= 25

例3 十六进制转十进制

(十六进制)19

= 1 * 16^1 + 9 * 16^0

= 25

(3) 原码反码补码

在计算机中,所有的数据都是用机器码存储的,也就是有0 和 1 组成

二进制最高是符号位

0 表示正数

1 表示负数

正数的原码,反码,补码都一样

负数的反码 = 它的原码符号位不变,其他位置取反

负数的补码 = 它的反码 + 1

负数的反码 = 它的补码 - 1

这里我们 用 16 位的short类型来举例,-1512在二进制数据中,补码怎么计算得到

0的反码 ,补码都是0

计算机是以 补码的方式来运算 的

当人类看运算结果的时候,要看他的原码


第2章 数据类型、运算符和表达式

1.变量

(1) 变量的概念

内存中有个存储区域,这个地方的数据可以在同一类型范围内不断变化通过变量名,可以访问这块内存区域,获取里面的值;
变量名的构成:数据类型 变量名 值
C语言中变量声明格式: 数据类型 变量名 = 值

(2) 变量的注意

全局变量
        定义在函数外部的叫全局变量,默认初始化为0

静态变量 static

        带有static开头的关键字叫静态变量,默认初始化为0

局部变量

        声明局部变量以后,要初始化赋值!定义变量时,这个变量使用的内存不一定被清空,它可能是垃圾值,运行程序会异常退出

(3) 变量的作用域

局部变量

        在函数中定义的,有效范围在 定义开始到{ }结束
全局变量

        在函数外定义,有效范围从定义位置开始,到程序结束!


2.标识符

(1)标识符的概念

C语言中,凡是可以自己命名的地方,都叫做标识符 例如:函数名,变量名,数组名,结构体名

(2)C语言标识符的命名规范

1.只由英文大小写字母、数字、或 _(下划线) 组成
2.第一个字符只能是英文字母或下划线,不能数字开头!!!
3.大小写英文字母代表不同的字符
4.不能是C语言的关键字

(3)C语言 32个关键字 

autoshortintlong
floatdoublecharstruct
unionenumtypedefconst
unsignedsignedexternregister
staticvolatilevoidif
elseswitchcasedefault
fordowhilecontinue
breakgotosizeofreturn

数据类型的分类


3.运算符

(1)C语言运算符优先级

优先级

运算符

名称或含义

使用形式

结合方向

说明

1

[]

数组下标

数组名[常量表达式]

左到右

--

()

圆括号

(表达式)/函数名(形参表)

--

.

成员选择(对象)

对象.成员名

--

->

结构体选择(指针)

对象指针->成员名

--

2

-

负号运算符

-表达式

右到左

单目运算符

~

按位取反运算符

~表达式

++

自增运算符

++变量名/变量名++

--

自减运算符

--变量名/变量名--

*

取值运算符

*指针变量

&

取地址运算符

&变量名

!

逻辑非运算符

!表达式

(类型)

强制类型转换

(数据类型)表达式

--

sizeof

长度运算符

sizeof(表达式)

--

3

/

表达式/表达式

左到右

双目运算符

*

表达式*表达式

%

余数(取模)

整型表达式%整型表达式

4

+

表达式+表达式

左到右

双目运算符

-

表达式-表达式

5

<< 

左移

变量<<表达式

左到右

双目运算符

>> 

右移

变量>>表达式

6

大于

表达式>表达式

左到右

双目运算符

>=

大于等于

表达式>=表达式

小于

表达式<表达式

<=

小于等于

表达式<=表达式

7

==

等于

表达式==表达式

左到右

双目运算符

!=

不等于

表达式!= 表达式

8

&

按位与

表达式&表达式

左到右

双目运算符

9

^

按位异或

表达式^表达式

左到右

双目运算符

10

|

按位或

表达式|表达式

左到右

双目运算符

11

&&

逻辑与

表达式&&表达式

左到右

双目运算符

12

||

逻辑或

表达式||表达式

左到右

双目运算符

13

?:

条件运算符

表达式1?

表达式2: 表达式3

右到左

三目运算符

14

=

赋值运算符

变量=表达式

右到左

--

/=

除后赋值

变量/=表达式

--

*=

乘后赋值

变量*=表达式

--

%=

取模后赋值

变量%=表达式

--

+=

加后赋值

变量+=表达式

--

-=

减后赋值

变量-=表达式

--

<<=

左移后赋值

变量<<=表达式

--

>>=

右移后赋值

变量>>=表达式

--

&=

按位与后赋值

变量&=表达式

--

^=

按位异或后赋值

变量^=表达式

--

|=

按位或后赋值

变量|=表达式

--

15

逗号运算符

表达式,表达式,…

左到右

--

​简记版:

括号 > 单目运算符 > 算术运算符 > 移位  > 关系> 位运算符 > 逻辑 > 三目 > 赋值 > 逗号


4.表达式

(1)表达式的定义

表达式是一种有值的语法结构,它由运算符和常量、变量、函数调用返回值等结合而成,每个表达式一定有一个值

 1+1 就是一个表达式,它的值为 2


第 3 章 顺序结构程序设计

1.顺序结构的介绍

什么是顺序结构

顺序结构是按照代码的书写顺序从前到后执行的结构。是C语言最简单、最基本的结构。

顺序结构的特点

1. 自上而下

2. 没有分支

3. 依次执行

#include<stdio.h>

int main()
{
    printf("程序开始了~\n");
    printf("执行语句...\n");
    printf("程序结束\n");"
    
    return 0;
}

2.格式化输出函数 printf()

(1)printf()函数简介

作用:将格式化后的字符串输出(打印东西)

printf("Good job!");

 函数原型

int printf ( const char * format, ... );

 返回值:输出的字符总数

int a = printf("%d",123);
printf("\na = %d",a);

 

(2)常见占位符

%c

字符类型
%d十进制的int类型(或%i)
%ld十进制的long类型
%hd短整型short int
%f单精度浮点类型(float)
%lf双精度浮点类型(double)
%u十进制的无符号的整数
%p指针(地址)
%x十六进制整型(int、long、short)输出
 %o八进制整型(int、long、short)输出
%s字符串
%e科学计数法输出(以指数形式(e表示指数部分)输出实数)
%%输出 %

 格式修饰符

英文字母 l修饰格式字符d、u、o、x时,用于输出long型数据
英文字母 L修饰格式字符f、e、g时,用于输出long double型数据
英文字母 h修饰格式字符d、o、x时,用于输出short型数据

输出格式说明  

%(正整数)d 限定宽度(右对齐)

printf("%10d\n",123);

 

%(负整数)d 限定宽度(左对齐)

printf("%-10d\n",123);

 

 (3)%+d 显示正负号

printf("%+d\n",123);
printf("%+d\n",-567);

 

(4)%.数字f 限定小数位数 

printf("num = %.2f\n",3.1415926);

 

(5)%e 科学计数法(e是浮点类型) 

printf("%le\n",123450.0);

 

(3).转义字符 

 \?在书写连续多个问号时使用,(在某些编译器下 ,会将 “ ??) ” 解析成 三字母词 “ ] ” )
\' 用于表示字符常量 '
 \"用于表示一个字符产内部的双引号
\\用于表示一个反斜杠,防止它被解释为一个转义序列符
\a警告字符,蜂鸣
\b退格符
\f进纸符
\n换行
\r回车
\t水平制表符
\v垂直制表符
\dddddd表示1~3个八进制的数字。如:\031 = 十进制 25
\xdddd表示2个十六进制数字。如:\x20 = 十进制 32

 

3.格式化输入函数 scanf() 


第4章

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2111096.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

热老化的行业应用

热老化应用行业&#xff1a;深度解析与图像呈现 热老化&#xff0c;作为一种重要的材料测试方法&#xff0c;在众多行业中扮演着关键角色。它通过模拟产品在高温环境下的长期使用&#xff0c;提前发现潜在的材料缺陷、性能衰退等问题&#xff0c;从而提高产品的可靠性&#xf…

打造个性化时装购物平台:Spring Boot框架的实践

第1章 绪论 1.1背景及意义 随着社会的快速发展&#xff0c;计算机的影响是全面且深入的。人们生活水平的不断提高&#xff0c;日常生活中人们对时装购物系统方面的要求也在不断提高&#xff0c;喜欢购物的人数更是不断增加&#xff0c;使得时装购物系统的开发成为必需而且紧迫的…

顶刊精析|METI:整合细胞形态与空间转录组学的肿瘤微环境分析框架·24-09-06

小罗碎碎念 本期精读文献&#xff1a;《METI: Deep profiling of tumor ecosystems by integrating cell morphology and spatial transcriptomics》 今天分享的这篇文献于2023年8月25日发表在Nat Commun&#xff0c;目前IF14.7。 作者类型作者姓名单位名称&#xff08;中文&am…

【免费分享】25秋招提前批25秋招信息表

秋招&#xff0c;即秋季校园招聘&#xff0c;通常是指每年秋季&#xff08;大约从9月到11月&#xff09;企业在各大高校举办的招聘活动。这是许多公司为了吸引优秀应届毕业生而进行的招聘活动&#xff0c;也是许多学生毕业后进入职场的重要途径。以下是秋招的一些关键点&#x…

手机TF卡格式化后数据恢复:方法、挑战与预防措施

在现代生活中&#xff0c;‌手机已经成为我们不可或缺的一部分&#xff0c;‌而TF卡&#xff08;‌即MicroSD卡&#xff09;‌作为手机存储的扩展&#xff0c;‌更是承载了我们大量的重要数据。‌然而&#xff0c;‌不慎的格式化操作往往导致数据丢失&#xff0c;‌给用户带来不…

集成电路学习:什么是RAM随机存取存储器

RAM&#xff1a;随机存取存储器 RAM&#xff08;Random Access Memory&#xff0c;随机存取存储器&#xff09;是计算机中用于临时存储数据和程序指令的重要存储设备。以下是关于RAM的详细解析&#xff1a; 一、RAM的定义与功能 RAM是一种内部存储器&#xff0c;与CPU直接交换…

(pycharm)安装python库函数Matplotlib步骤

1.在pycharm下面找到terminal&#xff0c;双击输入pip install Matplotlib&#xff0c;进行Matplotlib库函数的安装。 现在&#xff0c;当你运行pip --version或python.exe -m pip --version时&#xff0c;你应该会看到pip的版本已经更新为24.2。

mhtml图片提取 百度图片下载

如果你需要找一些图片&#xff0c;可以先去百度一下&#xff0c;待相关网页加载完成后&#xff0c;点击保存&#xff0c;即可得到一个mhtml文件。这个文件里的图片会用base64进行存储&#xff0c;只需要找到他们并转化就可以。目前在美篇之类的网站上效果还一般&#xff0c;需要…

如何确定 npm 依赖需要的 Node.js 版本?

目录 1&#xff0c;前言2&#xff0c;问题3&#xff0c;解决4&#xff0c;其他 1&#xff0c;前言 有的 npm 依赖会对 Node.js 的版本有要求&#xff0c;主要的原因有几点&#xff1a; 使用了新特性&#xff0c;npm 包使用了新版 Node.js 引入的新 API 或 JavaScript 的新语法…

etcdctl defrag 剔除、添加etcd节点

零、准备工作 find / -name etcdctl cp /var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/12/fs/usr/local/bin/etcdctl /usr/local/bin/etcdctlalias ec"etcdctl --endpointshttps://127.0.0.1:2379 --cacert /etc/kubernetes/pki/etcd/ca.crt --…

常用网络协议理解

1、概念 OSI网络模型由七层组成&#xff0c;从上到下分别是 其中需要用到的且理解的只有应用层、网络层、传输层 2、常见网络协议 协议的作用&#xff0c;就是用于双方规范数据格式&#xff0c;以及规定数据如何在网络中传输 ①应用层协议&#xff1a; HTTP协议&#xff1…

【苍穹外卖】Day 7 地址簿、下单、定时处理

1 地址簿模块 地址簿实体对象&#xff1a; package com.sky.entity;import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor;import java.io.Serializable;/*** 地址簿*/ Data Builder NoArgsConstructor AllArgsCon…

docker基础知识-docker0网桥

文章目录 示意图Docker 网桥的工作原理Docker 网桥的优势Docker 网桥的局限性自定义网桥网络 Docker 网桥&#xff08;Docker bridge network&#xff09;是 Docker 默认的一种网络模式&#xff0c;它允许 Docker 容器之间通过一个虚拟的交换机进行通信。Docker 网桥网络为容器…

Java并发编程实战 03 | Java线程状态

在本文中&#xff0c;我们将深入探讨 Java 线程的六种状态以及它们之间的转换过程。其实线程状态之间的转换就如同生物生命从诞生、成长到最终死亡的过程一样。也是一个完整的生命周期。 首先我们来看看操作系统中线程的生命周期是如何转换的。 操作系统中的线程状态转换 线…

Web安全之GroovyShell讲解:错误与正确示范,安全问题与解决方案

1. 引言 Groovy 是一门基于 Java 虚拟机&#xff08;JVM&#xff09;的动态语言&#xff0c;而 GroovyShell 是 Groovy 提供的一个灵活强大的脚本执行工具。通过 GroovyShell&#xff0c;开发者可以在运行时动态执行 Groovy 脚本&#xff0c;它的灵活性非常适合那些需要动态编…

本地使用Docker部署Nexus Maven私有仓库工具结合内网穿透实现远程管理

文章目录 前言1. Docker安装Nexus2. 本地访问Nexus3. Linux安装Cpolar4. 配置Nexus界面公网地址5. 远程访问 Nexus界面6. 固定Nexus公网地址7. 固定地址访问Nexus 前言 本文主要介绍在Linux中使用Docker来一键部署Nexus Maven私有仓库工具并结合Cpolar内网穿透实现远程访问Nex…

【Python】应用:pyproj地理计算库应用

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍pyproj地理计算库应用。 无专精则不能成&#xff0c;无涉猎则不能通。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#xff0c;下…

中国传媒业人工智能应用发展图谱2024

易观分析&#xff1a;传媒产业是指以传播各类信息、知识为核心&#xff0c;通过多种媒介形式进行内容生产、发布和分发的综合性产业。技术的进步和应用对于传媒产业发展变革起到了核心驱动力的作用&#xff0c;2022年生成式AI进入应用爆发期&#xff0c;不仅带动了人工智能产业…

APP中断测试知多少

中断测试有助于移动测试人员识别与系统或用户行为相关的潜在风险&#xff0c;以便在发生流量干扰时能够识别出可能导致意想不到或不期望结果的问题。 让我们深入探讨中断测试的细节及其手动或程序化实现方式。本文还介绍了用于自动化测试过程、加快测试执行速度并向用户提供高…

士兰微 SC32F5432 通过配置寄存器方式 将管脚配成开漏输出模式和TTL输入模式

目录 前言&#xff1a; 士兰微电子介绍 士兰微 SC32F5432介绍 士兰微 SC32F5432 通过配置寄存器方式 将管脚配成开漏输出模式和TTL输入模式 开漏输出模式 TTL输入模式 前言&#xff1a; 下面是对我在工作时公司所使用的一款国产芯片&#xff08;士兰微 SC32F5432&#x…