c语言基础篇A

A1.程序和程序设计语言

  1. 程序
  • 程序=算法+数据结构+程序设计方法+语言工具和环境
  • 数据结构:数据的类型和数据的组织形式
  • 算法:对数据操作的方法和步骤
  1. 程序设计语言的种类
  • 第一代语言:机器语言
  • 第二代语言:汇编语言
  • 第三代语言:高级语言

——面向过程语言

——面向对象语言

  • 第四代语言:非过程化语言(mysql)
  1. 语言处理系统
  • 编译型(c,java(广义))
  • 解释型(python)
  • 混合型

A2.算法

  1. 算法的概念
  • 为解决一个问题而此采取的方法和步骤,就称为算法
  • 计算机算法两大类
    • 数值计算算法:科学计算,少量的输入和输出,复杂的运算
    • 非数值计算算法:数值管理,大量的输入和输出,简单的算术和逻辑运算
  1. 算法的特性
  • 有穷性
  • 确定性
  • 有效性
  • 有零或多个输入
  • 有一个或多个输出
  1. 算法的描述方法
  • 自然语言
  • 传统的流程图
  • N-S图
  • 伪代码:用介于自然语言和计算机语言之间的文字和符号来描述算法
  • 计算机语言

A3.程序设计的过程

  1. 分析问题
  2. 确定数学模型
  3. 算法设计
  4. 程序开发
  5. 运行和测试
  • 结构化程序的结构简单清晰,可读性好,模块化强,描述符合人们解决复杂问题的普遍规律,在应用软件开发中发挥了在应用软件中发挥了重要的作用
  • 在软件设计和实现过程中,提倡采用自顶而下、逐步细化的模块程序设计方法
  • 强调采用单入口,单出口(高内聚,低耦合)的三种基本控制结构,避免使用GOTO语句。

A4.C语言的发展、标准及特点

  1. c语言的发展及标准
  • c语言是一种通用的、面向过程的计算机程序设计语言
  • 1972年里奇在贝尔电话实验室设计开发了c语言
  • 为了全面推广,组成了c语言标准委员会
  • 1989,诞生了第一个完备的c语言“c89”
  • 2020,最新的c语言标准为18年发布的“c18”
  1. c语言的特点
  • 语言简洁
  • 运算符丰富
  • 数据类型丰富
  • 具有结构化的控制语句
  • 可直接访问物理地址
  • 生成目标代码质量高,程序执行效率高
  • 程序可移植性好
  • 语法限制不太严格,程序设计自由度大

A5.C语言程序的结构

  1. 源程序文件1
  2. 愿程序文件n
  3. 源程序文件2
  • 预处理命令
  • 数据声明
  • 函数1
    • 函数首部
    • 函数体
      • 数据声明
      • 执行语句
  • 函数n
  1. 一个c语言源程序可以由一个或多个源文件组成
  2. 每个源文件可由一个或多个函数组成
  3. 一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数
  4. 源程序中可以有预处理命令,预处理命令通常应放在源程序的最前面
  5. 每一个语句都必须以分号结尾
  6. 标识符,关键字之间必须以空格符间隔
  • #include 预处理命令
  • int main()
  • {
  • printf('Hello Wrold!");
  • return 0;
  • }

A6.常量、变量与数据类型

  1. 在程序运行过程中,其值不能被改变的量称为常量
  2. 直接常量
    • 整形常量:100,125,-100.0
      • 八进制整数:以0开头
      • 十六进制:以0X或0x开头
    • 实型常量:3.14,0.125,-3.789 (浮点型)
      • 小数形式:3.14,0.125,-3.789
      • 指数形式:3e-3
      • 字母e或E之前必须有数字,e后面的指数必须有整数
    • 字符常量:‘a','b','ab'
      • 用单引号包含的一个字符
      • 只能包含一个字符,不能是字符串
      • 字符可以是任意字符,后不能参与计算
    • 字符串常量:“a”,“ab”
      • 是一对双引号括起来的字符序列
      • c规定以字符‘\0‘结束标志
    • 转义字符
      • \n 换行
      • \t 横向跳格 (一次跳8位包括已输出位,超出8调到下一个制表位)
      • \r 回车
      • \\ 反斜杠
      • \‘ 单引号
      • \“ 双引号
      • \b 退格
      • \ddd ddd表示1到3位八进制数
      • \xhh hh表示1到2位十六进制数
  1. 符号常量
  • 格式:#define 标识符 常量
  • 例如:#define PI 3.14
  • #define不是c语句,是一个预编译命令,末尾无分号
  • 符号常量名用大写,变量名用小写。
  1. 变量
  • 变量代表内存中具有特定属性的一个存储单元,它用来存放数据,这就是变量的值,在程序运行期间,这些值是可以变化的
  • 要区分变量名和变量值是不同的两个概念
  • 变量命名规则
    • c语言规定标识符只能由字母,数字和下划线3钟组成,且第一个字符必须为字母或下划线,区分大小写字母
    • 合法的标识符
      • sum,average,_total,Class,day,BASIC,li_ling
    • 不合法的标识符
      • M.D.John,¥123,#33,3D64,a>b
  • 整形变量
    • int i;(定义)
    • i=10;(赋值)
    • 变量类型
      • 基本型
        • int(类型说明符)
        • 2字节(长度)
        • -32768~32767(数的范围)
      • 短整型
        • short 2字节 2 15次方~ 2 15次方-1
      • 长整型
        • long 4字节 -2 31次方~ 2 31次方-1
      • 无符号整型
        • unsigned 2字节 0~65535
      • 无符号短整型
        • unsigned short 2字节 0~65535
      • 无符号长整型
        • unsigned long 4字节 0~ 2 32次方-1
  • 实型变量
    • double d;
    • d=1.23;
      • float(类型)
        • 32(位数)
        • 10 负37次方 ~ 10 35次方
        • 6~7位(有效位)
      • double 64 10 负307次方 ~ 10 308次方 15~16位
      • long double 128 10 负4931次方~ 10 4932次方 18~19位
  • 字符变量
    • char c;
    • c=‘a’;
    • 字符类型变量用来存放字符常量,注意只能放一个字符,一个字符变量在内存只占一个字节

A7.表达式

  1. 运算符的类型

  • 圆括号【()】
  • 下标运算符【【】】
  • 指向结构体成员运算符【->】
  • 结构体成员运算符【.】
  • 逻辑非运算符【!】
  • 按位取反运算符【~】
  • 自增自减运算符【++】【--】
  • 负号运算符【-】
  • 类型转换运算符【(类型}】
  • 指针运算符和取地址运算符【*】【&】
  • 长度运算符【sizeof】
  • 乘法运算符【*】
  • 除法运算符【/】
  • 加法运算符【+】
  • 减法运算符【-】
  • 左移动运算符【
  • 右移动运算符【>>】
  • 关系运算符【】【+】
  • 等于运算符【==】
  • 不等于运算符【!=】
  • 换位与运算符【&】
  • 换位异或运算符【^】
  • 按位或运算符【|】
  • 逻辑与运算符【&&】
  • 逻辑或运算符【||】
  • 条件运算符
    • 【=】【/=】【*=】【%=】【+=】【-=】【>=】【&=】【^=】【|=】
  • 逗号运算符【,】
  1. 算数运算符和算术表达式

  • 算术运算符
  • + 加法运算符,或正直运算符
  • - 减法运算符,或负值运算符
  • * 乘法运算符
  • / 除法运算符
  • % 求余运算符,%两侧均应为整型数据
  • 算数运算符的结合方向为左至右
    • 自加,自减运算符
      • 作用是使变量的值加(减)1
      • ++i,--i 在使用i之前,先使i的值加(减)1
      • i++,i-- 在使用i之前,使i的值加(减)1
      • j=++i 如果i为3,则i的值加(减)1
      • j=i++ 先将i的值赋予j,再加(减)1
    • C算数表达式
      • 用算数运算符和括号将运算对象(也称操作数)连接起来的,符合c语言规则的式子,称为C算数表达式。运算对象包括常量,变量,函数
        • a+b
        • (a*2)
        • (x+r)*8-(a+b)7
        • ++i
        • sin(x)+sin(y)
        • (++i)-(j++)+(k--)
  1. 强制类型转换运算符

  • 作用:将一个表达式转换成所需类型
  • 一般形式:(类型名)(表达式)
    • (double)a 将a转换成double类型
    • (int)(x+y) 将x+y的值
    • (float)(5%3) 将5%3的值换成float型
  1. 赋值运算符和赋值表达式

  • 简单赋值运算符
    • 格式:变量=表达式
    • 赋值运算符具有右结合性
    • 赋值运算符的优先级在所有运算符中排倒数第二
    • 例如a=5
  • 复合赋值运算符
    • x=x+n 等价于x+=n
    • a+=5 等价于a=a+5
    • x*=y+7 等价于x=x*(y+7)
    • r%=p 等价于r=r%p
  • 赋值表达式
    • a=5
    • b=(a=5)
    • c=10+(a=8)
    • a=(b=10)/(c=2)
      • 注意在变量说明中,不允许连续给多个变量赋初值,如下述
        • int a=b=c=5
        • int a=5,b=5,c=5正确
  • 赋值过程中的类型转换
    • 实型数据赋给整型变量,先对实数取整后赋予整型变量
      • 例如:i为整型变量,执行“i=3.56”后i的值为3
    • 将一个double型数据赋给float变量时,截取其前面7位有效数字存放到float变量中。注意数值范围不能溢出
    • 将一个占字节多的整形数据赋给一个占字节少的整型变量或字符变量只将其低字节原封不动地送到该变量(既发生截断)
  1. 逗号运算符和逗号表达式

  • 使用逗号把两个表达式连接起来组成一个表达式,称为逗号表达式
  • 其一般形式为:表达式1,表达式2
  • 逗号运算符的优先级在所有运算符中是最低的
  • 其求值过程是分别求两个表达式的值,并以表达式2的值作为整个逗号表达式的值
    • 例如 a=2,b=4,c=6,x,y;
    • y=(x=a+b),(b+c)
  1. 程序练习

  • 通过计算,将给出的五位正整数的个位,十位,百位,千位,万位分别拆分出来并输入,假设该正整数为12345
    • 从右开始拆分输入
      #include
      int main()
      {
      int x=12345;
      int a1,a2,a3,a4,a5;
      a5=x%10;
      a4=x/10%10;
      a3=x/100%10;
      a2=x/1000%10;
      a1=x/10000%10;
      printf("%d%d%d%d%%d,a1,a2,a3,a4,a5);
      return 0;
      }

  • 从左开始拆分输入
    • #include
      int main()
      {
      int x=12345;
      int a1,a2,a3,a4,a5;
      a1=x/10000;
      a2=x%10000/1000;
      a3=x%1000/100;
      a4=x%100/10;
      a5=x%10;
      printf("%d%d%d%d%%d,a1,a2,a3,a4,a5);
      return 0;
      }

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

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

相关文章

coap:使用californium建立coap server和client的简单示例

【pom.xml】 <dependency><groupId>org.eclipse.californium</groupId><artifactId>californium-core</artifactId><version>2.0.0-M7</version> </dependency> <dependency><groupId>org.eclipse.californium&l…

zabbix-agent,zabbix_agentd和zabbix-agent2,zabbix_agent2的区别

所以带横杠- 的是应用程序名&#xff0c;比如zabbix-server和zabbix-agent 带下划线_ 的是应用程序所对应的进程名&#xff0c;zabbix_server和zabbix_agentd 从zabbix5版本开始&#xff0c;应用程序zabbix-agent分为zabbix-agent和zabbix-agent2&#xff0c;zabbix-agent2是…

【第13章】SpringBoot实战篇之项目部署

文章目录 前言一、准备1. 引入插件2. 打包3. 启动4. 后台启动 二、跳过测试模块三、外置配置文件1.引入插件2.忽略配置文件3. 外置配置文件 总结 前言 项目部署需要把项目部署到Linux服务器上&#xff0c;SpringBoot项目通过Maven打包即可快速生成可运行Jar包程序。 一、准备 …

Comfyui容器化部署与简介

目前使用 Stable Diffusion 进行创作的工具主要有两个&#xff1a;Stable Diffusion WebUI 和 ComfyUI。本文重点介绍ComfyUI的部署使用。 ComfyUI 可定制性很强&#xff0c;可以让创作者搞出各种新奇的玩意&#xff0c;通过工作流的方式&#xff0c;也可以实现更高的自动化水平…

Kimichat使用案例010:快速识别出图片中的表格保存到Excel

文章目录 一、介绍二、图片信息三、输入内容四、输出内容五、markdown提示词六、markdown输出一、介绍 如果有一张图片格式的表格,想要快速复制到Excel表格中,那么一般要借助于OCR工具。之前试过不少在线OCR工具,识别效果差强人意。其实,kimichat就可以非常好的完成这个任务…

文件怎么去重?5个技巧,教你删除重复文件!

一般来说&#xff0c;在处理大量文件时&#xff0c;你可能会遇到重复的类似文件。这些文件占据了电脑上不必要的磁盘空间&#xff0c;导致系统性能下降。而这些文件可以是不同类型的&#xff0c;如照片、视频、音频、存档、文档等。正因如此&#xff0c;您需要通过文件去重来删…

C语言----寻找100~999范围内的质数--素数

//寻找100~999之间的素数//#include <stdio.h> //#include <math.h> int isprime(int num) {if (num % 2 0)//排除偶数{return 0;}for (int j 3; j < sqrt(num); j 2)//从3开始,因为已经排除2了。2是最小的素数/*使用一个for循环来检查奇数因子&#xff0c;因…

iOS不改变frame,能写出一个位移动画

在iOS开发中&#xff0c;如果不想通过直接修改视图的frame属性来实现位移动画&#xff0c;有十多种方法&#xff0c;总结如下&#xff1a; 方法一&#xff1a;使用CABasicAnimation 可以使用Core Animation的CABasicAnimation类或UIView动画块来实现。下面分别展示这两种方法…

质量小议38 -- 60岁退休的由来

总是要有个标准&#xff0c;质量更是如些。 标准不是固定不变的&#xff0c;与时俱进。 关键词&#xff1a;当时的人均寿命&#xff1b;渐进式 60岁退休。 22大学毕业开始工作&#xff08;当然可能会更早&#xff09;&#xff0c;到60岁退休&#xff0c;要工作38年。 …

C++ 史上首次超越 C,跃至榜二

TIOBE 公布了 2024 年 6 月的编程语言排行榜。 C在本月的TIOBE指数中成功超越了C&#xff0c;成为新的第二名。它是一种被广泛应用于嵌入式系统、游戏开发和金融交易软件等领域的编程语言。这次的排名是C在TIOBE指数中的历史最高位&#xff0c;同时也是C语言的历史最低位。 T…

深入解析JVM内部结构及GC机制的实战应用

一、JVM内部结构概述 JVM&#xff08;jdk1.8&#xff09;的内部结构主要包括以下几个部分&#xff1a; 类加载子系统&#xff08;Class Loader Subsystem&#xff09;运行时数据区&#xff08;Runtime Data Area&#xff09;执行引擎&#xff08;Execution Engine&#xff09…

React+TS前台项目实战(二)-- 路由配置 + 组件懒加载 + Error Boundary使用

文章目录 前言一、路由配置和懒加载lazy的使用二、TS版本Error Boundary组件封装三、在layout组件中使用Suspense组件和错误边界组件总结 前言 本文将详细介绍项目中的页面路由配置和异步组件懒加载处理&#xff0c;以提高用户体验&#xff0c;实现过渡效果。 一、路由配置和懒…

(2024,自监督 ViT,全监督 ViT,损失可视化,MAE,RC-MAE,自蒸馏,EMA)可视化自监督 ViT 的损失景观

Visualizing the loss landscape of Self-supervised Vision Transformer 公和众和号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0 摘要 2 基础&#xff1a;MAE 和 RC-MAE 3 损失景观 3.1 分…

QT C++(QT控件 QPushButton,QRadioButton,QCheckBox)

文章目录 1. QPushButton 普通按钮2. QRadioButton 单选按钮3. QCheckBox 复选按钮 1. QPushButton 普通按钮 QPushButton中的重要属性 text&#xff1a;按钮中的文本icon&#xff1a;按钮的图标iconSize&#xff1a;按钮中图标的尺寸shortCut&#xff1a;按钮对应的快捷键&a…

Unity3d使用3D WebView for Windows and macOS打开全景网页(720云)操作问题记录

问题描述 使用Unity3d内嵌网页的形式打开720云中的全景图这个功能&#xff0c;使用的是3D WebView for Windows and macOS插件&#xff0c;720云的全景图在浏览器上的操作是滑动鼠标滚轮推远/拉近全景图&#xff0c;鼠标左键拖拽网页可以旋转全景图内容。网页的打开过程是正常…

RK3588 Android13自定义一个按键实现长按短按

一、kernel修改 diff --git a/arch/arm64/boot/dts/rockchip/rk3588-nvr-demo.dtsi b/arch/arm64/boot/dts/rockchip/rk3588-nvr-demo.dtsi index 5aae5c613825..4cc1223f9cbf 100755 --- a/arch/arm64/boot/dts/rockchip/rk3588-nvr-demo.dtsib/arch/arm64/boot/dts/rockchip…

IDEA创建Mybatis项目

IDEA创建Mybatis项目 第一步&#xff1a;创建库表 -- 创建数据库 create database mybatis_db;-- 使用数据库 use mybatis_db;-- 创建user表 CREATE TABLE user (id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(50) NOT NULL,password VARCHAR(50) NOT NULL,email VARC…

transformer中对于QKV的个人理解

目录 1、向量点乘 2、相似度计算举例 3、QKV分析 4、整体流程 (1) 首先从词向量到Q、K、V (2) 计算Q*&#xff08;K的转置&#xff09;&#xff0c;并归一化之后进行softmax (3) 使用刚得到的权重矩阵&#xff0c;与V相乘&#xff0c;计算加权求和。 5、多头注意力 上面…

记一次postgresql拼接函数string_agg() 和row_number() 使用

PG两个函数使用需求和简单介绍 需求背景介绍第一个需求背景是这样的需求升级一下接下来讲讲STRING_AGG()基本语法排序 然后我们再说说ROW_NUMBER()基本语法使用 row_number() over (partition by) 进行分组统计使用 row_num限定每组数量 需求背景介绍 第一个需求背景是这样的 …

【MATLAB源码-第222期】基于matlab的改进蚁群算法三维栅格地图路径规划,加入精英蚁群策略。包括起点终点,障碍物,着火点,楼梯。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 蚁群算法&#xff08;Ant Colony Optimization&#xff0c;ACO&#xff09;是一种通过模拟蚂蚁觅食行为的启发式优化算法。它由意大利学者Marco Dorigo在20世纪90年代初提出&#xff0c;最初用于解决旅行商问题&#xff08;T…