第一章:C语言数据类型及语句(第二部分)

指针

运算符

用算术运算符将运算对象(也称操作数)连接起来,符合c语言规则的式子,称为C算术表达式,运算对象包括常量,变量,函数等
例如:a*b/c-1.5+‘a’

运算符的分类

1.双目运算符:即参加运算的操作数有两个
例如:+ a+b
2.单目运算符:参加运算的操作数只有一个
例如:++自增运算符 给变量值+1 --自减运算符

int a=10;
a++;

3.三目运算符:参加运算的操作数有三个
4.算术运算符:

+ - * / % += -= *= /= 
10%3 表达式的结果为1

5.复合运算符:

a+=3 相当于a=a+3
a*=(6+8) 相当于a=a*(6+8)

6.关系运算符:

(> < == >= <= !=) 	//一般用于判断条件是否满足或者循环语句

7.逻辑运算符:

1.&& 逻辑与 	//两个条件都为真,则结果为真
例如:if((a>b)&&(a<c))
注意:if(b<a<c)	//这样的表达方式是错误的

2.|| 逻辑或	//两个条件至少有一个为真,则结果为真
if((a>b)||(a<c))

3.!逻辑非
if(!(a>b))

8.位运算符

1.&按位与(任何值与00,与1保持不变)
2.|按位或(任何值或11,或0保持不变)
3.~按位取反(10014.^按位异或(相异得1,相同得05.位移:>> 右移	<< 左移
左移:高位溢出,低位补0
注意:右移分逻辑右移和算术右移两种
逻辑右移:高位补0,低位溢出
算术右移:高位补符号位,低位溢出(有符号数)

总结 右移:
1、逻辑右移 高位补 0,低位溢出
注:无论是有符号数还是无符号数都是高位补 0,低位溢出
2、算数右移 高位补符号位,低位溢出 (有符号数)
注:对无符号数来说,高位补 0,低位溢出
对有符号数来说,高位补符号位,低位溢出

在一个编译系统中到底是逻辑右移还是算术右移,取决于编译器
判断右移是逻辑右移还是算数右移
#include <stdio.h>
int main(int argc, char *argv[])
{
	printf("%d\n",-1>>3);
	return 0;
}
如果结果还是-1 证明是算数右移

9.条件运算符

()?():()
A?B:C;
如果?前边的表达式成立,整个表达式的值,是?和:之间的表达式的结果
否则是:之后的表达式的结果

#include <stdio.h>
int main(int argc, char *argv[])
{
	int a;
	a=(3<5)?(8):(9);
	printf("a=%d\n",a);
	return 0;
}

10.逗号运算符
(),()
注意:逗号运算符的结果是:后面表达式的结果,并且逗号运算符的优先级最低

#include <stdio.h>
int main(int argc,char *argv[])
{
	int num;
	num=(5,6);
	printf("%d\n",num);
	return 0;
}

运算符总结:
运算符不仅由优先级还有结合性,优先级高的先于优先级低的运算
2+3+9+10 左结合性,从左往右计算
a=b=c=d=100 右结合性,从右往左计算

11.自增自减运算符:
i++ i–
运算符在变量的后面,在当前表达式中先用i的值,下条语句的时候i的值改变

#include <stdio.h>
int main()
{
	int i=3;
	int num;
	num=i++;
	printf("num=%d,i=%d\n",num,i);//num=3 ,i=4
	return 0}
#include <stdio.h>
int main()
{
	int i=3;
	int num;
	num=++i;
	printf("num=%d,i=%d\n",num,i);//num=4,i=4
	return 0;
}
#include <stdio.h>
int main(int argc, char *argv[])
{
	int i=3;
	int num;
	num = (i++)+(i++)+(i++);
	printf("num=%d\n",num);
	return 0;
}
#include <stdio.h>
int main(int argc, char *argv[])
{
	int i=3;
	int num;
	num = (++i)+(++i)+(++i);
	printf("num=%d\n",num);
	return 0;
}

控制语句相关关键字

选择控制语句相关的关键字

1、 if 语句
形式:

  1. if(条件表达式)
    {//复合语句,若干条语句的集合
    语句 1;
    语句 2;
    }
    如果条件成立执行大括号里的所有语句,不成立的话大括号里的语句不执行
#include<stdio.h>
int main()
{
	int a=10;
	if(a>5)
{
	printf("a>5\n");
}
	return 0;
}
  1. if(条件表达式)
    {
    }
    else
    {
    }
    if else 语句的作用是,如果 if 的条件成立,执行if 后面{}内的语句,否则执行 else 后的语句
注意一个问题:ifelse之间只能有一条语句,或者有一个复合语句,否则编译会出错
if()
	语句 1;
	语句 2else
	语句 3;
	语句 4;
这种表达方式就是明显错误的

如果想要多个语句,需要添加大括号:
if()
{
	语句 1;
	语句 2}
else
{
	语句 3;
	语句 4}
这样的表达才是合理的
  1. if(条件表达式)
    {
    }
    else if(条件表达式)
    {
    }
    else if(条件表达式)
    {
    }
    else
    {
    }
    在判断的时候,从上往下判断,一旦有成立的表达式,执行对应的复合语句,
    下边的就不再判断了,各个条件判断是互斥的
#include <stdio.h>
int main(void)
{
	char ch;
	float score = 0;
	printf("请输入学生分数:\n");
	scanf("%f",&score);
	if(score<0 || score >100)
{
	printf("你所输入的信息有错\n");
	return 0;
}
	else if( score<60)
{
	ch = 'E';
}
	else if ( score < 70 )
{
	ch = 'D';
}
	else if ( score < 80 )
{
	ch = 'C';
}
	else if ( score < 90 )
{
	ch = 'B';
}
	else
{
	ch = 'A';
}
	printf("成绩评定为:%c\n",ch);
	return 0;
}

2、 switch 语句
switch(表达式)//表达式只能是字符型或整型的(short int int long int)
{
case 常量表达式1:
语句1;
break;
case 常量表达式2:
语句2;
break;
default:语句3;break;
}
注意:break 的使用

#include <stdio.h>
int main(int argc, char *argv[])
{
	int n;
	printf("请输入一个 1~7 的数\n");
	scanf("%d",&n);
	switch(n)
{
	case 1:
	printf("星期一\n");
	break;
	case 2:
	printf("星期二\n");
	break;
	case 3:
	printf("星期三\n");
	break;
	case 4:
	printf("星期四\n");
	break;
	case 5:
	printf("星期五\n");
	break;
	case 6:
	printf("星期六\n");
	break;
	case 7:
	printf("星期天\n");
	break;
	default:
	printf("您的输入有误,请输入 1~7 的数\n");
	break;
}
	return 0;
}

循环控制语句相关的关键字

1、 for 循环
for(表达式 1;表达式 2;表达式 3)
{//复合语句,循环体
}
第一次进入循环的时候执行表达式 1,表达式 1 只执行一次,
表达式 2,是循环的条件,只有表达式 2 为真了,才执行循环体,也就是说
每次进入循环体之前要判断表达式 2 是否为真。
每次执行完循环体后,首先执行表达式 3

for 循环求 0~100 的和
#include <stdio.h>
int main(void)
{
	int i;
	int sum=0;
	for(i=1;i<=100;i++)
{
	sum = sum+i;
}
	printf("sum=%d\n",sum);
	return 0;
}
#打印九九乘法表
#include <stdio.h>
int main(int argc, char *argv[])
{
	int i,j;
	for(i=1;i<=9;i++)
{
	for(j=1;j<=i;j++)
{
	printf("%d*%d=%d ",i,j,i*j);
}
	printf("\n");
}
	return 0;
}

2、 while 循环

  1. 形式 1:
    while(条件表达式)
    {//循环体,复合语句
    }
    进入 while 循环的时候,首先会判断条件表达式是否为真,为真进入循环体,否则退出循环
#include <stdio.h>
int main(void)
{
	int i=1;
	int sum=0;
	while(i<=100)
{
	sum = sum+i;
	i++;
}
	printf("sum=%d\n",sum);
	return 0;
}
  1. 形式 2 : do
    do{//循环体
    }while(条件表达式);
    先执行循环体里的代码,然后去判断条件表达式是否为真,为真再次执行循环体,否则退出循环
#include <stdio.h>
int main(void)
{
	int i=1;
	int sum=0;
	do
{
	sum = sum+i;
	i++;
}	while(i<=100);
	printf("sum=%d\n",sum);
	return 0;
}

形式 1 和形式 2 的区别是,形式 1 先判断在执行循环体,形式 2 先执行循环体,再判断
break 跳出循环
continue 结束本次循环,进入下一次循环

#include <stdio.h>
int main(void)
{
	int i;
	int sum=0;
	for(i=1;i<=100;i++)
	{
		if(i==10)
			break;//将 break 修改成 continue 看效果
		sum = sum+i;
	}
	printf("sum=%d\n",sum);
	return 0;
}

return 返回函数的意思。结束 return 所在的函数,在普通函数中,返回到被调用处,在 main 函数中的话,结束程序
3. goto

#include <stdio.h>
int main(int argc, char *argv[])
{
	printf("test000000000000000000\n");
	printf("test1111111111111111\n");
	goto xiutao;
	printf("test222222222222222222\n");
	printf("test3333333333333333\n");
	printf("test444444444444444444444\n");
	printf("test55555555555555555555\n");
xiutao:
	printf("test66666666666666666\n");
	return 0;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值