01test_04day

01test_04day

===================================
2022-7-5
===================================

一.温故知新

    变量
    1.变量的含义
    变量就是用来存储数据
    2.变量的定义
    数据类型	变量名	;
    基本数据类型
        整型		有符号/无符号	short int long
        实型		有符号		float double
        字符型	有符号/无符号	char
    sizeof是一个运算符,不是函数
        sizeof(数据类型/变量名),以字节为单位
    /usr/include/limits.h
    变量名
    
    3.变量的初始化
    数据类型	变量名	=	数值	;
    int		a		=	100	;
    float	f		=	3.14;

    4.变量的使用规则
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
-----------------------------
scanf
scanf("", );
-----------------------------
运算符
算术运算符	+ - * / %(取余 取模)
关系运算符	> < == >= <= !=
逻辑运算符	&& || !
a b c
a + b > c && a + c > b && b + c > a
a * a + b * b == c * c || a * a + c * c == b * b ||
b * b + c * c == a * a
a == b || a == c || b == c
a == b && a == c
赋值运算符	= += -= *= /= ...
作业
1.把今天讲过的内容完整的复习一遍
2.使用条件运算符和分支语句各解决一遍求闰年问题
3.输入三个值判断这三个值是否构成三角形
(是否是直角 等腰 等边 普通 不能)	
4.输入三个整数x,y,z,请把这三个数由从小到大输出
5.输入相应的字符打印相应的语句(默认不区分大小写)
输入a,打印	钟薛高18块钱
输入b,打印	梦龙8块钱
输入c,打印	老冰棒1块钱
输入d,打印	雪莲0.5块钱
================================
录入成绩
0 ~ 59	打印	不及格
60 ~ 69 打印 及格
70 ~ 79 打印 中
80 ~ 89 打印 良
90 ~ 100 打印 优秀

赋值运算符

    = += -= *= /= %= <<= >>= &= |=
    int a;
    a = 9527;
先把赋值运算符右边的项进行计算,再赋值给赋值运算符左边的项
        左边的项也叫做(左值)
具有存储能力的都可以做左值(变量\指针\数组成员...)
常量(整数\字符\字符串...)不能做左值

设x为int型变量,则执行以下语句后
x = 10;
x += x -= x - x;
x = x + (x -= x - x)
x = x + (x = x - (x - x))
x的值为?20
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
#include <stdio.h>

int main(void)
{
	int a = 100;

	printf("a = %d\n", a);
	
	a += 2;// => 等价于 a = a + 2
	
	printf("a = %d\n", a);

	return 0;
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
#include <stdio.h>

int main(void)
{
	int a = 100;

	printf("a = %d\n", a);
	
	a *= 2 + 3;
	/*
		a = a * (2 + 3);
	*/
	
	printf("a = %d\n", a);

	return 0;
}

条件运算符(? :)

    也是C语言中唯一的一个三目运算符
    part.1 ? part.2 : part.3;
    如果part.1为真,则会执行part.2的内容,略过part.3
    如果part.1为假,则会执行part.3的内容,略过part.2
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
#include <stdio.h>

int main(void)
{
	int a = 0, b = 0;
	int max = 0;

	scanf("%d-%d", &a, &b);

	max = a > b ? a : b;

	printf("max = %d\n", max);

	return 0;
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>

int main(void)
{
	int a = 0, b = 0;
	int max = 0;

	scanf("%d-%d", &a, &b);

	max = a>b?printf("a = %d\n", a):printf("b = %d\n", b);
/*
如果a > b为真, max = printf("a = %d\n", a);
如果a > b为假, max = printf("b = %d\n", b);
注意:max获取的并不是变量的值,而是printf函数的返回值

max = a > b ? a : b;
如果a > b为真, max = a;
如果a > b为假, max = b;
*/
	printf("max = %d\n", max);

	return 0;
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <stdio.h>

int main(void)
{
	int a = 0, b = 0, c = 0;
	int max = 0, max1 = 0;

	scanf("%d-%d-%d", &a, &b, &c);
	//max = a > b ? a : b;
	//使用条件运算符求三个变量中的最大值
	
	max = (a > b) ? (a>c?a:c) : (b>c?b:c);

/*
	max1 = a > b ? a : b;
	max = max1 > c ? max1 : c;
	
	max = a > b ? a : b;
	max = max > c ? max : c;
*/

	printf("max = %d\n", max);

	return 0;
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
#include <stdio.h>

int main(void)
{
	int year = 0;

	scanf("%d", &year);
//通过条件运算符判断year是闰年还是平年
/*
	能被4整除但是不能被100整除或者能被400整除
	就是闰年
	2022 2020 2000 1900(平年)
*/

	return 0;
}

强制类型转换运算符

    (数据类型)
    可以把目标的数据类型临时的转换成你想转换的数据类型
注意 : 强制类型转换运算符并不会修改本身的数据类型
注意 : 尤其是以后转换指针时使用比较多
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#include <stdio.h>

int main(void)
{
	float f = 3.14;

	printf("f = %d\n", (int)f);

	return 0;
}

自增自减运算符

    ++ --
无论是自增还是自减,所改变的数量级都是1
注意 : 
    如果自增的运算自己为独立的一条语句,
        那么a++和++a没有任何区别,都是自增1
    
    如果自增的运算和别的语句一起来使用,那么就有区别了
        a++ : 先使用a的值做操作,再自增
        ++a : 先自增,再使用a的值做操作
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
#include <stdio.h>

int main(void)
{
	int a = 0;

	printf("a++ = %d\n", a++);
	printf("做完a++之后a的值是%d\n", a);

	a = 0;

	printf("++a = %d\n", ++a);
	printf("做完++a之后a的值是%d\n", a);

	return 0;
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
#include <stdio.h>

int main(void)
{
	int a = 0, b = 0;
	
	//a++ && b++ ? printf("Hello\n") : printf("World\n");
	//a++ && ++b ? printf("Hello\n") : printf("World\n");
	//++a && ++b ? printf("Hello\n") : printf("World\n");
	++a || b++ ? printf("Hello\n") : printf("World\n");
	
	printf("a = %d b = %d\n", a, b);

	return 0;
}

分支语句->if

1.if是C语言的关键字
2.if的结构
语句1
if(条件)
{
    语句2
}
语句3
语句1->条件的判断(真)->语句2->语句3->结束
            |
            (假)->语句3->结束
3.if...else的结构
语句1
if(条件)
{
    语句2
}
else
{
    语句3
}
语句4
语句1->条件的判断(真)->语句2->语句4->结束
            |
            (假)->语句3->语句4->结束
4.多分支结构
语句1
if(条件1)
{
    语句2
}
else if(条件2)
{
    语句3
}
else if(条件3)
{
    语句4
}
else
{	
    语句5
}
语句6
语句1->条件1的判断(真)->语句2->语句6->结束
        |
        (假)->条件2的判断(真)->语句3->语句6->结束
                |
                (假)->条件3的判断(真)->语句4->语句6->结束
                        |
                        (假)->语句5->语句6->结束
注意
1.if else都是C语言的关键字
2.if关键字之后必须要加小括号,小括号内部必须要写条件,不能空者
3.在if(条件)之后可以加分号
    if(0);
    {
        printf("Hello World!\n");
    }
    等价于
    if(0)
    {
        ;
    }
    {
        printf("Hello World!\n");
    }
4.在if(条件)之下可以不写大括号
(以后写代码即使if的语句只有一条,也要加上大括号)
    if(0)
        printf("Hello\n");
        printf("World!\n");
    等价于
    if(0)
    {
        printf("Hello\n");
    }
    printf("World!\n");
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
#include <stdio.h>

int main(void)
{
	int i = 0;

	scanf("%d", &i);

	if(i < 100)
	{

		printf("Hello World!\n");
	}

	return 0;
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
#include <stdio.h>

int main(void)
{
	int i = 0;

	scanf("%d", &i);

	//if(i % 2 == 0)//!(i % 2)
	if(!(i % 2))
	{
		printf("%d这个值是偶数!\n", i);
	}

	return 0;
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>

int main(void)
{
	int i = 0;

	scanf("%d", &i);

	//if(i % 2 == 0)//!(i % 2)
	if(!(i % 2))
	{
		printf("%d这个值是偶数!\n", i);
	}
	else
	{
		printf("%d这个值是奇数!\n", i);
	}

	return 0;
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>

int main(void)
{
	int year = 0;

	scanf("%d", &year);

	if((year%4==0 && year%100!=0) || (year%400==0))
		//2022 2020 2000 1900
	{
		printf("%d这一年是闰年!\n", year);
	}
	else
	{
		printf("%d这一年是平年!\n", year);
	}

	return 0;
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>

int main(void)
{
	int a = 0, b = 0;

	scanf("%d-%d", &a, &b);

	if(a > b)
	{
		printf("Hello World!\n");
	}
	else if(a < b)
	{
		printf("Hello Beijing!\n");
	}
	else
	{
		printf("Hello Changping!\n");
	}

	return 0;
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#include <stdio.h>

int main(void)
{
	if(0)
		printf("Hello\n");
		printf("World!\n");

	return 0;
}
练习
键入一个整数x,
如果小于3则执行x+3操作,
如果大于等于3则执行3*x+9
如果大于9则执行9*x-10
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <stdio.h>

int main(void)
{
	int x = 0;

	scanf("%d", &x);
	if(x < 3)
	{
		printf("x + 3 = %d\n", x + 3);
	}
	else if(x > 9)
	{
		printf("9 * x - 10 = %d\n", 9 * x - 10);
	}
	else
	{
		printf("3 * x + 9 = %d\n", 3 * x + 9);
	}
/*
	if(x < 3)
	{
		printf("x + 3 = %d\n", x + 3);
	}
	else if(x >= 3 && x <= 9)
	{
		printf("3 * x + 9 = %d\n", 3 * x + 9);
	}
	else
	{
		printf("9 * x - 10 = %d\n", 9 * x - 10);
	}
*/
	return 0;
}
输入三个值判断这三个值是否构成三角形
(是否是直角 等腰 等边 普通 不能)
1
2
3
4
5
6
7
#include <stdio.h>

int main(void)
{

	return 0;
}