=========================== 2022-7-18 ===========================
一.温故知新 运算符
算术运算符 + - * / %
注意 : 除法运算符中除数不能为0
关系运算符 > < == >= <= !=
注意 :
1.一个表达式经过关系运算符的运算最后是真假值
2.判断两个值是否相等用==
3.if(a == 13) 建议 if(13 == a)
逻辑运算符 && || !
注意 :
1.一个表达式经过逻辑运算符的运算最后是真假值
2.条件1 && 条件2
条件1为真,会执行条件2
条件1为假,不会执行条件2
3.条件1 || 条件2
条件1为真,不会执行条件2
条件1为假,会执行条件2
赋值运算符 = += -= *= /= &= |= ...
注意 : 先计算右边的项,再和左边结合
位运算符 << >> & | ~ ^
注意 : 操作数符号的问题
条件运算符 ? :
注意 : 是C语言中唯一的一个三目运算符
下标运算符 []
指针运算符 * &
分量运算符 . ->
求字节大小运算符sizeof()
注意 : sizeof不是函数,是一个运算符
强制类型转换 ()
注意 : 会在指针的时候使用
自增自减 ++ --
逗号运算符 ,
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 #include <stdio.h> #include <stdlib.h> int main (int argc, char *argv[]) { int a = 0 , b = 0 ; scanf ("%d-%d" , &a, &b); printf ("a = %d b = %d\n" , a, b); a = a ^ b; b = a ^ b; a = a ^ b; printf ("a = %d b = %d\n" , a, b); return 0 ; }
1 2 3 4 5 6 7 8 9 10 11 12 13 #include <stdio.h> #include <stdlib.h> int main (int argc, char *argv[]) { int a = 10 , sum = 0 ; sum += a++; printf ("a = %d sum = %d\n" , a, sum); return 0 ; }
逗号运算符 如果一个表达式使用了逗号运算符
如果没有加小括号,那么会把第一个项的结果赋值给变量
如果有加小括号,那么会把最后一个项的结果赋值给变量
1 2 3 4 5 6 7 8 9 10 11 12 13 #include <stdio.h> #include <stdlib.h> int main (int argc, char *argv[]) { int a = 0 , b = 10 , c = 20 , d = 30 ; a = (b++,c+5 ,d+10 ); printf ("a = %d\n" , a); return 0 ; }
分支结构 if
1.if else是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.if else if else if使用方法
语句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
5.使用if需要注意的问题
1>if关键字之后必须要写小括号,小括号内必须写内容
2>else关键字之后不能直接加小括号写条件,需要写成else if
3>if(条件)之后可以直接加 ;
if(条件);
{
语句
}
等价于
if(条件)
{
;
}
{
语句
}
4>if(条件)之下可以不加大括号
if(条件)
语句1
语句2
等价于
if(条件)
{
语句1
}
语句2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include <stdio.h> #include <stdlib.h> int main (int argc, char *argv[]) { int c = 0 ; scanf ("%d" , &c); if ((c & 1 ) == 0 ) { printf ("%d是偶数!\n" , c); } return 0 ; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #include <stdio.h> #include <stdlib.h> int main (int argc, char *argv[]) { int c = 0 ; scanf ("%d" , &c); if ((c & 1 ) == 0 ) { printf ("%d是偶数!\n" , c); } else { printf ("%d是奇数!\n" , c); } return 0 ; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #include <stdio.h> #include <stdlib.h> int main (int argc, char *argv[]) { int year = 0 ; scanf ("%d" , &year); if ((!(year%4 )&&year%100 ) || !(year%400 )) { 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 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 #include <stdio.h> #include <stdlib.h> int main (int argc, char *argv[]) { int a = 0 , b = 0 , c = 0 ; scanf ("%d-%d-%d" , &a, &b, &c); if (a+b>c && a+c>b && b+c>a) { if (a*a+b*b==c*c || a*a+c*c==b*b || b*b+c*c==a*a) { printf ("可以构成直角三角形!\n" ); } else if (a == b || a == c || b == c) { if (a == b && a == c) { printf ("可以构成等边三角形!\n" ); } else { printf ("可以构成等腰三角形!\n" ); } } else { printf ("可以构成普通三角形!\n" ); } } else { printf ("不能构成三角形!\n" ); } return 0 ; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #include <stdio.h> #include <stdlib.h> int main (int argc, char *argv[]) { int i = 0 ; scanf ("%d" , &i); switch (i) { case 1 : printf ("Hello World!\n" ); case 2 : printf ("北京欢迎您!\n" ); case 3 : printf ("物联网嵌入式!\n" ); case 4 : printf ("今天好热!\n" ); } return 0 ; }
输入年月日,打印出是该年的第几天
//2022-7-18
是2022年的第?天
2022-1-9 9天
2022-2-9 9+31天
2022-3-9 9+(28||29)+31
2022-4-9 9+31+(28||29)+31
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> #include <stdlib.h> int main (int argc, char *argv[]) { int year = 0 , month = 0 , day = 0 ; int flag = 0 ; int days = 0 ; scanf ("%d-%d-%d" , &year, &month, &day); flag = (!(year%4 )&&(year%100 )) || !(year%400 ); switch (month) { case 1 : days += day; break ; case 2 : days += (day + 31 ); break ; case 3 : days += (day + 59 + flag); break ; case 4 : days += (day + 90 + flag); break ; case 5 : days += (day + 120 + flag); break ; case 6 : days += (day + 151 + flag); break ; case 7 : days += (day + 181 + flag); break ; case 8 : days += (day + 212 + flag); break ; case 9 : days += (day + 243 + flag); break ; case 10 : days += (day + 273 + flag); break ; case 11 : days += (day + 304 + flag); break ; case 12 : days += (day + 334 + flag); break ; } printf ("%d年%d月%d日是这一年的第%d天!\n" , year, month, day, days); 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 26 27 28 29 30 31 32 33 34 35 #include <stdio.h> #include <stdlib.h> int main (int argc, char *argv[]) { int year = 0 , month = 0 , day = 0 ; int flag = 0 ; int days = 0 ; scanf ("%d-%d-%d" , &year, &month, &day); flag = (!(year%4 )&&(year%100 )) || !(year%400 ); switch (month) { case 12 : days += 30 ; case 11 : days += 31 ; case 10 : days += 30 ; case 9 : days += 31 ; case 8 : days += 31 ; case 7 : days += 30 ; case 6 : days += 31 ; case 5 : days += 30 ; case 4 : days += 31 ; case 3 : days += (28 + flag); case 2 : days += 31 ; case 1 : days += day; } printf ("%d年%d月%d日是这一年的第%d天!\n" , year, month, day, days); return 0 ; }
循环语句 for
1.for是C语言中的关键字
2.for循环的使用方法
语句1
for(循环变量的赋值; 循环变量的控制; 循环变量的变化)
{
循环的语句
}
语句2
3.for循环的执行流程
语句1
|
V
循环变量的赋值
|
V
|-<-循环变量的控制--<---|
| | |
V V |
假 真 |
| | ^
V V |
| 循环的语句 |
| | ^
| V |
| 循环变量的变化-->---|
|
|---->------|
V
语句2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include <stdio.h> #include <stdlib.h> int main (int argc, char *argv[]) { int i = 0 , score = 0 ; for (i = 0 ; i < 10 ; i++) { scanf ("%d" , &score); printf ("score = %d\n" , score); } return 0 ; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #include <stdio.h> #include <stdlib.h> int main (int argc, char *argv[]) { int i = 0 ; int b = 0 , s = 0 , g = 0 ; for (i = 100 ; i < 1000 ; i++) { b = i / 100 ; s = i / 10 % 10 ; g = i% 10 ; if (i == b*b*b + s*s*s + g*g*g) printf ("i = %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 21 22 #include <stdio.h> #include <stdlib.h> int main (int argc, char *argv[]) { int i = 0 ; int b = 0 , s = 0 , g = 0 ; for (b = 1 ; b < 10 ; b++) { for (s = 0 ; s < 10 ; s++) { for (g = 0 ; g < 10 ; g++) { if (b*b*b+s*s*s+g*g*g==b*100 +s*10 +g) printf ("%d\n" , b*100 +s*10 +g); } } } return 0 ; }
/*
打印0~100以内所有的质数(素数)
(只能被1 和 本身整除的数)
*/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #include <stdio.h> #include <stdlib.h> int main (int argc, char *argv[]) { int i = 0 , j = 0 ; int num = 1 ; for (i = 2 ; i < 100 ; i++) { for (j = 2 ; j < i; j++) { if (i % j == 0 ) { break ; } } if (i == j) printf ("[%d] %d\n" , num++, i); } return 0 ; }
/*
11 是不是质数
11 % 1 = 0
11 % 2 != 0
11 % 3 != 0
11 % 4 != 0
11 % 5 != 0
11 % 6 != 0
11 % 7 != 0
11 % 8 != 0
11 % 9 != 0
11 % 10 != 0
11 % 11 = 0
8 是不是质数
8 % 1 = 0
8 % 2 = 0 能整除
8 % 3 != 0
8 % 4 = 0 能整除
8 % 5 != 0
8 % 6 != 0
8 % 7 != 0
8 % 8 = 0
i 是不是质数
i % 1 = 0
i % [2 ~ i-1]
i % i = 0
*/