=================================== 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 ; 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 ; 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); 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>c?a:c) : (b>c?b: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); 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" ); 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 )) { 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 )) { 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 )) { 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 ); } return 0 ; }
输入三个值判断这三个值是否构成三角形
(是否是直角 等腰 等边 普通 不能)
1 2 3 4 5 6 7 #include <stdio.h> int main (void ) { return 0 ; }