C语言——运算符

运算符

1.运算符介绍

image-20221017210916112

2.算术运算符

(1)介绍

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

image-20221017211334606

+ - * / 四则运算不必多说,下面着重% ++ –

(2)取模%

取模的公式:a%b = a-a/b*b
#include <stdio.h>
int main(){
	
	//处理的流程 10/4 = 2.5 ==截取整数==>2 => 2.000000
	double d1 = 10/4;
	double d2 = 10.0/4;
	
	//取模的公式
	//a%b = a-a/b*b
	int res1 = 10%3;//求10/3的余数1
	int res2 = -10%3;//=-10-(-10)/3*3=-10-(-3)*3=-10+9=-1
	int res3 = 10 %-3;
	int res4 = -10%-3;
	
	
	printf("\nres1=%d res2=%d res3=%d res4=%d",res1,res2,res3,res4);
	printf("\nd1=%f d2=%f",d1,d2);
	getchar();
}

image-20221018090646083

(3)++的使用

//++的使用
	int i =10;
	int j =i++;//运算规则等价是int j=i;i=i+1; ==>j=10,i=11
	int k = ++i;//运算规则等价是i=i+1;int k = i;==>i=12,k=12

	printf("\n i=%d j=%d",i,j);//i=12 j=10
	printf("\n i=%d k=%d",i,k);//i=12 k=12
	
	//++或者--还可以独立使用,就相当于自增
	//k++等价于k=k+1
	//++k等价于k=k+1
	//独立使用,两者完全等价

(4)练习题

1.假如还有97天放假,问:xx个星期零xx天

#include <stdio.h>
int main(){
	//思路
	//1.定义一个days保存天数
	//2.定义week 保存计算得到的星期
	//3.定义leftDays保存剩余的天数
	//4.使用%和/
	
	//代码
	int days =97;
	int week =days/7;
	int leftDays=days%7;	
	printf("有%d个星期零%d天 放假",week,leftDays);
	getchar();
}

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

#include <stdio.h>
/*
思路分析
1.用huaShi 表示 华氏温度
2.用sheShi 表示 摄氏温度
3.使用公式来进行转换5/9*(华氏温度-100)
*/
int main(){
	double huaShi = 146.7;
	double sheShi = 5.0/9*(huaShi - 100);	
	printf("\n 华氏温度 %.2f 对应的摄氏温度是 %.2f",huaShi,sheShi);
	getchar();	
}

3.关系运算符

1.介绍

1)关系运算符的结果要么是真(非0 表示),要么是 假(0 表示)

2)关系表达式 经常用在 if结构的条件中或循环结构的条件中

image-20221018112614502

2.细节说明

1)关系运算符的结果要么是真(非0 表示, 默认使用1),要么是 假(0 表示)

2)关系运算符组成的表达式,我们称为关系表达式。 a > b

3)比较运算符 “==”(关系运算符) 不能误写成 “=” (赋值)

3.演示

#include <stdio.h>
int main(){
	int a = 8;
	int b =7;
	printf("\n a>b=%d",a>b);//非0
	printf("\n a>=b=%d",a>=b);
	printf("\n a<b=%d",a<b);
	printf("\n a<=%d",a<=b);
	printf("\n a==%d",a==b);
	getchar();
}

image-20221018114755570

4.逻辑运算符

(1)介绍

用于连接多个条件(一般来讲就是关系表达式),最终的结果要么是真(非0 表示),要么是 假(0 表示) 。

image-20221018125035659

(2)案例演示

1.逻辑与&&演示
#include <stdio.h>
int main() {
	int a = 10, b = 99;
    if(a < 2 && b++>100) { 
		printf("ok100");
	}
		printf("b=%d\n", b); //这里b输出多少  99
	getchar();
}

​ 说明:
​ //1.在进行&&操作时,如果第一个条件为false,则后面的条件不在判断
​ //2.该现象称为短路现象,所以逻辑与 也称为 短路逻辑与

2.逻辑或||演示
int a = 10, b = 99;
	if(a > 5 || b++>100) {
		printf("ok100");
	}
		printf("b=%d\n", b);//

	getchar();

说明:
1.在进行逻辑与时,如果第一个条件为真,则不再执行后面的条件,整个结果为真
2.该现象称为 逻辑或短路现象,因此逻辑或也称为 短路逻辑或

image-20221018140041985

void main() {
	int x=1;
	int y=0;
	short z=42;
	if((z++==42)&&(y=1)) { // z = 43 , y =1
		z++; // z = 44
	}
	if((x=0) || (++z==45)) { // z = 45
		z++; // z = 46
	}
	printf("z=%d", z); // z 为46
	getchar()
}

5.赋值运算符

(1)介绍

赋值运算符就是将某个运算后的值,赋给指定的变量

image-20221018141333462

(2)赋值运算符的特点

  1. 运算顺序从右往左

  2. 赋值运算符的左边 只能是变量,右边 可以是变量、表达式、常量值

  3. 复合赋值运算符等价于下面的效果比如:a+=3;等价于a=a+3;

6.三元运算符

(1)基本语法

条件表达式?表达式1:表达式2;

如果条件表达式为非0 (真),运算后的结果是表达式1;

如果条件表达式为0 (假),运算后的结果是表达式2;

(2)使用细节

1.表达式1和表达式2要为可以赋给接收变量的类型(或可以自动转换), 否则会有精度损失

2.三元运算符可以转成if–else语句

(3)案例演示

实现三个数的最大值

#include <stdio.h>
int main(){
	int a =10;
	int b =100;
	int c =199;
	int max =a>b?a:b;
	int max1=max>c?max:c;
	printf("max=%d,max1=%d",max,max1);
	getchar();
}

6.运算符的优先级

image-20221018152451811

运算符分为单目,双目和三目

顾名思义,就是运算符的操作数的个数
单目就是一个操作数,比如++,a++,操作数只有一个a,写成a++b是非法的。
双目就是两个操作数,最熟悉的就是+,a+b,计算ab的和
三目就是三个操作数,目前只有一个条件运算符,?运算符,比如a?b:c,当a的值为真时,结果是b,否则结果是c。
注意点:单目从右向左,双目从左向右

7.标识符的命名规则和规范

(1)标识符概念

C语言对各种变量,函数等命名时使用的字符序列称为标识符,凡是自己可以起名字的地方都叫标识符

(2)命名规则

1.由26个英文字母大小写,0-9,_或$组成

2.数字不可以开头

3.不可以使用关键字和保留字,但能包含关键字和保留字

4.C语言中严格区分大小写,长度无限制

5.标识符不能包含空格

(3)标识符命名规范

image-20221018183100186

(4)关键字

image-20221018183418696

8.键盘输入语句

注意:1.回车键是一个字符,%c会接收到回车,导致出现问题

2.c语言char是一个字节,不能存单个汉字,单个汉字用char存还会溢出

#include <stdio.h>
int main(void){
	
	//使用字符数组接受名
	char name[10]="";
	int age = 0;
	double sal = 0.0;
	char gender = ' ';
	
	//提示用户输入信息
	printf("请输入名字:");
	//scanf("%s",name)表示接收一个字符串,存放到name字符数组
	scanf("%s",name);
	
	printf("请输入年龄:");
	scanf("%d ",&age);//为什么要加&
	//因为我们将得到输入存放age变量指向地址,因此需要加&
	
	printf("请输入薪水:");
	scanf("%lf",&sal);//接收到一个double时,格式参数%lf
	scanf("%lf",&sal);
	
	printf("请输入性别(m/f)");
	scanf("%c",&gender);//这里是接收到了上面的回车字符
	scanf("%c",&gender);//等待用户输入
	
	//输出得到信息
	printf("\n name%s age%d sal%.2f gender%c ",name,age,sal,gender);
	
	getchar();//接收到一个回车
	getchar();//这个getchar()才会让控制台暂停
}

9.本章练习

1.定义变量保存 秒数,打印输出 xx小时xx分钟xx秒
#include <stdio.h>
int main(){
	//定义变量保存秒数,打印输出xx小时xx分钟xx秒
	//思路
	//1.定义变量保存 秒数second
	//2.定义变量保存 小时hour
	//3.定义变量保存 分钟min
	//4.定义变量保存  剩余描述leftSecond
	
	int second = 894567;
	int hour = second/3600;//一个小时有3600秒
	int min = second %3600/60;
	int leftSecond = second%60;
	
	printf("%d 秒合%d小时%d分钟%d秒",second,hour,min,leftSecond);
	getchar();
}
2.实现对三个整数进行排序,输出时按照从小到大的顺序输出
	int n1 =88;
	int n2 =77;
	int n3 =66;
	printf("\n最初顺序 n1=%d n2=%d n3=%d",n1,n2,n3);
	//思路如下
	//1.从小到大将值保存n1 n2 n3
	//2.n1和n2比较,如果n1大于n2,则交换
	//3.n2和n3比较,如果n2大于n3,则交换
	//4.n1和n2比较,如果n1大于n2,则交换
	int temp = 0;
	if(n1>n2){
		temp = n1;
		n1 = n2;
		n2 = temp;
	}
	printf("\n第一次处理 n1=%d n2=%d n3=%d",n1,n2,n3);
	if(n2>n3){
		temp = n2;
		n2 = n3;
		n3 = temp;
	}
	printf("\n第二次处理 n1=%d n2=%d n3=%d",n1,n2,n3);
	if(n1>n2){
		temp = n1;
		n1 = n2;
		n2 = temp;
	}
	printf("\n第三次处理 n1=%d n2=%d n3=%d",n1,n2,n3);
	
	getchar();
}


  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值