运算符
算数运算符
+ - * /(除) %(取余数)
关系运算符
> >= < <= !=(不等于) ==(等于)
逻辑运算符
!(非) &&(并且) ||(或)
赋值运算符
= += *= /= -=
优先级别
算术>关系>逻辑>赋值
除法与取模运算符
除法/的运算结果和运算对象的数据类型有关,两个数都是int,则商就是int,若商有小数,则截取小数部分;被除数和除数中只要有一个或两个都是浮点型数据,则商也是浮点型,不截取小数部分。
取余%的运算对象必须是整数,结果是整除后的余数,其余数的符号与本除数相同。
测试取模运算符
#include <stdio.h>
int main(void)
{
printf("%d %d %d %d %d %d\n",3%3,13%-3,-13%3,-13%-3,-13%23,3%5);
return 0;
}
运行如图所示
#include <stdio.h>
int main(void)
{
int i = 10;
int k = 20;
int m;
m = (3>2) && (k=8);
printf("m = %d, k = %d\n", m, k);
return 0;
}
C语言对真假的处理
非零是真 零是假
真是1表示 假是零表示
&&左边的表达式为假 右边的表达式肯定不会执行
||左边的表达式为真 右边的表达式肯定不会执行
int main(void)
{
int i = 10;
int k = 20;
int m;
m = (3>2) ||(k=8);
printf("m = %d, k = %d\n", m, k);
return 0;
}
scanf用法
#include <stdio.h>
int main(void)
{
int i;
scanf("%d", &i);
printf("i = %d\n", i);
return 0;
}
#include <stdio.h>
int main(void)
{
int i;
char ch;
scanf("%d", &i);
printf("i = %d\n", i);
scanf("%c",&ch);
printf("%c\n", ch);
return 0;
}
流程控制
1、什么是流程控制
程序代码执行的顺序
2、流程控制的分类
顺序
选择
定义:某些代码可能执行,也可能不执行,有选择的执行某些代码
分类:
if
1. if最简单的用法
2. if的范围问题
3. if..else...的用法
4. if..else if...else...的用法
5. C语言对真假的处理
6. if举例--求分数的等级
7. if的常见问题解析
switch
#include <stdio.h>
int main(void)
{
int i, j;
printf("请输入i的值(中间以空格分隔) :");
scanf("%d %d",&i, &j);
printf("i = %d, j = %d\n", i, j);
return 0;
}
循环
定义:某些代码会被重复执行
分类:for
while
do while
格式
do
{
......
} while(表达式)
do...while并不等价于for,当然也不等价于while,主要用于人机交互
break和continue
break
用于循环是来终止循环,用于gwitch,是用来终止gwitch,不能直接用于if,除非if属于循环内部的一个子句,在多层循环中,break只能终止距离它最近的循环,在多层gwitch嵌套中,只能终止距离它最近的gwitch。
continue
用于跳过本次循环余下的语句,转去判断是否需要执行下次循环。
#include <stdio.h>
int main(void)
{
if (3 > 2)
printf("AAAA\n");
return 0;
}
for循环
#include <stdio.h>
int main(void)
{
int i;
int sum = 0;
for (i=1; i<100; i+=2)
printf("i = %d\n", i);
printf("sum = %d\n", sum);
return 0;
}
if else用法
#include <stdio.h>
int main(void)
{
int i, j;
scanf("%d %d", &i, &j);
if (i > j)
printf("i大于j\n");
else
printf("i小于j\n");
return 0;
}
互换两个数字
#include <stdio.h>
int main(void)
{
int i = 3;
int j = 5;
int t;
t = i;
i = j;
j = t;
printf("i = %d, j = %d\n", i, j);
return 0;
}
#include <stdio.h>
int main(void)
{
int sum = 0;
int i;
i = 1;
while (i < 101)
{
sum = sum + i;
++i;
}
printf("sum = %d\n", sum);
return 0;
}
一元二次方程
# include <stdio.h>
# include <math.h>
int main(void)
{
double a,b,c;
double delta;
double x1,x2;
char ch;
do
{
printf("请输入一元二次方程的三个系数:\n");
printf("a = ");
scanf("%lf",&a);//double类型是%lf,float是%f
printf("b = ");
scanf("%lf",&b);
printf("c = ");
scanf("%lf",&c);
delta = b*b - 4*a*c;
if(delta > 0)
{
x1 = (-b + sqrt(delta))/(2*a);
x2 = (-b - sqrt(delta))/(2*a);
printf("有两个解! x1 = %lf,x2 = %lf\n",x1,x2);
}
else if(delta == 0)
{
x1 = x2 = (-b)/2*a;
printf("有一个唯一解!x1 = x2 =%lf\n",x1,x2);
}
else
{
printf("无实数解!\n");
}
//使用户自行决定终止,若不想终止可不写。。。
printf("您想继续吗?(Y/N):");
scanf(" %c",&ch);//%c前不要忘记加空格。
}
//while(1);//1永远成立,可循环,但这样写程序无法终止。
while('Y'==ch || 'y'==ch);//只有这样,才循环
return 0;
}
课后习题
5.10
7、
13、a.x = x -1;
b.m = n%k;
c.p=q/b-a
d.x=(a+b) /c*d
5.11
3
8
6.16
5、
8、
18
7.11
2
a、number>=90&&number<100
b、ch!=q||k
c、number>1&&number<9&&!=5
d、number<1&&number>9
10