苏小红C语言程序设计第一、二、三章知识总结

2024-01-26 08:50

本文主要是介绍苏小红C语言程序设计第一、二、三章知识总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第一章、为什么学习C语言

  • C语言是编写操作系统的不二之选;
  • C语言是执行效率最高的高级语言;
  • 继承和维护已经有的C代码;
  • 思想交流的首选媒介语言;;

第二章、C语言类型

2.1常量与变量

2.1.1常量

常量:整型常量,实型常量,字符常量,字符串常量,枚举常量。

整型常量的表示形式:

  • 十进制(17,-31)
  • 二进制(00010001,-00011111)
  • 八进制(021,-037)[注意前面0开头]
  • 十六进制(0x11,-0x1F)[注意前面0x开头]

整型常量的类型:

  • 有符号整型常量(10,-30,0)
  • 无符号整型常量(30u,256U)[后面接u、U,不能表示成-30u]
  • 长整型常量(-2561l,1024L)[后面接l、L]
  • 无符号长整型常量(30lu)

实型常量的表示形式:

  • 十进制小数形式(0.123,-12.35,.98)
  • 指数形式(3.45e-6等价于0.00000345)

实型常量的类型:

  • 单精度float(1.25F,1.25e-2f)[后面接f、F],
  • 双精度double(0.123,-12.35,.98)[实型常量隐含按双精度处理]
  • 长双精度long double(1.25L)。

2.12变量

//一个C程序只有一个main函数,称为主函数。
int main()
{/*int a;int为一个关键字,a为一个变量名(标识符),变量名就是开辟的内存单元的标记,变量值就是存放到该单元内的数值。a=1;给a赋值*//*变量命名原则1、标识符只能由英文字母、数字和下划线组成2、标识符只能由字母和下划线开头3、不能用C关键字为标识符命名4、标识符区分大小写*//*int a;a=1;float b;b=2.5;错误,B必须在第一条可执行语句之前定义*//*可以在定义变量同时初始化int a=1;*///定义相同类型的变量,多个变量之间用逗号作为分隔符int a,b,c;int a=0,b=0,c=0;//但是定义的同时不能这样初始化:int a=b=c=0;   
}

2.2简单的屏幕输出

#include<stdio.h>
int main()
{int a=1;float b=2.5;char c='A';printf("a=%d\n",a);printf("b=%f\n",b);printf("c=%c\n",c);
}

输出:
a=1
b=2.500000  //%f隐含输出6位小数
c=A

2.3数据类型

  • char 占一个字节
  • short int 占两个字节
  • int 、long int 、float 占四个字节
  • double long double 占八个字节

2.4如何计算变量或者数据类型所占内存空间的大小

一个字节(Byte)由8个二进制位(bit)构成。

同种类型的数据在不同的编译器或者计算机系统中所占的字节数不同,需要使用sizeof()运算符,sizeof是关键字,不是函数名。

include<stdio.h>
int main()
{int a;a=1;printf("%d\n",sizeof(int));printf("%d\n",sizeof(a));return 0;
}

输出:
4
4

2.5变量的赋值和赋值运算符

运算符的优先级:

  1. () [] -> . ++(后缀) --(后缀)
  2. !非 ~按位取反 ++(前缀) --(前缀) -(求负) 间接取址 &取地址符 (强制类型转换) sizeof
  3.  / % 乘除求余
  4. ± 加减
  5. << >>位运算符
  6. <= > < >= 关系运算符
  7. =   !=关系运算符
  8. &按位与
  9. ^按位异或
  10. |按位或
  11. &&
  12. ||
  13. ?=
  14. = += *= %= <<= |= &=赋值运算符
  15. ,逗号运算符

运算符的结合性:

2、13、14是自右向左,其余的自左向右

#include<stdio.h>
int main()
{//int a=b=c=0;错误的写法int a,b,c;a=b=c=0;//正确的写法a=(b=(c=0));//自右向左,与上面的等价,都是多重赋值
}

2.6扩充内容

2.6.1有符号整数和无符号整数

在计算机中,数都是由二进制补码进行存储。
正数的补码是本身;负数的补码是反码加1,反码除了符号位其它位进行取反;补码不存在+0和-0的问题。

2.6.2实型数据在内存中的存储格式

定点数:是指小数点固定的,小数点位于符号位和第一个数值位之间,它是一个纯小数。
浮点数:是指小数点的位置是可以浮动的数。如1.26可以写成0.12610^1.
浮点数是将实数分为阶码和尾数两部分来表示:N=SR^J
实数的指数部分称为阶码,小数部分称为尾数。阶码所占的位数决定实数的表示范围,尾数决定实数的精度。

2.6.3单精度实型和双精度实型的有效位数

#include<stdio.h>
int main()
{float a;double b;a=123456.789e4;b=123456.789e4;printf("%f\n%f\n",a,b);
}

输出:
1234567936.000000//float型只能接收7位有效数字
1234567890.000000//double型可以接受16位有效数字

第三章、简单的算术运算和表达式

3.1C运算符和表达式

3.1.1算术运算符和表达式

  • ?唯一一个三元运算符
  • -唯一一个一元运算符
  • 1/2与1.0/2结果不同,前者是整数除法,后者是浮点数除法
  •  求余运算限定参与运算的两个操作数必须为整数 11%5=1,11%(-5)=1,(-11)%5=-1
#include<stdio.h>
int mian()
{int x=153,b0,b1,b2,sum;b2=x/100;b1=(x-b2*100)/10;b0=x%10;sum=b2+b1+b0;printf("sum=%d",sum);
}

3.1.2复合的赋值运算符

a+=10 a=a+10(*=,/=,%=)

3.1.3增1或减1运算符

++;- -
前缀运算符在使用之前先加1或者减1;后缀运算符先使用当前的数值,然后再进行加1或者减1。

3.2宏常量与宏替换

宏定义的一般形式:
#define 标识符 字符串
在编译预处理阶段,凡是在源程序中发现该标识符时,都用其后指定的字符串来替换

//计算圆的周长和面积
#include<stdio.h>
#define PI 3.14159
int main()
{double r;//圆的半径scanf("%lf",&r);/* printf("周长=%f\n",2*3.14159*r);printf("面积=%f\n",3.14159*r*r);*/printf("周长=%f\n",2*PI*r);printf("面积=%f\n",PI*r*r);
}

3.3const常量

宏常量没有数据类型,编译器对宏常量不进行类型检查,字符替换时极易产生意想不到的错误,这是要用到const常量;

#include<stdio.h>
#define PI 5+5
int main()
{printf("%d\n", PI * 2);
}

输出:15


由于编译器将其放置在只读区域,不允许程序中改变其值,因此const常量只能在定义时赋初值。

include<stdio.h>
int main()
{const double PI=3.14159;double r;//圆的半径scanf("%lf",&r);/* printf("周长=%f\n",2*3.14159*r);printf("面积=%f\n",3.14159*r*r);*/printf("周长=%f\n",2*PI*r);printf("面积=%f\n",PI*r*r);
}

3.4自动类型转换与强制转换运算符

3.4.1表达式中的自动类型转换

C编译器在对操作数进行运算之前将所有的操作数都转换成范围较大的操作数类型,称为类型的提升。

3.4.2赋值中的自动类型转换

/*若赋值运算符左侧变量类型和右侧变量类型不一致,将右侧表达式的值转换成左侧变量的类型*/
#include<stdio.h>
int main()
{int n=256;float f=3.6;double d=2.5;n=f;f=n;d=f;printf("n=%d\n",n);printf("f=%f\n",f);printf("d=%f\n",d);
}

输出:
n=3
f=3.000000
d=3.000000

3.4.3强制类型转换运算符

/*(类型)表达式*/
#include<stdio.h>
int main()
{int m=5;printf("m/2=%d\n",m/2);printf("(float)(m/2)=%f\n",(float)(m/2));printf("(float)m/2=%f\n",(float)m/2);printf("m=%d\n",m);
}

输出:
m/2=2
(float)(m/2)=2.000000
(float)m/2=2.500000
m=5

3.5常用的标准数学函数

//求三角形面积
#include<stdiio.h>
#include<math.h>//要包含相应的头文件
int main()
{float a,b,c,s,area;scanf("%f,%f,%f",&a,&b,&c);s=(a+b+c)/2;area=(float)sqrt(s*(s-a)*(s-b)*(s-c));printf("areaa=%f\n",area);
}

常用的标准数学函数:

  • sqrt(x),求一个数的平方
  • fabs(x),求一个数的绝对值
  • log(x),lnx
  • log10(x),lgx
  • exp(x),e^x
  • pow(x,y),x^y
  • sin(x),sinx
  • cos(x),cosx

这篇关于苏小红C语言程序设计第一、二、三章知识总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/646250

相关文章

C语言中的数据类型强制转换

《C语言中的数据类型强制转换》:本文主要介绍C语言中的数据类型强制转换方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C语言数据类型强制转换自动转换强制转换类型总结C语言数据类型强制转换强制类型转换:是通过类型转换运算来实现的,主要的数据类型转换分为自动转换

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

C语言实现两个变量值交换的三种方式

《C语言实现两个变量值交换的三种方式》两个变量值的交换是编程中最常见的问题之一,以下将介绍三种变量的交换方式,其中第一种方式是最常用也是最实用的,后两种方式一般只在特殊限制下使用,需要的朋友可以参考下... 目录1.使用临时变量(推荐)2.相加和相减的方式(值较大时可能丢失数据)3.按位异或运算1.使用临时

java常见报错及解决方案总结

《java常见报错及解决方案总结》:本文主要介绍Java编程中常见错误类型及示例,包括语法错误、空指针异常、数组下标越界、类型转换异常、文件未找到异常、除以零异常、非法线程操作异常、方法未定义异常... 目录1. 语法错误 (Syntax Errors)示例 1:解决方案:2. 空指针异常 (NullPoi

使用C语言实现交换整数的奇数位和偶数位

《使用C语言实现交换整数的奇数位和偶数位》在C语言中,要交换一个整数的二进制位中的奇数位和偶数位,重点需要理解位操作,当我们谈论二进制位的奇数位和偶数位时,我们是指从右到左数的位置,本文给大家介绍了使... 目录一、问题描述二、解决思路三、函数实现四、宏实现五、总结一、问题描述使用C语言代码实现:将一个整

C语言字符函数和字符串函数示例详解

《C语言字符函数和字符串函数示例详解》本文详细介绍了C语言中字符分类函数、字符转换函数及字符串操作函数的使用方法,并通过示例代码展示了如何实现这些功能,通过这些内容,读者可以深入理解并掌握C语言中的字... 目录一、字符分类函数二、字符转换函数三、strlen的使用和模拟实现3.1strlen函数3.2st

Go语言中最便捷的http请求包resty的使用详解

《Go语言中最便捷的http请求包resty的使用详解》go语言虽然自身就有net/http包,但是说实话用起来没那么好用,resty包是go语言中一个非常受欢迎的http请求处理包,下面我们一起来学... 目录安装一、一个简单的get二、带查询参数三、设置请求头、body四、设置表单数据五、处理响应六、超

Java反转字符串的五种方法总结

《Java反转字符串的五种方法总结》:本文主要介绍五种在Java中反转字符串的方法,包括使用StringBuilder的reverse()方法、字符数组、自定义StringBuilder方法、直接... 目录前言方法一:使用StringBuilder的reverse()方法方法二:使用字符数组方法三:使用自

C语言中的浮点数存储详解

《C语言中的浮点数存储详解》:本文主要介绍C语言中的浮点数存储详解,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、首先明确一个概念2、接下来,讲解C语言中浮点型数存储的规则2.1、可以将上述公式分为两部分来看2.2、问:十进制小数0.5该如何存储?2.3 浮点

国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)

《国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)》本文给大家利用deepseek模型搭建私有知识问答库的详细步骤和遇到的问题及解决办法,感兴趣的朋友一起看看吧... 目录1. 第1步大家在安装完ollama后,需要到系统环境变量中添加两个变量2. 第3步 “在cmd中