3.1算术运算符

运算符

运算

范例

结果

+

正号

+7

7

-

负号

a=7;-a

-7

+


9+7

16

-


9-7

2

*


9*7

63

/


7/7

1

%

取余

9%7

1

++

++

自增(前):先运算后取值

自增(后):先取值后运算

a=7;b=++a

a=7;b=a++

a=8;b=8

a=8;b=7

--

--

自减(前):先运算后取值

自减(后):先取值后运算

a=7;b=--a

a=7;b=a--

a=6;b=6

a=6;b=7

5.1.1取余

#include<stdio.h>
void main() {
	//因为9和7都为整数,所以结果中整数1后面的小数都被截断,只保留1
	double a = 9 / 7;
	printf("a = %f\n", a);

	//若想要保留小数,则在参加运算的数字中,必须加上小数部分
	double b = 9.0 / 7;
	printf("b = %.15f\n", b);

	//9 % 7 指的是9对7取余(取模)
	int c = 9 % 7;
	printf("c = %d\n", c);

	//计算机中取模的公式为 a - a / b * b
	//-9 - (-9) / 7 * 7
	int d = -9 % 7;
	printf("d = %d\n", d);

	//9 - 9 / (-7) * (-7)
	int e = 9 % -7;
	printf("e = %d\n", e);

	//(-9) - (-9) / (-7) * (-7)
	int f = -9 % -7;
	printf("f = %d\n", f);
}

Double 求余 java double如何取余_Double 求余 java

 计算机中取模的公式为 a - a / b * b

5.1.2 ++

#include<stdio.h>
void main() {
	int a = 7;
	int b = a++;//等价于b = a; a = a + 1;
	printf("a = %d  b = %d\n", a, b);
	int c = ++a;//等价于a = a + 1; c = a;
	printf("a = %d  c = %d\n", a, c);
	//++a和a++可以独立使用,但两者完全等价,都是a = a + 1;
	++a;
	printf("a = %d\n", a);
	a++;
	printf("a = %d", a);
}

Double 求余 java double如何取余_c语言_02

  1. b = a++;//等价于b = a; a = a + 1;
  2. c = ++a;//等价于a = a + 1; c = a;
  3. ++a和a++可以独立使用,但两者完全等价,都是a = a + 1

5.1.3练习

  1. 假如还有97天放假,请问还有多少个星期零几天?
#include<stdio.h>
void main() {
	int weeks, days;
	weeks = 97 / 7;
	days = 97 % 7;
	printf("距离放假还有 % d个星期零 % d天", weeks,days);
}

Double 求余 java double如何取余_操作数_03

  1. 定义一个变量保存华氏温度,华氏温度转换摄氏温度的公式为:5/9*(华氏温度-100),请求出华氏温度对应的摄氏温度。
#include<stdio.h>
void main() {
	//华氏温度转换摄氏温度的公式为:5 / 9 * (华氏温度 - 100),
	double Fahrenhite = 97;
	double Centigrade = 5.0 / 9 * (Fahrenhite - 100);
	printf("%f对应的摄氏温度为%f", Fahrenhite, Centigrade);
}

Double 求余 java double如何取余_c语言_04

3.2关系运算符

3.2.1介绍

  1. 关系运算符的结果为真是非0,为假是0
  2. 关系表达式经常用在if或循环中

3.2.2关系运算符表示

运算符

运算

示例

结果

==

相等于

9 == 7

false

!=

不等于

9 != 7

true

>

大于

9 > 7 

true

<

小于

9 < 7

false

>=

大于等于

9 >= 7

true

<=

小于等于

9<=7

false

3.2.3代码

#include<stdio.h>
void main() {
	int a = 9;
	int b = 7;
	printf("a==b = %d\n",a==b);
	printf("a!=b = %d\n", a != b);
	printf("a>b = %d\n", a > b);
	printf("a<b = %d\n", a < b);
	printf("a>=b = %d\n", a >= b);
	printf("a<=b = %d\n", a <= b);
}

Double 求余 java double如何取余_Double 求余 java_05

 3.3逻辑运算符

3.3.1介绍

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

3.2.2逻辑运算符表示

设变量A为1,变量B为0

运算符

描述

示例

&&

逻辑与运算符。只有两个操作数都为真,结果才为真;否则,则为假

(A && B) 为假

||

逻辑或运算符。只要有一个操作数为真,结果就为真

(A || B)为真

!

逻辑非运算符。如果条件为真,则使其为假

!(A || B)为假

3.2.3代码

3.2.3.1逻辑与运算符

#include<stdio.h>
void main() {
	//double score = 97;
	//double score = 79;
	double score = 59;
	if (score >= 80) {
		printf("优秀");
	}
	else if (score >= 60 && score < 80) {
		printf("良");
	}
	else {
		printf("不合格");
	}
}

Double 求余 java double如何取余_#include_06

#include<stdio.h>
void main() {
	int a = 9, b = 7;
	if (b < 8 && a++ > 9) {// a++ > 9判断中先进行a > 9的判断,再进行a++
		printf("ok1\n");
	}
	printf("a = %d\n", a);
	
	int c = 9, d = 7;
	if (d < 8 && ++c > 9) {// ++c > 9判断中先进行c > 9的判断,再进行++c
		printf("ok2\n");
	}printf("c = %d\n", c);

	int e = 9, f = 7;
	if (f < 6 && ++e > 9) {// 如果在进行&&操作时,第一个判断的结果是false,则之后的条件就不再进行判断
		printf("ok3\n");
	}printf("e = %d", e);
}

Double 求余 java double如何取余_操作数_07

 3.2.3.2逻辑或运算

#include<stdio.h>
void main() {
	int a = 9, b = 7;
	if (a > 7 || b++ > 7) {//在进行逻辑与时候,第一个判断的结果是true,则之后的条件不再进行判断
		printf("ok\n");
	}
	printf("b = %d\n", b);
}

Double 求余 java double如何取余_赋值_08

 3.2.3.3逻辑非运算

#include<stdio.h>
void main() {
	//int score = 97;
	int score = 79;
	int result = score > 80;
	if (result) {
		printf("ok1\n");
	}
	if (!result) {//当result取反为真时
		printf("ok2");
	}
}

Double 求余 java double如何取余_#include_09

3.3赋值运算符

3.3.1介绍

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

3.3.2赋值运算符表示

运算符

描述

示例

=

把右边的操作数赋值给左边的操作数

A = B + C等价于把

B + C的值赋值给A

+=

加且赋值运算符,把左边的操作数加上右边的操作数再赋值给左边的操作数

A += B 等价于 A = A + B

-=

减且赋值运算符,把左边的操作数减去右边的操作数再赋值给左边的操作数

A -= B 等价于 A = A - B

*=

乘且赋值运算符,把左边的操作数乘去右边的操作数再赋值给左边的操作数

A *= B 等价于 A = A * B

/=

除且赋值运算符,把左边的操作数除去右边的操作数再赋值给左边的操作数

A /= B 等价于 A = A / B

%=

求模且赋值运算符,把左边的操作数对去右边的操作数取模,再赋值给左边的操作数

A %= B 等价于 A = A % B

<<=

左移且赋值运算符

C <<= 2 等价于 C = C << 2

>>=

右移且赋值运算符

C >>= 2 等价于 C = C >> 2

&=

按位与且赋值运算符

C &= 2 等价于 C = C & 2

^=

按位异或且赋值运算符

C ^= 2 等价于 C = C ^ 2

|=

按位或且赋值运算符

C |= 2 等价于 C = C | 2

3.3.3代码

#include<stdio.h>
void main() {
	//交换a与b的值
	int a = 9;
	int b = 7;
	int temp = a;//设置一个临时变量保存a的值
	a = b;//将b赋值给a
	b = temp;//将temp赋值给b,即a原来的值复制给b,完成交换
	printf("a = %d\tb = %d", a, b);

	//+=示例
	int c = 97;
	c += a;
	printf("c = %d", c);
}

Double 求余 java double如何取余_#include_10

  1.  运算顺序从右往左
  2. 赋值运算符的左边只能是变量,右边可以是变量、表达式、常量值
  3. 在运算时,如果被赋值的变量精度较小,则有可能会导致精度损失

3.4三元运算符

3.4.1基本语法

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

3.4.2代码

#include<stdio.h>
void main() {
	int a = 9;
	int b = 7;
	int c = a > b ? a++ : --b;//a > b为真,因此a++赋值给c;而a++先进行赋值操作,即c = a,再进行 a = a + 1
	printf("a = %d\nb = %d\nc =%d\n", a, b, c);

	int d = 9;
	int e = 7;
	int f = d < e ? d++ : --e;//d < e为假,因此e--赋值给f;而e--先进行e = e - 1,在进行赋值操作
	printf("d = %d\ne = %d\nf =%d\n", d, e, f);

	//三元运算符中,如果被赋值的变量精度小于赋值变量,则会产生精度损失
	int num1 = a > b ? 1.2 : 1.3;
	printf("num1 = %d\n", num1);

	//三元可以转换为eif else语句
	int num2;
	if (a > b) {
		num2 = 1.2;
	}
	else {
		num2 = 1.3;
	}
	printf("num2 = % d\n", num2);
}

Double 求余 java double如何取余_Double 求余 java_11

  1.  三元运算符中,如果被赋值的变量精度小于赋值变量,则会产生精度损失
  2. 三元可以转换为eif else语句

3.4.3练习

输出三个数中的最大值

#include<stdio.h>
void main() {
	int a = 9;
	int b = 7;
	int c = 97;
	int temp = a > b ? a : b;
	temp = temp > c ? temp : c;
	printf(" a,b,c中的最大值为%d", temp);
}

Double 求余 java double如何取余_赋值_12

 3.5运算符优先级

  1. 结合的方向只有三个是从右向左,其余都是从左向右,分别是赋值运算符、单目运算和三目运算
  2. 逗号的运算符优先级最低
  3. 优先级的大概顺序为算数运算符>关系运算符>逻辑运算符(逻辑非除外,其优先级较高)>赋值运算符>逗号运算符

3.6标识符的命名规则和规范

3.6.1标识符的概念

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

3.6.2标识符的命名规则

  1. 由 26 个英文字母大小写,0-9 ,_或 $ 组成
  2. 数字不可以开头
  3. 不可以使用关键字和保留字,但能包含关键字和保留字
  4. C语言中严格区分大小写,长度无限制
  5. 标识符不能包含空格

3.6.3标识符的规范

  1. 程序中不得出现仅靠大小写区分的相似的标识符                                                                      
  2. 所有宏定义、枚举常数、常量(只读变量)全用大写字母命名,用下划线分隔单词                    
  3. 定义变量别忘了初始化。定义变量时编译器并不一定清空了这块内存,它的值可能是无效的数据, 运行程序, 会异常退出
  4. 变量名、函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写

3.6.4关键字

关键字的定义:被C语言赋予了特殊意义,用于专门用途的字符串

3.7键盘输入语句

3.7.1介绍

在编程中,需要接收用户输入的数据,就可以使用键盘输入语句来获取。

3.7.2步骤

  1. #include<stdio.h>
  2. 使用scanf函数
  3. 使用恰当的格式参数接收输入

3.7.3代码

#include<stdio.h>
void main() {
	char name[20] = "";
	int age;
	double sal = 0.0;
	char gender ;

	printf("请输入名字");//提示用户输入信息
	scanf_s("%s", name, sizeof(name));//scanf_s("%s", name)表示接收一个字符串,并将其存入name数组中

	printf("请输入年龄");
	scanf_s("%d", &age);//将用户输入的信息存入name所指向的地址中,因此需要用&

	printf("请输入薪水");
	scanf_s("%lf", &sal);//在使用scanf时,double对应的参数是%lf

	printf("请输入性别(m/f)");
	scanf_s("%c", &gender, sizeof(gender));//第一个scanf接收回车
	scanf_s("%c", &gender, sizeof(gender));//第二个scanf接收用户数据	

	printf("\n姓名为%s\t年龄为%d\t薪水为%f\t性别为%c", name, age, sal, gender);
}

Double 求余 java double如何取余_c语言_13

3.8练习

  1. 定义变量保存 秒数,打印输出 xx 小时 xx 分钟 xx 秒
#include<stdio.h>
void main() {
	int seconds = 0;
	int hours = 0;
	int minutes = 0;
	int leftSeconds = 0;
	printf("请输入秒数:");
	scanf_s("%d", &seconds);
	hours = seconds / 3600;
	minutes = seconds % 3600 / 60;
	leftSeconds = seconds % 3600 % 60;
	printf("%d小时%d分%d秒", hours, minutes, leftSeconds);
}

Double 求余 java double如何取余_赋值_14

  1. 实现对三个整数进行排序,输出时按照从小到大的顺序输出
#include<stdio.h>
void main() {
	int a = 0;
	int b = 0;
	int c = 0;
	int temp = 0;
	printf("请输入三个数字:");
	scanf_s("%d%d%d", &a, &b, &c);
	if (a > b) {
		temp = a;
	}
	else {
		temp = b;
		b = a;
		a = temp;
	}
	if (a > c && b > c) {
		printf("这三个数字中最大的数字为%d,且它们的从大到小的顺序为%d %d %d", temp, a, b, c);
	}
	else if ( a > c &&  b < c){
		printf("这三个数字中最大的数字为%d,且它们的从大到小的顺序为%d %d %d", temp, a, c, b);
	}
	else {
		printf("这三个数字中最大的数字为%d,且它们的从大到小的顺序为%d %d %d", c, c, a, b);
	}
}

Double 求余 java double如何取余_Double 求余 java_15