c语言基础篇C

C1.关系运算符

  • < (小于)
  • > (大于)
  • >= (大于等于)
  • == (等于)
  • != (不等于)
  • 关系表达式的值是一个逻辑值,即“真”或“假”
  • 关系运算符优先级低于算数运算符

关系表达式

  • a>b
  • a+b>b+c
  • (a=3)>(b=5)
  • 'a'
  • (a>b)>(b
  • a!=(c==d)

逻辑运算符

  • !(逻辑非)
  • && (逻辑与)
    • 当a和b的值都是非0时,结果为1,否则为0
  • || (逻辑或)
    • 当a和b的值都是0时,结果为0,否则为1
  • 逻辑表达式的值应该是一个逻辑量“真”或“假”
    • 例如
      • a&&b 若a,b都为真,则为真

逻辑表达式

  • 例如
    • a=4,b=5
    • !a 0
    • a&&b 1
    • a||b 1
    • !a||b 1
    • 4&&0||2 1
  1. 在逻辑表达式的求解中,并不是所有的逻辑运算符都要被执行
  • a&&b&&c只要a为真时,才需要判断b的值,只有a和b都为真时,才需要判断c的值
  • a||b||c只要a为真时,就不必判断b和c的值,就不必判断b和c的值,只有a为假,才判断b。a和b都为假才判断c
    • 例如
      • (m=a>b)&&(n=c>d)
  • 当a=1.b=2.c=3,d=4,m和n的原值为1,m=1 n=0

条件运算符和条件表达式

  • 一般形式为
    • 表达式1?表达式2;表达式3
      • 其求值规则为:如果表达式1的值为真,则以表达式2的值,否则以表达式2的值作为整个条件表达式的值
  • 条件的运算符的运算优先级低于关系运算符和算术运算符,但高于赋值运算符
  • 条件运算符?和:是一对运算符,不能分开单独使用
  • 条件运算符的结合方向是自右至左

if(表达式)语句

  • if语句的嵌套
    • if(表达式1) b
      • else 语句2
    • else
      • if(表达式3)语句3
      • else 语句4
  • 注意:else总是与它前面最近的if配对

C2.多分支语句

      • if(表达式1)语句1
      • else if(表达式2)语句2
      • else if(表达式3)语句3
      • -- -- - -
      • else if(表达式m)语句m
      • else 语句n
    • Switch语句
      • switch(表达式)
      • {
      • case 常量表达式1:语句1
      • case常量表达式2:语句2
      • -----
      • case常量表达式n:语句n
      • default:语句n+1
      • }
    • 每一个case的常量表达式的值必须交互相不相同
    • 各个case和default的出现次序不影响执行结果
    • 在执行swich语句时,根据switch后面表达式的值找到匹配的入口表扣,就从此标号开始执行下去,不在进行判断。应该在执行一个case分支后,可以用一个break语句来终止switch语句的执行
    • 多个可以共用一组执行语句

do while循环

  • 一般形式
  • do
  • 循环体语句
  • while(表达式)

for循环

  • 一般形式
  • for(表达式1;表达式2;表达式3)语句
  • for语句最简单的形式
  • for(循环变量赋初值;循环条件;循环变量增值)
  • for(i=1;i
    • 相当于
      • i=1;
      • while(i
      • {
      • sum=sum+i;
      • i++
  • for循环中的“表达式1(循环变量赋初值)”“表达式2(循环条件)”和”表达式3(循环变量增量)“都是选项,即可以缺省,“;”不能缺省
  • 省略了“表达式1(循环变量赋初值)”表示不对循环控制变量赋初值
  • 省略了“表达式2(循环条件)”,则不做其他处理时便成为死循环
  • 省略了“表达式3(循环变量赋初值)”,则不对循环控制变量进行操作,这时在语句提中加入修改循环控制变量的语句
  • 3个表达式都可以省略
  • 表达式1可以是设置循环变量的初值的赋值表达式,也可以是其他表达式
  • 表达式1和表达式3可以是一个简单表达式也可以是逗号表达式
  • 表达式2一般是关系表达式或逻辑表达式,但可以是数值表达式或字符表达式,只要值非零,就执行循环体
  1. 循环的嵌套
  • 一个循环体内又包含另一个完整的循环结构称为循环的嵌套。内嵌的循环中还可以嵌套循环,这就叫多层循环
  1. break语句可以用来从循环体内跳出循环体,即提前结束循环,接着执行下面的语句,或者用来跳出switch语句
  • 一般形式:break;

C3.一维数组的定义格式

  • 类型说明符 数组名【常量表示式】
  • int a【10】;
  • 它表示定义了一个整形数组,数组名为a,此数组为10个元素
  • float b【10】,c【20】
  • 它表示定义了实型数组b,有10个元素,实型数组c,有20元素
    • 数组名定名规则和变量名相同,遵循比较师傅定名规则,不能与其它变量名相同。
    • 在定义数组时,需要指定数组中元素的个数,方括弧中的常量表示,用来表示元素的个数,即数组长度
    • 常量表示中可以包括常量和符号常量,但不能包含变量。但可以包含变量
    • 允许在同一个类型说明中,说明多个数组和多个变量
      • 常见错误
      • float a【0】 数组大小0没有意义
      • int b(2) 不能使用圆括号
      • int k=10,a【k】 不能用变量说明数组大小

C4.数组元素的引用方式

  • 数组元素的引用方式
  • 数组名【下标】
    • 例如
      • a【0】,a【2*3】,a【i+j】
        • 注意:定义数组和引用数组元素区别
      • int a【10】
      • t=a【6】

C5.一维数组的初始化

  1. 在定义数组时对数组元素赋以初值
    • 例如
      • int a【10】={0,1,2,3,4,5,6,7,8,8};
        • 经过上面的定义和初始化之后
          • a【0】=0,a【1】=1,a【2】=2,---- a【9】=9
  1. 可以只给一部分元素赋值
    • 例如
      • int a【10】={0,1,2,3,4,5}
        • 定义a数组有10个元素,但是花括号内只提供5个初值。则前面5个元素付赋初值,后5个元素0
  1. 如果想使一个数组中全部元素值为0,可以写成:
      • int a[10]={0};
    • 如果给十个元素全部赋1值,只能写
      • int a【10】={1,1,1,1,1,---,1}
        • 而不能写成 int a【10】=1
  1. 在对全部数组元素赋初值时,由于数据的个数已经确定,因此可以不指定数组长度
    • 例如
      • int a【5】={1,2,3,4,5}
        • 也可以写成
          • int a【】={1.2.3.4.5}
            • int a【10]={1,2,3,4,5}只能初始化前5个元素,后5个元素为0

C6.二维数组的定义

  • 二维数组定义的一般形式为
    • 类型说明符 数组名【常量表示式】【常量表达式】
      • 例如
        • int a【3】【4】
  • 表示定义了一个3行4列的数组,数组名为a,数组元素为3x4个整形变量
    • 例如
      • 定义a为3x4的数列,b为5x10的数列
        • 不能写成
          • float a【3,4】,b【5,10】
  • c语言中,二维数组中元素排列是以行为主序排列的
    • 例如
      • int a【3】【4】
        • 错误
          • a【3】【4】=4

A5,二维数组的初始化

  1. 分行给二维数组赋初值
  2. 可以将所有数据写在一个花括号内,按数组排列的顺序对各元素赋初值
    • 例如
      • int a【3】【4】={1,---12} 中间无花括号
  1. 可以对部分元素赋初值,未赋初值的元素自动取0值
  2. 如果对全部元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不省

C7.字符数组

  1. 字符数组的定义
    • 类型说明符 字符名【常量表示式】【常量表达式】
  • 对字符数组初始化,可逐个字符赋给数组中各元素,其余的元素自动定为空字符
  • 如果提供的初值个位与预定的数组长度相同,在定义时可以省略数组长度,系统会自动根据初值个数确定数组长度
  1. 字符数组的初始化
  • c语言规定了一个字符结束标志‘\0’
    • 例如
      • 定义了如下的字符数组
        • char c【】={‘c program’};
        • char c【】=”c program”;
          • 字符串结束多一个‘\0’
  1. 字符数组的输入和输出
  • 字符数组的输入输出有两种方法
    • 逐个字符输入输出,用格式符“%c”
    • 将整个字符串一次输入或输出,用格式符“%s”
  • 输出字符不包括结束符'\0'
  • 用“%s”格式符输出字符串时候,printf函数中的输出项是字符数组名,而不是数组元素名
  • 如果一个字符数组中包含一个以上‘\0’,则遇第一个'\0’时输出就结束了
  • 可以用scanf函数输入一个字符串
  • 如果用scanf函数输出多个字符串,则在输入时以空格分隔
  • get函数
    • 一般形式:gets(字符数组)
    • 作用从终端输入一个字符串到字符数组,并且得到一个函数值
  • puts函数
    • 一般形式:puts(字符数组)
    • 作用是将一个字符串(以‘\0’结束的字符序列)输出到终端
      • 用puts函数输出的字符串可以包含转义字符
  1. 字符串处理函数
  • strcat(字符数组1,字符数组2)
    • 其一般形式:strcat(字符数组1,字符数组2)
    • 连接两个字符数组中的字符串把字符串2接到字符串1的后面
  • strcpy(字符数组1,,字符串2)
    • 其一般形式为:strcpy(字符数组1,字符串2)
    • 将字符串2复制到字符数组1中去
      • 字符数组1必须定义的足够大,以便容纳被复制的字符串。字符数组1的长度不应该小于第二个数
      • 字符数组1必须写成数组名形式(如str1),字符串2可以是字符数组名,也可以是字符串常量。
      • 复制时连同字符串后面的‘\0’一起复制到字符数组1中
      • 可以用strncpy函数将字符串2中前面若干个字符复制到字符数组1中去(str1,str2,2);
      • 不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组
      • 可以用strcpy函数将一个字符串复制到另一个字符数组中去
  • strcmp(字符串1,字符串2)
    • 比较字符串1和字符串2.如果字符串1=字符串2,函数值为0
    • 如果字符串1>字符串2,则函数值为一个正整数
    • 如果字符串1
    • strlen(字符数组)
    • 其一般形式:strlen(字符数组)
    • strlen是测试字符串长度的函数。函数的值为字符串中的实际长度(不包括‘\0’)

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

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

相关文章

2024年江苏三支一扶公告已出,招440人!

本次江苏省将招募440名高校毕业生&#xff0c;安排到乡镇&#xff08;街道&#xff09;从事支教、支农、支医、帮扶乡村振兴、水利、就业和社会保障服务工作&#xff08;以下简称“三支一扶”计划&#xff09;&#xff0c;服务期限为2年。 招募程序 招募工作按照个人报名、资格…

数据结构之线性表(3)

数据结构之线性表&#xff08;3&#xff09; 上文我们了解了线性表的静动态存储的相关操作&#xff0c;此篇我们对线性表中链表的相关操作探讨。 在进行链表的相关操作时&#xff0c;我们先来理解单链表是什么&#xff1f; 1.链表的概念及结构 链表是一种物理存储结构上非连…

yudao-ui-admin-vue3 nginx配置

本文记录一个yudao-ui-admin-vue3 nginx配置信息 一、安装依赖 npm install 二、编译打包 npm run build:prod三、修改.env.prod文件 # 请求路径 VITE_BASE_URL=http://IP地址/admin-api四、 nginx配置 server {listen 80;server_name localhost

【UCOS-III】中断管理

引言&#xff1a;中断是学习 C/OS-III 的过程中一个重要的部分&#xff0c;任务切换、系统时钟节拍等等&#xff0c;都是利用 中断来完成的&#xff0c;并且&#xff0c;既然是 RTOS&#xff0c;那么对中断的响应也应该是十分迅速的。C/OS-III 有一 套中断管理的方法&#xff0…

echarts组件x轴坐标显示不全解决方法

1.旋转: 修改前: option {xAxis: {type: category,data: [Mon, Tue, Wed, Thu, Fri, Sat, Sun,Mon, Tue, Wed, Thu, Fri, Sat, Sun,Mon, Tue, Wed, Thu, Fri, Sat, Sun]},yAxis: {type: value},series: [{data: [120, 200, 150, 80, 70, 110, 130,120, 200, 150, 80, 70, 1…

每日一练——删除有序数组中的重复项

26. 删除有序数组中的重复项 - 力扣&#xff08;LeetCode&#xff09; int removeDuplicates(int* nums, int numsSize) {int i 0;int j 0;while(numsSize--){if(nums[i] ! nums[j]){i;nums[i] nums[j];j;}else j;}return i 1; }

Golang | Leetcode Golang题解之第142题环形链表II

题目&#xff1a; 题解&#xff1a; func detectCycle(head *ListNode) *ListNode {slow, fast : head, headfor fast ! nil {slow slow.Nextif fast.Next nil {return nil}fast fast.Next.Nextif fast slow {p : headfor p ! slow {p p.Nextslow slow.Next}return p}}r…

AI数据分析:根据Excel表格数据绘制柱形图

工作任务&#xff1a;将Excel文件中2013年至2019年间线上图书的销售额&#xff0c;以条形图的形式呈现&#xff0c;每个条形的高度代表相应年份的销售额&#xff0c;同时在每个条形上方标注具体的销售额数值 在deepseek中输入提示词&#xff1a; 你是一个Python编程专家&#…

eNSP学习——RIP的路由引入

目录 主要命令 原理概述 实验目的 实验内容 实验拓扑 实验编址 实验步骤 1、基本配置 2、搭建公司B的RIP网络 3、优化公司B的 RIP网络 4、连接公司A与公司B的网络 需要eNSP各种配置命令的点击链接自取&#xff1a;华为&#xff45;NSP各种设备配置命令大全PDF版_ensp…

[Leetcode]同时进行正向和逆向迭代匹配解决回文链表问题

题目链接:234. 回文链表 - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; 题解&#xff1a; currentNode 指针是先到尾节点&#xff0c;由于递归的特性再从后往前进行比较。frontPointer 是递归函数外的指针。若 currentNode.val ! frontPointer.val 则返回 false。…

876. 链表的中间结点-链表

876. 链表的中间结点 - 力扣&#xff08;LeetCode&#xff09; 快慢指针 class Solution { public:ListNode* middleNode(ListNode* head) {ListNode* slow head;ListNode* fast head;while(fast ! nullptr && fast->next ! nullptr){slow slow->next;fast …

用MATLAB绘制地球围绕太远运动而月球围绕地球运动

绘制 MATLAB代码: clc;close all;clear all;warning off;%清除变量 rand(seed, 100); randn(seed, 100); format long g;% 初始化参数 num_frames 1000; % 动画帧数 G200; dt 0.01; % 时间步长% 设置太阳、地球和月球的初始位置和半径 sun_position [0, 0]; earth_radius …

Leetcode881. 救生艇

Every day a Leetcode 题目来源&#xff1a;881. 救生艇 解法1&#xff1a;贪心 排序 双指针 排序后&#xff0c;使用双指针分别指向数组首尾&#xff0c;每次取两个指针指向的元素之和与 limit 比较&#xff0c;如果小于等于 limit&#xff0c;则两个指针同时向中间移动一…

【TensorFlow深度学习】Q学习算法原理与Q表的实现

Q学习算法原理与Q表的实现 Q学习算法原理与Q表的实现&#xff1a;强化学习的基石探索Q学习算法原理Q表的实现代码实现结语 Q学习算法原理与Q表的实现&#xff1a;强化学习的基石探索 在强化学习的广阔天地里&#xff0c;Q学习算法是一颗璀璨的明星&#xff0c;以其优雅的理论基…

docker-ce 和 docker-ee介绍版本介绍

1 docker-ce 和 docker-ee介绍版本介绍 •Docker-CE指Docker社区版&#xff0c;由社区维护和提供技术支持&#xff0c;为免费版本&#xff0c;适合个人开发人员和小团队使用。•Docker-EE指Docker企业版&#xff0c;为收费版本&#xff0c;由售后团队和技术团队提供技术支持&am…

箭头函数 this

箭头函数中&#xff0c;是没有this的&#xff0c;所以写在箭头函数中的this&#xff0c;会自动向当前作用域的上一层作用域寻找&#xff0c;是否含有this&#xff0c;如果有就指代&#xff0c;没有就继续找上一层。 new Vue({el:#root,data:{firstName:张,lastName:三,fullNam…

Android Studio历史版本

android studio的历史版本

【langchain】langchain调用huggingface本地模型基础demo

目前网上的langchain教程大多数都是关于如何调用OpenAI等远程模型&#xff0c;对于本地模型的调用示例写法比较少。而且langchain也在不停迭代&#xff0c;文档也比较杂。我个人用Hugging Face的开源模型比较多。因此&#xff0c;本文将向大家介绍如何使用Langchain调用Hugging…

国产达梦数据库使用说明

参考&#xff1a; https://eco.dameng.com/document/dm/zh-cn/start/tool-dm-disql.html https://blog.csdn.net/qq_37358909/article/details/113343515 具体启动脚本名可能版本不同有所差异&#xff0c;注意判断 [rootlocalhost root] cd /home/dmdba/dmdbms/bin [rootloca…

13、架构-流量治理之流量控制

概述 任何一个系统的运算、存储、网络资源都不是无限的&#xff0c;当系统资源不足以支撑外部超过预期的突发流量时&#xff0c;便应该有所取舍&#xff0c;建立面 对超额流量自我保护的机制&#xff0c;这个机制就是微服务中常说的“限 流”。 最大处理能力为80TPS的系统遇到1…