资源描述
2.4
1.复合赋值
5个算数运算符可以和赋值运算符”=“结合起来,形成复合赋值运算符
Eg:total +=5;
total =total+5;
但要注意两个运算符中间不要有空格
2. 递增递减运算符
“++””--”是两个单目运算符,算子必须为变量(++a),他们的作用是给变量+1或-1
Count++(后缀型) ++count(前缀型)
a++表示a加一以前的值,++a表示加一以后的值。
3.2
做比较运算符
1.计算两个值之间的关系,所以叫关系运算。
== 相等
!= 不相等
> 大于
< 小于
>= 大于等于
<= 小于等于
?:
2.关系运算结果
当两个值的关系符合关系运算符的预期时,关系运算结果为整数一,否则为整数0
Eg:printf(“%d”,5==5); printf(“%d”,5>=3);
3.优先级
1.所有的关系运算符的优先级比算术运算的低,但是比赋值运算高7>=3+4;(如果7>=3先算,则原式变成1+4=5)
Int r=a>0;(把a>0的结果赋给r)
2. 判断是否相等的==和!=的优先级比其他的低,而连续的关系运算是从左到右进行的
Eg:5>3==6>4(比较5>3与6>4是否相等)
6>5>4(先判断6>5,成立则变成了1与4的比较)
a==b==6(如果a和b相等则变成了判断1与6是否相等)
a==b>0(如果a和b相等,则变成了1与0的比较)
3.3循环
1.do-while和while循环很像,区别在于循环一边结束后才来判断条件。也就是说,无论如何,循环体都会执行至少一遍。
形式:do{....(循环体)....}while();
2.for循环
For(i=1;n<5;i++)........(初始条件 ,循环条件,循环比做的条件)
{
循环体;}
3.Attention:1.for循环执行顺序,先执行初始条件和循环条件,然后执行循环体,执行完之后再判断。
1.求和变量初始值设为0,求积变量初始值设为1.
2.For循环中的条件可以省略一个
Eg:for(;n<5;i++)注意符号。
4.循环的选择方法
如果有固定的次数,用for
如果必须执行一次,用do_while
其他情况用while
4.进一步的判断与循环
1. 逻辑类型
bool
#include<stdbool.h>
之后就可以使用bool和true,false
2.逻辑运算
逻辑运算是对逻辑量的运算,结果只有0或1
逻辑量是关系运算或逻辑运算的结果
运算符
描述
示例
结果
!
逻辑非
!a
如果a是true 结果就是false,如果a是false结果就是true
&&
逻辑与
a&&b
如果a和b都是true,结果就是true;否则就是false
||
逻辑或
A||b
如果a和b有一个是true,结果是true;两个都是false,结果为false.
Attention:||逻辑或的运算规则是,有一个为真,就输出结果。对于||两边的计算式,只计算左边的,右边的会被忽略。
Eg: int x=0,c=2;
x+=1||(x=c+2);
printf("%d",x);
输出结果为1
3. 优先级
!>&&>||
优先级
运算符
结和性
1
()
从左到右
2
!+ - ++ --
从右到左(单目的+和-)
3
* / %
从左到右
4
+ -
从左到右
5
<<= >>=
从左到右
6
== !=
从左到右
7
&&
从左到右
8
||
从左到右
9
= += -= *= /= %=
从右到左
10(条件运算符)
?;(三目运算符)
从右到左
Tips:对于&&,左边是false时就不做右边
对于||,左边是true时就不做右边
表达式1?表达式2:表达式3
若表达式1的值不为0,则执行表达式2,否则,执行表达式3.
4.条件运算符
Count=(count>20)?Count-10:count+10;
条件,条件满足时的值和条件不满足时的值
If(count>20)
Count=count-10;
Else
Count=count+10;
Attention:
条件运算符的优先级高于赋值运算符,但是低于其他运算符
条件运算符自右向左结合
5. 逗号运算符
逗号用来连接两个表达式,并以其右边的表达式的值作为它的结果。逗号的优先级是所有的运算符中最低的,所以它两边的表达式会先计算;逗号的组合关系是自左向右,所以左边的表达式会先计算,而右边的表达式的值就留下来作为逗号运算的结果。
6. 多路分支(适用于分散型变量)
switch (type变量).....且type必须为int类型。
{
case 1:
printf(“你好”);
break;
case 2:.............case后面的数必须为常量,可以数字,表达式或有明确定义的字符。
printf(“早上好”);
break;
case 3:
printf(“晚上好”);
break;
case 4:
printf(“再见”);
break;
default:
printf(“what?”);
Break;
}
Return 0;
Tips:在执行完分支中的最后一条语句后,如果后面没有break,就会顺序执行到下面的case里面去,直到遇到一个break,或者switch结束为止。
7. 循环的例子
1. 可以通过将递减变量的初始值赋给新的变量,来达到输出其初始值的目的。
2. 随机数
每次召唤rand()就的到一个随机的整数
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
srand(time(0));
int a = rand();
return 0
}
8. 整数的分解
对一个整数做%10的操作,就得到它的个位数;
对一个整数做/10的操作,就去掉了它的个位数;
然后再对2的结果做%10,就得到原来数的十位数了;
5.0
1. 循环控制
break;直接跳出循环。
Continue;continue下面的语句不执行。
Tips:break和continue只能对其所在的那层循环启作用。
goto:使用方法goto 标识符;
标识符:程序即可跳到标识符所在的位置。
6.0
1. 数组
int number [100];....100代表这个数组有100个int值。
但计数从零开始,所以最大计数为int number[99]
number [i]=x...i表示第几个数,x表示待赋值。
Eg:
1.用数组统计每个数字出现的个数
#include<stdio.h>
int main()
{
int x,i;
int count[10];
printf("请输入数据\n");
scanf("%d",&x);
for(i=0;i<10;i++){
count[i]=0;
}
while(x!=-1){
if(x>=0 && x<=9){
count[x]++;
}
scanf("%d",&x);
}
for(i=0;i<10;i++){
if(count[i]>0){
printf("数字%d出现了%d次\n",i,count[i]);
}
}
return 0;
}
2. 用数组求平均值并输出比平均值大的数据
#include<stdio.h>
int main()
{
int x,i,b=0,sum=0;
int count[4];
printf("请输入数据\n");
scanf("%d",&x);
while(x!=-1){
count[b]=x;
b++;
sum+=x;
scanf("%d",&x);
}
printf("平均值为%d\n",sum/b);
for(i=0;i<b;i++){
if(count[i]>sum/b){
printf("大于平均值的数据有%d\n",count[i]);
}
}
return 0;
}
Tips:数组在记录数据时尽量从零开始
2.函数
int类型函数带有返回值
1.函数定义
从函数中返回值
return停止函数的执行,并送回一个值
函数名
1.#include<stdio.h>
函数头
int sum(int begin,int end)
{
函数主体
int sum=0;
for(;begin<=end;begin++){
sum+=begin;
printf("%d\n",begin);
}
返回值
return sum;
}
int main()
{
int c;
返回后赋值给c
c=sum(2,5);
printf("和为%d\n",c);
return 0;
}
2.
不带返回值的函数类型
#include<stdio.h>
void sum(int begin,int end)
{
int sum=0;
for(;begin<=end;begin++){
sum+=begin;
printf("%d\n",begin);
}
printf("和为%d\n",sum);
}
int main()
{
sum(2,5);
return 0;
}
3. 调用函数
1. 函数名
2. ()起到了表示函数调用的重要作用
3. 即使没有参数也需要()
4. 如果有参数,则需要给出正确的数量和顺序
5. 这些值会被依次用来初始化函数中的参数
6. 可以传递给函数的值是表达式的结果,这包括:
字面量;变量;函数的返回值;计算的结果
Eg:c=max(a,b); c=max(c,23);
c=max(max(23,45),a); c=max(23+45,b);
4. 函数原型
1. 函数头,以分号“;”结尾,就构成了函数的原型
2. 函数原型的目的是告诉编译器这个函数长什么样
3. 名称
4. 参数(数量及类型)
函数原型
5. 返回类型
Eg:
double max (double a, double b);
int main()
{
int a,b,c;
a=5;
b=6;
c=max(10,20);
printf(“%d”,c);
max(12,13);
return 0;
}
double max (double a, double b);
..........(函数体)
Tips:在这种情况下,函数体可以放在所写的程序后面,只需要在int main()前说明函数原型即可。
5.传值
1.每个函数都有自己的变量空间,参数也位于这个独立的空间中,和其他函数没有关系
2.过去,对于函数参数表中的参数,叫做形式参数,调用函数时给的值,叫做实际参数
3.但容易造成误解,在调用函数时,只是把值传了进来,而不是将变量连同值一起。
6.本地变量的规则
1.本地变量是定义在块内,它可以是定义在函数的块内,也可以定义在语句的块内,甚至可以随便拉一对大括号来定义变量。
2.程序运行进入这个块之前,其中的变量不存在,离开这个块,其中的变量就消失了。
3.块外面定义的变量在里面仍然有效
4.块里面和外面定义了同名变量则掩盖了外面的
7.细枝末节
1.没有参数时
void f(void)表示没有参数
void f()表示参数未知
2. 逗号运算符
调用函数时的圆括号里的逗号是标点符号,不是运算符,f(a,b)。
但f((a,b))中的逗号是运算符。
3. 函数里的函数
在c语言中不允许函数嵌套定义
4. 关于main
int main()也是一个函数,return返回的值在某些情况下是有用的。
7.0
1. 数组运算
1. 在数组内搜索值
#include<stdio.h>
int search(int,int,int a[]);
int main()
{
int x,length;
printf("请输入需要查找的数据\n");
scanf("%d",&x);
int a[]={2,3,4,5,6,7,8,9,10};
printf("数组中有%d个数据\n",sizeof(a)/sizeof(a[0]));
length=sizeof(a)/sizeof(a[0]);
search(length,x,a);
return 0;
}
int search(int length,int x,int a[]){
int i;
for(i=0;i<length;i++)
{ if(a[i]==x){
printf("存在这个数据%d,在数组的第%d位\n",x,i+1);
break;
}
}
}
展开阅读全文