-
笔记部分
1. 运算符
- 算术运算符 + - * /(除)%(取余数)
- 关系运算符 > >= < <= !=(不等于) ==(等于)
- 逻辑运算符 !(非)&&(并)||(或)
- 赋值运算符 = += *= /= -= 优先级:算术>关系>逻辑 >赋值
特别之处:除法的运算结果与运算对象类型有关
如
1. int相除商为int 商有小数则截取小数部分
2. 除数与被除数有一个为浮点型数据,则商也为浮点型,不截取小数部分
3. 取余%的运算对象必须是整数,结果是整除后的余数,符号与被除数相同
# include <stdio.h>
int main(void)
{
printf("%d\n", 13%-3);
return 0;
}
逻辑运算符的应用 真用1表示
假用0表示
# include <stdio.h>
int main(void)
{
int i = 10;
int k = 20;
int m;
m = (1>2) && (k=5) ;
printf("m = %d, k = %d\n", m, k);
return 0;
}
- ||:左边表达式为假时,右边不再执行
- &&:左边表达式为真时,右边不再执行
2.流程控制
1. 程序代码运行的顺序叫流程控制
2. 流程控制的分类
- 顺序执行 按一定顺序运行
- 选择执行 选择性运行代码
- 循环执行 多次执行
if
- if的最简单用法
# include <stdio.h>
int main(void)
{
if(4 > 2)
printf("aaaa\n");
return 0;
}
为零不运行 为真运行 为假不运行
# include <stdio.h>
int main(void)
{
if(4 > 2)
printf("aaaa\n");
if(0)
printf("bbbb\n");
if(0==0)
printf("cccc\n");
return 0;
}
2. if的范围问题
若为
if (表达式)
语句A;
语句B;
则A由if真假决定是否执行
B一定执行
# include <stdio.h>
int main(void)
{
if(1> 2)
printf("aaaa\n");
printf("bbbb\n");
return 0;
}
若为if (表达式)
{
语句A;
语句B;
}
则两者都由if真假决定是否执行
如图b执行 a不执行
# include <stdio.h>
int main(void)
{
if(4> 2)
{
printf("aaaa\n");
printf("bbbb\n");
return 0;
}
}
- if else的用法 若if真则运行a 否则运行b
#include <stdio.h>
int main(void)
{
if(1>2)
printf("aaaa\n");
else
printf("bbbb\n");
return 0;
}
- if else if else的用法
# include <stdio.h>
int main(void)
{
double delta = -1
if (delta>0)
printf("有不同的两解\n");
else if (delta == 0)
printf("有唯一的一个解\n");
else (delta<0)
printf("无解\n");
return 0;
}
注意:最后一个else后不加条件
4. 求分数的等级带代码
这个代码不知道为啥运行不出来
#include <stdio.h>
int main(void)
{
float score;
printf("请输入考试成绩");
scanf ("%f" , &score);
if (score > 100)
printf("这是做梦\n");
else if (score>=90 && score<=100)
printf("优秀\n");
else if (score>=60 && score<90)
printf("良好\n");
else if (score>=0 && score<60)
printf("不合格\n");
else
printf("分数过低\n");
return 0;
}
循环
- for 的应用
#include <stdio.h>
int main(void)
{
int i;
int sum = 0;
for(i = 1;i <10; i+=2)
sum = sum + i;
printf("sum = %d\n",sum);
return 0;
}
for和if的合并应用
#include <stdio.h>
int main(void)
{
int i;
int sum = 0;
for(i = 1;i <=10; ++i)
if(i%3 == 0)
sum = sum + i;
printf("sum = %d\n",sum);
return 0;
}
for的多次执行
#include <stdio.h>
int main(void)
{
int i , j;
for(i=0;i<3;++i)
for(j=2;j<5;++j)
printf("aaaa\n");
printf("bbbb\n");
return 0;
}
3.自增自减
- 前自增 ++i 表达式加1后的值
- 后自增 i++ i加1前的值
- 自增使得代码更加精炼,自增的速度更快
#include <stdio.h>
int main(void)
{
int i, j, k, m;
i = j = 3;
k = i++;
m = ++j;
printf("i = %d,j = %d,k = %d, m = %d\n", i, j, k, m);
return 0;
}
注意点:
- 尽量屏蔽前自增和后自增的差别
- 自增的表达式最好不要作为一个更大的表达式的一个部分
- ++i和i++单独成一个语句 不要当成一个完整的复合语句来使用
- int m = i++ + ++i + i + i++这样写不正确
补充运算符
1.三目运算符 A?B:C
等价于if (A)
B;
else
C;
逗号表达式
(A,B,C,D)
从左向右执行 最终表达式是最后一项的值
#include <stdio.h>
int main(void)
{
int i;
i = (3,2,5,6);
printf("%d\n",i);
return 0;
}
while
- 执行顺序
while (表达式)
语句 - while与for的相互比较
for(1;2;3)
A;
等价于1;
while(2)
{
A; 3;
}