程序设计C语言(1)

《C语言程序设计》江宝钏主编-习题5-1-统计整数! AC代码: /*《C语言程序设计》江宝钏主编-习题5-1-统计整数 Description 从键盘输入任意20个整数,统计其中的负数个数,并求所有整数的平均值。 Input 20个整数 Output 负数个数和整数平均值(保留1位小数) Sample Input Copy 1 2 3 4 5 6 7 8 9 0 -1 -2 -3 -4 -5 -6 -7 -8 -9 0 Sample ... 阅读详情

C语言的变量、常量、表达式

  • C的常量和变量
    • 整数 的范围是负无穷到正无穷,C语言标准并不限制各类型数据所占的存储字节数,但是在计算机中由机器硬件的限制,不同计算机软件系统对数据的存储有具体的规定。
    • 整数 在计算机内部使用二进制补码(例:2字节有符号数,最高位1表示负数,低15位表示数值部分,-32768-32767;2字节无符号数,16位全部表示数值,0-65535)
    • 浮点数 在计算机中用指数形式存储,符号位、指数(数的表示范围越大)、尾数(有效位越多,精度越高)
    • 浮点数 是近似值,存在误差。引入双精度型目的是增加实数的长度减少累积误差,改善计算精度。
    • 常量 运行过程中其值不改变,不占用内存。数值常量、字符型常量、符号常量。

      浮点型常量:两种表现形式——十进制小数形式、指数形式。
      十进制小数形式:必须有小数点如:0.0、3.14、.56、300.
      指数形式: [±] [整数部分] [.] [小数部分] [ (e,E) ± n] [后缀] 如:-1.23456e+4
      浮点数常量:两条规则——对于十进制小数形式可以无整数部分或小数部分,但不能二者全部都没有;对于指数形式可以无小数点或指数部分,但不能全部都没有。
      字符型常量:单引号括起来的字符;单引号内部不可以是双引号、单引号、反斜线;值为该字符的ASCII值;在内存中只占用一个字节。
      字符型常量:转义字符;以 “ \ ” 开头后跟几个字符;C语言字符集中的任何一个字符均可用转义字符表示。如:字符表示——‘\a’;字符含义——鸣铃; \ddd表示——\007;\xhh表示——\x07
      字符串常量: 双引号括起;如: “CHINA”;在内存中所占字节为 长度+1,结束符 ’ \0 ’
      符号常量: #define 标识符 常量 (后面不能再加其他符号 如 ; ) 。用标识符代替常量 如:#define PI 3.14 ;含义清楚,一改全改;习惯上符号常量用大写字母

    • 变量:随着执行可以改变;实质为存储数据的容器;取值 与 赋值
    • 变量定义格式:[存储类型] 数据类型 变量名 [=初值]; 或 [存储类型] 数据类型 变量名表; 如:int i; int j=2; float f1=1.0,f2=0.0;
    • 变量命名规则:必须以英文字母、下划线开头的由字母、数字、下划线组成的字符序列;C语言区分大小写;但最好不用下划线开头;
  • C的运算符和表达式
    • 运算符分类:对象——单目、双目、三目;功能——算术、赋值、关系、逻辑、位运算、自增自减、条件、逗号运算符。

    • 表达式分类:算式、关系、逻辑、赋值、条件、逗号、混合表达式。

    • 求余运算:X % Y

      数学定义:自然数A、B,B非零,存在两个唯一的整数Q、R,使得A = Q * B +R 且 0 ≤ R<B,其中Q为商、R为余数。余数总为正数,更符合人们的理解。
      计算机定义:整数A、B,B非零,存在余数满足A = Q * B +R ,Q为整数,且 0 ≤ |R|<|B| 。例:5%(-3) = (-3)(-1)+2 = (-3)(-2)-1;正负取决于A。

    • ++ – 运算符

      前置式:先变后用、后置式:先用后变(下面的括号为方便区分三个加号,实则还是单目运算变量) 在这里插入图片描述
      只能用于变量、字符型和指针型变量,不能用于常量和表达式。

    • 关系运算符:> 、<、≥、≤、 ==、 !=,表达式结果为 1 或 0 。

    • 逻辑运算符:&&、||、!,其中&&、|| 的短路运算

    • 条件运算符:表达式1 ? 表达式2 : 表达式3,

    • 逗号运算符:表达式1,表达式2,…,表达式n;顺序求值

  • C的位运算
    • & 按位与:实现特定位的 清零与读取
    • | 按位或:实现特定位的 置 1 与 二进制串的拼接
    • ^ 按位异或:实现特定位的取反(异或1) 与 不变(异或0)
    • << 左移:高位丢失,低位补0;变量左移未溢出的前提下,左移 等价于 乘2
    • >> 右移:无符号数高位补0,低位丢失;有符号数高位 补符号,低位丢失,等价于 除2
    • ~ 按位取反:逐位取反
  • 类型转换
    • 两种类型:运算过程中产生、调用函数的方式产生

    • 自动类型转换:又叫隐式转换,双目运算左右类型不相同、赋值不同类型

    • 强制类型转换:又叫显示转换,人为操作;形式为 (类型名)表达式;

    • 调用函数实现类型转换:

C程序及流程控制

  • C语言的函数架构和结构化设计

    • 注释:函数最上端说明函数的功能、输入、输出、限制;/注释/ 或 //注释
    • 预处理模块、全局变量说明、函数声明
    • 函数定义:函数类型、函数名、参数表
    • 变量说明:对所用的各种变量都要进行说明
    • 数据输入
    • 执行部分:核心;流程控制转移
    • 信息输出
    • 结构化程序设计:1966年科学家证明了任何单输入单输出无二义性的模块都可以用顺序、选择、循环三种结构来描述。
  • C语言的选择语句

    • if - else:else可无;可嵌套;
    • switch case break (default):switch后的表达式返回值必须是整数值;case后的判断值必须是整形常量;
  • C语言的循环控制语句

    • while :循环变量的初始化应在while()之前进行,不可以在( )内进行。
    • do while :
    • for:
      for(表达式1;表达式2;表达式3) {循环体;}
      1用于初始化;2循环条件;3控制条件
      注意:1、2、3可以全部省掉,但是分号不能省去且循环体中必须用break结束循环,等价于for( ; ; ),等价于for( ;1; );循环体可以为空,用于延迟
    • break:只能用于循环体内或者switch语句,只能跳出一层的整个循环,所求结果唯一
    • continue:跳出本次循环体中还未执行的语句,直接进行下次循环的判定
    • goto 语句与对应标号:不利于维护和结构化设计;goto语句没有错,错在人
  • C语言的编程规范

    • 标识符命名要有意义
    • 版式缩进、空行、划分、左对齐
    • 注释放在代码上方且与上面的空行,头文件、函数头要注释,详细中文但不宜过多

函数

  • 结构化程序的开发过程
    先自顶向下,将问题分解。然后自底向上将小问题归纳整合为完整的软件架构
  • 函数的定义、原型、调用

    • 函数头、函数体:存储类型、返回类型、函数名、参数表

      存储类型只有static、extern 两种,static实现对函数的调用局限于所在文件;extern外部函数,可省略,供其他文件调用

    • 函数原型:

    • 函数调用:实参与形参的个数、顺序、参数类型相同,形参的生命周期和作用域与函数内的自动变量相同

  • 作用域:变量从分配空间、使用、释放的过程称为变量的生存期。在生存期内,该变量可以被使用的范围称为作用域。作用域是空间概念,由语句定义的位置决定。

  • 存储类型:变量的生存期是时间概念,由存储类型决定。分为静态存储方式、动态存储方式。

  • C语言变量:

    auto变量:默认缺省为auto,函数内部 ,每次调用都重新分配栈
    register变量:
    ①CPU通用寄存器,存取速度很快!
    ②只有自动变量和形参可以定义为寄存器变量,所以存在于函数内部。 所以基本和auto变量的相同。
    ③调用函数时分配,调用结束释放。
    ④若变量个数超过寄存器个数,则编译器会强制转换为auto变量
    在这里插入图片描述
    静态变量:编译时完成在静态存储区的内存分配,直到整个源程序运行结束。
    静态全局变量(不能被外部文件访问)、静态局部变量(函数运行结束后仍保留不被释放) 在这里插入图片描述
    全局变量:可以被外部其他文件访问,使用extern在文件头下面申明。或者要在定义语句之前使用该变量,使用extern 进行引用。

  • 函数间的数据传递

    使用参数:实参与形参的个数、顺序、类型对应相同;参数可以为变量、数组、指针、结构、函数等
    ①值传递:复制数据、存储单元不同、单向传递、
    ②地址传递:复制地址、形参指针使用地址读取实参、双向传递在这里插入图片描述
    使用返回值:通过return 返回一个确定类型的值;执行return后停止执行后续代码。
    使用全局变量:少数公共数据使用,破坏程序模块相对独立性;全局变量与局部变量冲突时,就近选择局部变量

  • 递归函数

    定义:一个函数直接或间接地调用自身
    关键:结束条件(true or false)、递归主体
    在这里插入图片描述

main函数

  • void main( ) :无参数,表示不处理命令行参数
  • int main(int argc, char *argv[]):接受命令行参数,参数间用空格隔开
    • argc:参数个数(包括可执行程序名)
    • argv[]:指针数组,数组元素分别指向命令行的参数。argv[0]为命令行中的可执行程序名,argv[1]为第一个参数的内容 ,依此类推。 在这里插入图片描述在这里插入图片描述
《C程序设计语言》练习2-1答案 练习 2-1 编写一个程序以确定分别由signed及unsigned 限定的char、short、 int与long类型变量的取值范围。采用打印标准头文件中的相应值以及直接计算两种方式实 现。后一种方法的实现较困难一些,因为要确定各种浮点类型的取值范围。 #include #include #include void problems2_01() { printf("int 阅读详情

相关推荐

【C语言】《C程序设计语言》练习1-2和1-2

《C程序设计语言》练习1-2和1-2,刚开始不知道K&R为什么开头出这样的题,为什么不布置点出效果的小程序作业,而要有意去试错。不懂。不过,你做完这两题之后,就会发现真的不简单啊。

weixin_53274286的博客 1288

C语言第2.4关 字符型常量

第一个%d输出的是表达式a的值,就是字符a的ASCII码,字符a可以直接当整型数据使用。举例来说字符'A'在内存中占一个字节,存储的是整型数据65(字符'A'的ASCII码),也就是说字符型数据是一个字节的整数。所有的大写英文字母的ASCII码比它们的小写形式小32,也就是说:'A'+32的值是97,也就是'a';例如:'A'、'6'、'$'、';由于字符'A'的ASCII码为十进制数65,用八进制表示是0101,用十六进制表示是0x41,所以字符'\101'和'\X41'都表示字符'A'。

Rainymiss的博客 974

C语言程序设计1

C语言概述

2401_87484750的博客 1176

c程序设计语言(第二版.新版)习题1_12

/* 每行一个单词的形式打印输出(按行输入) */ #define IN 1 //在单词内 #define OUT 0 //在单词外 int main(void) { int a[128] = { 0 }, i = 1; while ((a[i] = getchar()) != EOF) { if (a[i] == '\n') { int j, state = OUT,...

qq_43468651的博客 227

别再为镜面物体检测发愁了!手把手教你用PMD相位偏折术增强2.5D形状图细节(附Python代码)

本文详细解析了PMD相位偏折术在工业视觉中镜面物体检测的应用,通过2.5D成像方案增强形状图细节。文章提供了Python代码示例,介绍了一种计算高效的局部特征增强算法,帮助解决产线环境中的噪声问题,提升缺陷识别准确率。

weixin_29299807的博客 346

基于ESP32-C3的便携式血氧仪硬件与算法实现

血氧饱和度(SpO₂)监测是生理参数无创检测的核心技术之一,其原理基于光电容积脉搏波(PPG)信号中红光与红外光吸收比值的动态变化。该技术依赖高精度模拟前端、稳定光学激励及实时数字信号处理能力,在消费级健康设备中面临功耗、体积与测量鲁棒性的多重约束。ESP32-C3凭借集成LEDC、12位ADC与低功耗双核架构,成为PPG终端的理想主控平台;结合定制化指夹式光学探头与比率法血氧算法,可实现非诊断级但趋势可靠的日常健康监测。本文围绕硬件电路设计、电源管理策略与嵌入式信号处理流程展开,覆盖从LED驱动、跨阻放大

weixin_29025501的博客 132

c程序设计语言(第二版.新版)习题1_9

想法:按行输入,然后立马输出,遇到EOF结束 /* 输入复制到输出,并将连续的多个空格用一个空格代替 */ int main(void) { int c; int ok = 0; while ((c = getchar()) != EOF) { if (c == ' ' && ok == 1) continue; if (c == ' ') ok ...

qq_43468651的博客 247

数据获取竟如此简单——全球SRTM 90m DEM V4.1数据

SRTM(Shuttle Radar Topography Mission)是由NASA联合国际合作伙伴开展的雷达地形测绘项目,通过航天飞机搭载的合成孔径雷达系统,于2000年通过发射并接收地表反射的雷达信号,获取全球三维地形数据,这一任务填补了高精度全球地形数据的空白。而本文通过十余行的python代码,就更简单、方便地获取这些数据。

m0_38065162的博客 1399

c语言程序设计1.9例题

# include <stdio.h> #define MAXLINE 1000 int getline(char line[],int maxline); void copy(char to[],char from[]); main() { int len,max;//定义两个长度 char line[MAXLINE], longest[MAXLINE];//用宏定义定义常数,同时定义了两个数组 max = 0; while((len = getline(line, MAXL

qq_53709900的博客 791

【嵌入式面经】上海 70迈 线上笔试

“关注|点赞|收藏” 福利干货第一时间送达!最近在做免费的嵌入式知识分享,帮助对嵌入式感兴趣的同学学习嵌入式、做项目、找工作!

qq_56921854的博客 1136

SerDes硬件设计原理介绍

接收端:外部差分串行数据------线性均衡器----(CDR从数据中恢复出采样时钟)-----解串器(串行信号转并行信号)-------8B/10B的解码器或解扰器-----FIFO-----FPGA接受差分并行数据。发送端: FPGA发送差分并行数据----FIFO------8B/10B编码器或者扰码器-----串行器(并行信号转串行信号)-----均衡器(滤波)--------TX串行信号差分外发。串行器:8bit的并行数据----2bit的并行数据----1bits的串行数据。

weixin_42304393的博客 1108

c程序设计语言 习题1-12

在这里我仅将学习《c程序设计语言》过程中困扰过我的习题列出来,并记录思考的过程。 -Exer 1-12. Write a program that prints its input one word per line.                      写一个程序,将输入的每一个单词单独输出为一行。 构思这道题的时候,我首先想到的是和习题1-9一样,使用上一个字符和当前字符组

morefunz的博客 751

大厂面经:京东大数据面试题及参考答案(3万字长文)

Kafka是一个开源的分布式流处理平台,由 LinkedIn 开发并在 2011 年贡献给 Apache 软件基金会。高吞吐量:能够处理大量的数据流,适合实时数据管道。持久性:数据存储在磁盘上,确保数据不丢失。容错性:通过数据复制提供高可用性。扩展性:支持水平扩展,易于增加更多节点。Kafka 的核心概念Topic:逻辑上的数据流,可以理解为主题。Producer:生产数据的应用程序。Consumer:消费数据的应用程序。Broker:Kafka 集群中的服务器节点。Partition。

大模型大数据攻城狮的专栏 863

c语言程序设计第1章

开始记录自己学习c语言的过程,选用的教材是浙江大学何钦铭、颜晖编写的《c语言程序设计》(第3版)。 一、第一个程序 1 /*求阶乘问题。输入一个正整数n,输出n!*/ 2 3 #include<stdio.h> 4 5 int factorial(int n); //函数声明,注意不能忘记引号 6 7 int main() //主函数...

weixin_34408717的博客 141

在Ubuntu上安装Node.js编程

在Ubuntu操作系统上安装Node.js是非常简单的,本文将为您提供详细的安装步骤。这是一个简单的Node.js HTTP服务器示例,它将在本地主机的端口3000上监听请求,并返回"Hello, World!npm是Node.js的包管理器,您可以使用它来安装和管理Node.js模块。您已成功在Ubuntu上安装了Node.js,并创建并运行了一个简单的Node.js应用程序。现在,您已经成功安装了Node.js和npm,让我们创建一个简单的Node.js应用程序并运行它。如有任何疑问,请随时提问。

CodeNexus的博客 3524

机器人多学科仿真软件:Webots_(19).Webots的插件与扩展开发

通过上述步骤,您可以开发和使用Webots的插件、扩展和接口,以增强其功能和灵活性。

kkchenjj的博客 924

c语言高级语言程序设计,C语言高级语言程序设计1-期末试卷1

《C语言高级语言程序设计1-期末试卷1》由会员分享,可在线阅读,更多相关《C语言高级语言程序设计1-期末试卷1(6页珍藏版)》请在人人文库网上搜索。1、高级语言程序设计试卷1*班级:*学号:*姓名:*考试方式闭卷制卷分数题 号一二三四五总分得 分登分人核分人得分阅卷人一、判断题(每小题 2 分,共 40 分 )1 一个 C 程序总是从 ______A )主过程开始执行B)主函数开始执行C)子程序开...

weixin_39968640的博客 221

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

《C语言程序设计》课程教学(1)——第1章 C语言概述

qq_34573534的博客 210

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

c语言设计1到100程序设计,经典C语言程序设计100例子1-100

经典C语言程序设计100例子1-100经典C语言程序设计100例1-10【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的再去掉不满足条件的排列。2.程序源代码:main(){inti,j,k;printf("\n");for(i=1;i<5;i++)for(j=1;j<5;j+...

weixin_39861054的博客 309

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

《C程序设计语言》第二版 Exercise1-1

用一个最原始的hello, world程序让初学者了解各个程序片段分别都有什么用。 但由于是本书的第一个程序,main函数写的不规范,没有返回类型,参数和返回值,所以编译过程中不可避免的会遇见以下错误: warning: return type defaults to ‘int’ [-Wimplicit-int] 3 | main() { | ^~~~ 第一章后面几小节的程序也会有此类报错,不必过多在意。进入后面的章节之后作者会恢复到标准的main函数写法,这个warning就不

sherlock_h_c的博客 1160

C语言程序设计课堂内容总结1

学校ppt上的精华,整理一下

2401_82549840的博客 2311

C语言程序设计(第三版)何钦铭著 习题2-1

C语言程序设计(第三版)何钦铭著 习题2-1 文章目录C语言程序设计(第三版)何钦铭著 习题2-1题目分析过程输入输出代码运行结果 题目 求整数均值∶输入4个整数,计算并输出这些整数的和与平均值,其中平均值精确到小数点后1位。试编写相应程序。 分析过程 输入 条件:输入四个整数 输出 条件:输出四个整数的和以及平均值 形式:平均值精确到小数点后1位 代码 #include <stdio.h> int main () { /*定义变量*/ int a = 0, b = 0

xuxu96 2791

c语言 1.1程序与程序设计语言

1.1.1程序的基本概念 1.什么是程序设计语言: 人能与计算机“沟通",而这种”沟通"所需要的语言就是程序设计语言 2.使用程序设计语言所设计的指令的集合就是程序 3.程序设计的过程一般由4个步骤组成: 1)分析问题 2)设计算法 3)编码 4)程序调试 4.程序设计语言一般可分为机器语言 、汇编语言和高级语言三类 5.机器语言 1)什么是机器语言: 面向某种特定机器的语言,以二进制代码表示的指令集合,是唯一的计算能直接识别并执行的语言 2)机器语言的有点:占用内存少,执行效率高 3)机器语言的缺点:不具

m0_50551074的博客 632

c语言程序设计1~2

(1)任何程序都可用三种基本结构来表示。(2)每种基本结构都只有一个入口和一个出口。(3)程序中没有死循环和死语句。原则:(1)自顶向下,逐步求精(2)模块化设计(3)程序结构化基本步骤:分析问题,设计算法,编写程序。(1)基本特征:有穷性,确定性,有效性,有零个或多个输入,有一个或多个输出。(2)流程图运行结果:MyfirstCprogram!注意!!!(1)一个c语言程序,有且仅有一个main函数,且永远从main函数进入和出去。(2)

2402_87037360的博客 765
上一篇: SMTP回复码
下一篇: 程序设计C语言(2)
Valois
博客等级 码龄8年 74粉丝 147原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值