C语言 | 第四章 | 常量 运算符

P 31 课后练习评讲 2022/8/24

一、题目

image-20220824101933561

代码演示:第一题

#include<stdio.h>

void main(){
   // 分析:使用不同的变量来保存对应的数据
   char name[10] = "张三";  //  字符数组,存放字符串
   short age = 23;
   float score = 78.5f;
   char gender = 'M'; // 男生
   char hobby[20] = "篮球,足球";

   printf("姓名\t年龄\t成绩\t性别\t爱好\n%s\t%d\t%.2f\t%c\t%s",name,age,score,gender,hobby);

   getchar();
   
}

代码演示:第二题

#include<stdio.h>
void main() {
		int number1; 
		int number2;
		int number3;
		int number4 = 50;
		int number5;
		number1 = 10;
		number2 = 20;
		number3 = number1 + number2; //30
		printf("\nNumber3 = %d" , number3);// 30
		number5 = number4 - number3;//20
		printf("\nNumber5 = %d" , number5);//20
		getchar();
}

image-20220824104231487

代码演示:第三题

// 分析:
// 1.定义两个 整型 int
// 2.根据要求进行计算,得到不同的结果,可以在定义变量

#include<stdio.h>

void main(){
	
		int n1 = 10;
		int n2 = 5;
		int sum = n1 + n2;
		int sub = n1 - n2;
		int mul = n1 * n2;
		int div = n1 / n2;
		int mod = n1 % n2;
//  输出
		printf("\n*************************************");
		printf("\n              小小计算器");
        printf("\n*************************************");

		printf("\n %d + %d = %d",n1,n2,sum);
		printf("\n %d - %d = %d",n1,n2,sub);
		printf("\n %d * %d = %d",n1,n2,mul);
		printf("\n %d / %d = %d",n1,n2,div);
		printf("\n %d mod %d = %d",n1,n2,mod);
		
		getchar();
}

image-20220824111019207

代码演示:第四题

#include<stdio.h>

void main(){
int num = 11;
// 判断num是偶数还是奇数
		if(num % 2 == 0){
			printf("\n%d是偶数",num);
		} else {
			printf("\n%d是奇数",num);
		}
		getchar();
}

P 32 常量基本介绍 2022/8/24

一、基本介绍

  • 常量是固定值,在程序执行期间不能改变。这些固定的值,又叫做字面量
  • 常量可以是任何的基本数据类型,比如整数常量、浮点常量、字符常量,或字符串字面值,也有枚举常量。
  • 常量的值在定义后不能进行修改.

二、整数常量

  • 整数常量可以是十进制、八进制或十六进制的常量。前缀指定基数:0x 或 0X 表示十六进制,0 表示八进制,不带前缀则默认表示十进制。整数常量也可以带一个后缀,后缀是 U 和 L 的组合,U 表示无符号整数(unsigned),L 表示长整数(long)。后缀可以是大写,也可以是小写,U 和 L 的顺序任意
  • 整数常量举例说明

image-20220824223123295

#include<stdio.h>

void main(){

	int n1 = 0213;       /*八进制*/  // 对应十进制139
	int n2= 0x4b;        /*十六进制*/ // 对应的十进制75

	// 验证
	printf("n1=%d n2=%d",n1,n2);
	getchar();

}

三、浮点常量

  • 浮点常量由整数部分、小数点、小数部分和指数部分组成。您可以使用小数形式或者指数形式来表示浮点常量。
  • 浮点常量举例说明

image-20220824223448499

四、字符常量

  • 字符常量是括在单引号中,例如,‘x’ 可以存储在 char 类型的变量中。字符常量可以是一个普通的字符(例如 ‘x’)、一个转义序列(例如 ‘\t’。
  • 字符常量举例说明

image-20220824223743621

	char c1 = 'a';
	char c2 = '\t'; // '\t'是字符常量

五、字符串常量

  • 字符串字面值或常量是括在双引号 “” 中的。一个字符串包含类似于字符常量的字符:普通的字符、转义序列和通用的字符。可以使用空格做分隔符,把一个很长的字符串常量进行分行
  • 字符串常量举例说明
	char str[20] = "北京 hello"; // "北京 hello" 是字符串常量
	char str2[100] = "hello \
world";  // 字符串常量可以换行书写,等价于 "hello world", \ 反斜杠 就是告诉编译器我要换行,继续写我的内容
	// 验证
	printf("\nstr=%s str2=%s",str1,str2);

image-20220824224925551

P 33 define定义常量 2022/8/25

一、#define 预处理器

  • 使用 #define 预处理器。

image-20220825094936938

案例代码演示:

#include<stdio.h>

#define PI 3.14 //定义常量 PI 常量值3.14 ;后面可以不加 ;分号
int main() {
	//PI = 3.1415 可以修改PI的值吗?答:不可以修改因为PI是常量
	PI = 3.1415;  // 提示左值必须是可以修改的值;就是说PI是不可以修改的
	double area; 
	double r = 1.2;//半径
	area = PI * r * r;
	printf("面积 : %.2f", area);
	getchar();
	return 0;
}

P 34 const定义常量 2022/8/25

一、const关键字

image-20220825101353802

案例代码演示:

#include<stdio.h>

// 说明:
// 1.const 是一个关键字,规定好了的,表示后面定义了一个常量
// 2. PI 是常量名	,既是一个常量,常量值就是3.14
// 3. PI	因为是常量,因此不可以修改
// 4.const 定义常量是需要加;分号
	const double PI = 3.14; 
	int main() {
	//PI = 3.1415 可以吗?
//	PI = 3.1415;   不可以修改
	double area; 
	double r = 1.2;
	area = PI * r * r;
	printf("面积 : %.2f", area);
	getchar();
	return 0;
}

P 35 const和define注意事项(1) 2022/8/25

一、const和#define的区别

  • const定义的常量时,带类型,define不带类型
  • const是在 编译、运行的时候起作用,而define是在编译的预处理阶段起作用
  • define只是简单的替换,没有类型检查。简单的字符串替换会导致边界效应[案例演示]
#include<stdio.h>

#define A 1
//#define B A + 3   // 并没有将A+3当成一个整体
#define B (A + 3)  
#define C A/B*3
void main(){
	// 分析过程
	// #define 就是一个简单的替换;并不是我们想象的有括号
	// C 其实是A/A+3*3 = 1/1+3*3=1+9=10
	// C加括号了,A/(A+3)*3 = 1/(1+3)*3 =?  最后等于0
	double d1 = 1/4*3; //0.25,因为结果要保留整数所以截断了,最后为0*3=0
	double d2 = 1.0/4*3; // 如需要保留,则需要小数进行运算,才可以提升精度,输出0.75
	printf("\nc=%.2f",C); // 问c =	 ?,所以C=10
	printf("\nd1=%.2f",d2);
	getchar();
}
  • const常量可以进行调试的,define是不能进行调试的,主要是预编译阶段就已经替换掉了,调试的时候就没它了

P 36 const和define注意事项(2) 2022/8/25

一、const和#define的区别

  • const不能重定义,不可以定义两个一样的,而define通过undef取消某个符号的定义,再重新定义 [案例]
// const不能重定义,不可以定义两个一样的,而define通过undef取消某个符号的定义,再重新定义
const double PI = 3.14;
//const double PI = 3.145;  会报错 PI重定义

#define PI2 3.14
#undef P12 // 取消P12的定义
#define PI2 3.145 
  • define可以配合#ifdef、 #ifndef、 #endif 来使用, 可以让代码更加灵活,比如我们可以通过#define 来 启动或者关闭 调试信息。[案例]
#include<stdio.h>
// 通过控制有没有定义过一个常量名,来决定代码的一个执行流程
#define DEBUG    // 定义是否决定输出的语句
void main(){
#ifdef DEBUG // 如果你定义ifdef,就输出下面这句话
	printf("OK,调试信息");
#endif
#ifndef DEBUG  // 如果你没有定义ifndef,就输出下面这句话
	printf("hello,另外的信息");
#endif
	getchar();

}

P 37 运算符的基本介绍 2022/8/26

一、运算符的介绍

介绍:运算符是一种特殊的符号,用以表示数据的运算赋值比较

  1. 算术运算符 (+, -, * , / , %取模)
  2. 赋值运算符 (= += -= …)
  3. 关系运算符(比较运算符)(比如 > >= < <= == 等等)
  4. 逻辑运算符 (&& 逻辑与 || 逻辑或 ! 逻辑非)
  5. 位运算符 ,赋值运算符
  6. 按位与 | 按位或 ^ 按位异或 ~ 按位取反等等)
  7. 三元运算符 ( 表达式 ? 表达1 : 表达2)

P 38 算术运算符应用实例 2022/8/26

一、基本介绍

介绍:算术运算符是对数值类型的变量进行运算的,在C程序中使用的非常多

二、算术运算符一览表

image-20220826154520432

三、案例演示

  1. +, - , * , / , %, ++, – , 重点讲解 /、%、++

    // 一、除 / 的案例
    #include<stdio.h>
    
    void main(){
    	// 处理的流程 10 / 4 = 2.5 == 截取整数== > 2==>2.000000
    	double d1 = 10 / 4; // 
    	double d2 = 10.0 / 4;  // 如果希望保留小数,参与运算数必须有 浮点数
    	printf("d1=%f d2=%f",d1,d2);   
    	getchar();
    }
    
    // 二、取模 的案例
    #include<stdio.h>
    
    void main(){
    	// 取模公式  :a % b =a - a / b  * b
    	int res1 = 10 % 3;  // 求10/3的余数
    	int res2 = -10 % 3;  //  -10 - (-10) / 3 * 3 = -10 -(-3)*3=-10-(-9)=-10+9= -1  // -10/3 %d 取整
    	printf("res1=%d res2=%d",res1,res2);
    	getchar();
    }
    
  2. 自增:++作为独立的语句使用: 前++和后++都完全等价于 i=i+1; 作为表达式使用

    前++:++i先自增后赋值

    后++:i++先赋值后自增

    // 三、++的使用
    #include<stdio.h>
    
    void main(){
    	// i++ 先执行后加;++i 先加后执行
    	int i = 10;
    	int j = i++;  // 运算规则是这样子的  等价int j = i; i = i+1  == > i = 11,j = 10
    	int k = ++i; // 运算规等价  i=i+1;int k = i						   == > i = 12,j=12
    
    	printf("\n i=%d j=%d",i,j);
    	printf("\n i=%d k=%d",i,k);  // i=12 ,k=12	,因为前面已经将11赋值给i了,相当于i到下面当做11运算
    
    	++k;  // k=13
    	k++;  // k =14
    	printf("\nk=%d",k);
    	// ++ 或者-- 还可以独立使用,就相当于自增
    	// k++ 等价于 k = k + 1
    	// ++k 等价于 k = k +1
    	// 在独立使用的时候 , 两者是完全一样的
    	getchar();
    }
    
  3. – ,+、-、 是一个道理,完全可以类推。*

P 39 算术运算符注意事项 2022/8/27

一、细节说明

  1. 对于除号 “ / ”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。 例如:int x= 10/3 ,结果是 3
  2. 当对一个数取模时,可以等价 a%b=a-a/b*b , 这样我们可以看到 取模的一个本质运算。
  3. 当 自增 当做一个独立语言使用时,不管是 ++i; 还是 i++; 都是一样的,等价
  4. 当 自增 当做一个 表达式使用时 j = ++i 等价 i = i + 1; j = i;
  5. 当 自增 当做一个 表达式使用时 j = i++ 等价 j = i; i = i + 1;

P 40 算术运算符课堂练习 2022/8/27

一、课堂练习

1.自增自减练习:

// 推理下面分别输出多少? 
#include<stdio.h>

void main() {
		int i1 = 10, i2 = 20;
		int i = i1++;//i =10, i1=11

		printf("i=%d\n",i);// 10
		printf("i1=%d\n", i1);//11
		i = ++i1;
		printf("i=%d\n", i);//12
		printf("i1=%d\n", i1);//12

		i = i2--;
		printf("i=%d\n",i);// 20
		printf("i2=%d\n",i2);//19
		i = --i2;
		printf("i=%d\n", i);//18
		printf("i2=%d\n", i2);//18
		getchar();
}

image-20220827102527591

2.课堂练习二

image-20220827102656348

代码演示以及相关截图:

#include<stdio.h>

void main(){

	// 定义一个变量保存华氏温度,华氏温度转换摄氏温度的公式为:5/9*(华氏温度-100),请求出华氏温度对应的摄氏温度。

	// 思路:
	// 1. 用huaShi 华氏温度
	// 2. 用sheShi 摄氏温度
	// 3. 使用公式进行转换 5/9*(华氏温度-100)

	double huaShi = 146.7;
	double sheShi = 5.0/9*(huaShi-100);   // 5不加.0会被截断
	
	printf("华氏温度%.2f 对应的摄氏温度%.2f",huaShi,sheShi);
	getchar();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一颗星星辰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值