一、运算符:
算术运算符:+ - * / %(取余数,运算对象必须为整数)
关系运算符:< > <= >= !=(不等) ==(相等)
逻辑运算符:!(非) &&(与) ||(或)
自增【自减】
前自增——i++(先加一后赋值)
后自增——++i(先赋值后加一)
三目运算符
A?B:C
等价于
if(A)
B;
else
C;
逗号表达式
格式:
(a,b,c)
功能:
从左到右执行
最终表达式的值是最后一项的值
C语言对真假的处理
非零为真,0为假
赋值运算符:= += -= *= /=
优先级别:算术>关系>逻辑>赋值
二、流程控制:
1、什么是流程控制?
程序代码执行的顺序
2、流程控制的分类:
顺序执行
选择执行
定义:有选择的去执行某些代码
分类:
If
1、if最简单的用法:
表达式为真,即执行语句;表达式为假,不执行语句
2、选择if的范围问题:
if(表达式)
语句一
语句二
if只能控制语句一执不执行,而无法控制语句二。换句话说语句二一定执行
if(表达式)
{语句一
语句二
}
if能控制语句一和语句二
3、if else....if else的用法
格式:
if(1)
A
else if(2)
B
else if(3)
C
else
D
4、if举例——求分数的等级
如图
5、互换两个数字
代码如下
#include <stdio.h>
int main(void)
{ int a=3;
int b=5;
int t;
t=a;
a=b;
b=t;
printf("a=%d b=%d",a,b);
return 0;
}
6、对任意三个数字进行排序
代码如下
#include <stdio.h>
int main(void)
{ int a,b,c,t;
printf("请输入三个整数,中间用空格隔开\n");
scanf("%d %d %d",&a,&b,&c);
if(a<b)
{t=a;
a=b;
b=t;
}
if(a<c)
{t=a;
a=c;
c=t;
}
if(b<c)
{t=b;
b=c;
c=t;
}
printf("%d %d %d\n",a,b,c);
return 0;
}
7、if的常见问题
if空语句问题:
if()后面不能加“;”,加了就视为空语句
if else语句问题:
if(表达式1)
语句1;
else if(表达式2)
语句2;
else if(表达式3)
语句3;
else(表达式4)
语句4;
【 若其中表达式1和表达式2都成立,只执行语句1,不执行语句2.】
switch(后面再学)
循环执行
定义:某些代码会被重复执行
分类:for
while
do...while
break和continue
为什么要用for循环?
用for循环计算累加
#include <stdio.h>
int main(void)
{ int i;
int sum=0;
for(i=1;i<=4;++i)
sum=sum+i;
printf("sum=%d\n",sum);
return 0;
}
for和if的嵌入式使用
求0-100中能被三整除的数之和
#include <stdio.h>
int main(void)
{ int i;
int sum=0;
for(i=3;i<=100;++i)
{ if(i%3==0)
sum=sum+i;
}
printf("sum=%d\n",sum);
return 0;
}
强制类型转换
格式:(数据类型)(表达式)
**功能:**把表达式的值强制转化为前面所执行的数据类型
例如:
(int)(4.5)=4
(float)(5)=5.000000
浮点数存错所带来的问题
float和double都不能保证可以精准的储存一个小数,所以循环中更新的变量不能定义成浮点型
多层for循环嵌套使用
值得注意的是if只能控制一个语句,所以要用整体思想来理解语句
示例
#include <stdio.h>
int main(void)
{ int i,j;
for(i=0;i<3;++i)
for(j=2;j<5;j++)
printf("haha\n");
printf("xixi\n");
return 0;
}
while循环
1、执行顺序
格式:
while(表达式)
语句:
2、while和for的比较
for循环
#include <stdio.h>
int main(void)
{int sum=0;
int i;
for(i=1;i<101;++i)
sum=sum+i;
printf("%d\n",sum) ;
return 0;
}
while循环
#include <stdio.h>
int main(void)
{int sum=0;
int i;
i=1;
while(i<101)
{
sum=sum+i;
++i;}
printf("%d\n",sum) ;
return 0;
}
3、do while和while与for的比较
do...while
格式:do
{...
}while(表达式)
作用:
主要用于人机交互
**注意:**do...while并不等价于while也不等价于for
4、用do...while实现一元二次方程的求解
#include <stdio.h>
#include <math.h>
int main(void)
{ double a,b,c;
double delta;
double x1,x2;
do{
printf("请输入\n");
printf("a=\n");
scanf(" %lf", &a);
printf("b=\n");
scanf(" %lf", &b);
printf("c=\n");
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=(-b+sqrt(delta))/2*a;
x2=x1;
printf("x1=x2=%lf\n",x1);
}
else(delta<0)
;printf("无解!\n");
}
while(1);
return 0;
}
switch的基本用法
电梯模型举例
#include<stdio.h>
int main()
{int a,b,c;
scanf("%d%d%d",&a,&b,&c);
if(a>b>c)
printf("%d\n",a);
if(b>a>c)
printf("%d\n",b);
else
printf("%d\n",c);
return 0;
}
switch语句
switch(表达式)
{ case常量表达式1:语句1;
case常量表达式2:语句2;
...
case常量表达式n:语句n;
default :语句n+1;
}
break和continue的区别
break
break如果用于循环是用来终止循环
break如果用于switch,则是用于终止switch
break不能直接用于if,除非if属于循环内部的一个子句
例如:
for(i=0;i<3;++i)
{ if(3>2)
break;
printf("haha\n") /永远不会输出
}
break只能终止距离他最近的循环
在多个switch嵌套使用中break只能终止距离他最近的switch
continue
用于跳过本次循环余下的语句,转去判断是否需要执行下次循环
课后习题
5.10
第七题:SOS4 4.00
第十三题:--x,m=n%k,p=q/(b-a),x=(a+b)/(c*d)
5.11
第三题:
#include <stdio.h>
int main(void)
{ int a;
int b,c;
printf("请输入你想转化的天数\n");
scanf("%d",&a);
b=a/7;
c=a%7;
printf("%d周 %d天\n",b,c);
return 0;
}
第八题:
#include <stdio.h>
int main(void)
{ int first,second;
printf("请输入你想输入的数据\n");
scanf("%d",&second);
printf("输入数据\n");
scanf("%d",&first);
while(first>0)
{printf("%d %% %d is %d\n",first,second,(first%second));
printf("enter next number for first operand(<= to quit):");
scanf("%d",&first);
}
printf("结束\n");
return 0;
}
6.16
第五题:
#include <stdio.h>
int main(void)
{ int i,j,num;
char c;
printf("请输入字符\n");
scanf("%c",&c);
char ch='A';
num=c-'A'+1;
for(i=1;i<=num;i++)
{ for(j=0;j<num-1;j++)
printf(" ");
for(ch='A';j<num;j++)
printf("%c",ch++);
for(j=1,ch-=2;j<i;j++,ch--)
printf("%c",ch);
printf("\n");
}
return 0;
}
第十二题:
#include <stdio.h>
int main(void)
{ int i,sum;
for(i=0;i<101;++i)
sum=1+i;
printf("%d\n",sum);
return 0;
}
第十八题:
#include <stdio.h>
int main(void)
{int rabnud;
int week;
while(rabnud<150)
{
printf("在%d周,rabund有%d个朋友\n",week,rabnud);
rabnud=2*(rabnud-week++);
};
printf("结束!\n");
return 0;
}
7.11
第二题、 a、number>=90&&number<100
b、ch!=q||k
c、number>1&&number<9&&!=5
d、number<1&&number>9
第十题、
若ch为'\n',打印step1;若ch为'b',则终止循环;若ch为'c',终止当前循环;若ch为'h',打印step3;若为其他,打印step2,step3.