文章目录
1 运算符与表达式
1.1 常用运算符分类
1.2 算术运算符
案例一,两数相除得小数:
int main()
{
int a = 10;
int b = 20;
int c = a + b;
int d = a - b;
int e = a * b;
printf("%d %d %d\n",c,d,e);
//两数相除,如果要得到小数,必须有一个是double类型或float类型
//double f = a*1.0 / b;//0.5
//int f = b / a;
//int f = a / 0;err 除数不能为0
printf("%lf\n",f);
system("pause");
return 0;
}
案例二,取数字各位:
int main()
{
int num = 8981234;
int a = num % 10;//个位
int b = num / 10 % 10;//十位
int c = num / 100 % 10;//百位
int d = num / 1000 % 10;//千位
printf("%d %d %d %d\n",d,c,b,a);
system("pause");
return 0;
}
案例三,自加自减:
如果自加自减单独使用都是加1或减1
如果结合其他表达式一起使用: 看++或–在前还是在后,如果在前,先自加自减,在使用,如果在后, 先使用,在自加或自减
int main()
{
// 自加 自减
//a = a + 1;// a++ ++a
int a = 1;
int b = 0;
int c = 2;
//如果a++ 和++a单独使用,效果相同 都是a = a+1
//a++;//a=a+1
//++a;//a=a+1;
//b = a++;// ++在后,先使用,在自加 b=a, a=a+1
b = ++a;//++在前 先自加,在使用a=a+1, b=a
printf("b=%d a=%d\n",b, a);
//printf("c= %d\n",c++);//先打印(使用),在自加
printf("c= %d\n", ++c);//先自加,在使用
printf("c= %d\n", c);
system("pause");
return 0;
}
1.3 赋值运算符
//赋值运算
int main()
{
int a = 1;
//a = a + 2; a +=2;
//a += 2;
//a -= 5;//a= a-5;
//a *= 5;//a =a*5
printf("%d\n",a);
system("pause");
return 0;
}
1.4 比较运算符
c语言中0为假,1为真
int main()
{
printf("%d\n",3==4);
printf("%d\n", 3 != 4);
printf("%d\n", 3 > 4);
printf("%d\n", 3 < 4);
printf("%d\n", 3 <= 4);
system("pause");
return 0;
}
1.5 逻辑运算符
int main()
{
//非0 为真
int a = 0;
int b = 1;
/*printf("%d\n",!a);
printf("%d\n", !0);
printf("%d\n", !-1);*/
//逻辑&& A && B 必须A和B都为真,整个表达式才为真
//如果A 表达式为假,B表达式不执行
printf("%d\n",a && b++);
printf("a=%d b=%d\n",a,b);
system("pause");
return 0;
}
int main()
{
int a = 0;
int b = 1;
int c = 0;
printf("%d\n",a || b);
printf("%d\n", a || c);
printf("%d\n", b || a++);
printf("a=%d b=%d\n",a,b);
system("pause");
return 0;
}
1.6 逗号运算符
int main()
{
int a = 1;
int b = 2;
//逗号运算符,最终的结果是最后一个表达式的结果
int c = (a++,b++,a+b,10,200,a+b,1000);
printf("%d\n",c);
system("pause");
return 0;
}
2 运算符优先级
3 程序流程结构
C语言支持最基本的三种程序运行结构:顺序结构、选择结构、循环结构。
- 顺序结构:程序按顺序执行,不发生跳转。
- 选择结构:依据是否满足条件,有选择的执行相应功能。
- 循环结构:依据条件是否满足,循环多次执行某段代码。
3.1 选择结构
3.1.1 if、else 、else if
int main()
{
int a = 2;
int b = 3;
//if后面不要加 分号,分号是空语句
//一般if后面加上{},{}里面的语句都属于if
//如果if后面不加{},只有if后面的一条语句属于if
/*if (a == b);
{
printf("a==b\n");
}*/
if (a == 3)
{
printf("a==b\n");
}
system("pause");
return 0;
}
3.1.2 switch语句
#include <stdio.h>
int main()
{
char c;
c = getchar();
switch (c) //参数只能是整型变量
{
case '1':
printf("OK\n");
break;//switch遇到break就中断了
case '2':
printf("not OK\n");
break;
default:
//如果上面的条件都不满足,那么执行default
printf("are u ok?\n");
}
return 0;
}
3.2.3 三目运算符
//三目运算符
int main()
{
int a = 10;
int b = 20;
int c = 0;
//求a和b的最大值给c
//if (a > b)
//{
// c = a;
//}
////else
//{
// c = b;
//}
c = a > b ? a : b;
printf("c=%d\n",c);
system("pause");
return 0;
}
3.2 循环结构
3.2.1 while循环
int main()
{
// 1 +2+3+4+...+100
int i = 1;
int sum = 0;
//while(条件) 条件为真就执行,为假结束循环
//while()后面不要加分号
while (i <= 100)
{
sum = sum + i;
i++;
}
//while (1);//死循环
printf("sum =%d\n",sum);
system("pause");
return 0;
}
3.2.2 do while循环
int main()
{
// 1 +2+3+4+...+100
int i = 1;
int sum = 0;
//while()后面需要加分号
do {
sum += i;
i++;
} while (i<=100);
printf("%d\n",sum);
system("pause");
return 0;
}
3.2.3 for循环
for(A ; B ; C)
{
D;
}
A表达式只会执行一次,B是执行条件,C一条语句
执行顺序: A-> B(条件) ->{D} -> C -> B(条件) ->{D} -> C ....
int main()
{
int i = 1;
int sum = 0;
//for()后面不能加分号
for ( ; i<=100 ;)//如果for循环不写条件,条件默认为真
{
sum += i;
i++;
}
printf("sum=%d\n",sum);
system("pause");
return 0;
}
3.2.4 跳转语句break、continue、goto
break:跳出switch或者离break最近的循环
int main()
{
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
{
if (j == 1)
break;
printf("i= %d j=%d\n",i,j);
}
}
system("pause");
return 0;
}
continue:结束本次循环,并执行下一次循环
#include<stdio.h>
int main()
{
int sum = 0; //定义变量sum
for (int i = 1; i <= 100; i++)
{
if (i % 2 == 0) //如果i是一个偶数,执行if语句中的代码
{
continue; //结束本次循环
}
sum += i; //实现sum和i的累加
}
printf("sum = %d\n", sum);
return 0;
}
goto:无条件跳转,不推荐使用
#include <stdio.h>
int main()
{
goto End; //无条件跳转到End的标识
printf("aaaaaaaaa\n");
End:
printf("bbbbbbbb\n");
return 0;
}