运算符、判断与循环

运算符、判断与循环

1 C 运算符的种类、运算优先级和结合性

1.1 常用运算符分类

运算符类型 作用
算术运算符 用于处理四则运算
赋值运算符 用于将表达式的值赋给变量
比较运算符 用于表达式的比较,并返回一个真值或假值
逻辑运算符 用于根据表达式的值返回真值或假值
sizeof运算符 用于求字节长度

1.1.1 算术运算符

运算符 术语 示例 结果
+ 10+5 15
- 10-5 5
* 10*5 50
/ 10/5 2
% 取模(取余) 10%3 1
++ 前自增 a=2;b=++a; a=3;b=3;
++ 后自增 a=2;b=a++; a=3;b=2;
前自减 a=2;b=–a; a=1;b=1;
后自减 a=2;b=a–; a=1;b=2;

重点说明
/ 运算符:两个整数做除法得到的是整数,即小数部分舍去,只留下整数部分,比如5/3=1;
但除号两侧只要有一侧是浮点类型数据,那得到的结果就有小数部分;

	#include<stdio.h>
	int main()
	{
	    int a=5,b=3; //两个整型变量
	    double c=5,d=3; //两个浮点型变量
	    printf("%d\n",a/b); //结果:1
	    printf("%lf\n",1.0*a/b); //结果:1.66667
	    printf("%lf\n",c/d); //结果:1.66667
	    return 0;
	}  

% 运算符:运算符两侧要求必须是整型的;

	#include<stdio.h>
	int main()
	{
	    int a=5,b=3;
	    printf("%d\n",a%b); //结果:2
	    return 0;
	}

1.1.2 赋值运算符

运算符 术语 示例 结果
= 赋值 a=2;b=3 a=2;b=3
+= 加等于 a=0;a+=2 a=2
-= 减等于 a=0;a-=2 a=-2
*= 乘等于 a=2;a*=2 a=4
/= 除等于 a=4;a/=2 a=2
%= 模等于 a=3;a%=2 a=1

1.1.3 比较运算符

c语言的比较运算符中,“真”用“1”表示,“假”用“0”表示
而凡是非“0”的都为“真”。

运算符 术语 示例 结果
== 相等于 4==3 0
!= 不等于 4!=3 1
< 小于 4<3 0
> 大于 4>3 1
<= 小于等于 4<=3 0
>= 大于等于 4>=3 1

1.1.4 逻辑运算符

运算符 术语 示例 结果
! !a 如果a为假,则!a为真;如果a为真,则!a为假
&& a&&b 如果a和b为都为真,则结果为真;否则为假
|| a||b 如果a和b有一个为真,则结果为真;二者都为假,则结果为假
?: 条件运算符 a>b?a:b 如果a>b为真,则执行a;否则执行b

1.1.5 sizeof运算符

该运算符用于求字节长度,比如一个int形数据 4个字节,那sizeof(int)=4,再比如一个double形数据 8个字节,那sizeof(double)=8。

1.2 运算符的优先级

类别 运算符 结合性
(类型) 强制转换
乘除 *,/,% 从左往右
加减 +,- 从左往右
比较 ==,!=,<,>,<=,>= 从左往右
逻辑 &&,|| 从左往右
赋值运算符 =,+=,-=,*=,=,%= 从右往左
条件运算符 ?: 从右往左
逗号 , 从左往右

1.3 不同类型数据间的转换与运算

转换的方法有两种:
*自动转换(隐式转换):遵循一定的规则,由编译系统自动完成。
*强制类型转换:把表达式的运算结果强制转成所需的数据类型。
类型转换的原则:占用内存字节数少(值域小)的类型,向占用内存字节数多(值域大)的类型转换,以保证精度不降低。
在这里插入图片描述
隐式转换

	#include <stdio.h>
	int main()
	{
		int num = 5;
		printf("s1=%d\n", num / 2); //结果仍是整型
		printf("s2=%lf\n", num / 2.0); //结果为浮点型
		return 0;
	}

强制转换:

	#include <stdio.h>
	int main()
	{
		float x = 0;
		int i = 0;
		x = 3.6;
		i = x;			//x为浮点型, i为整型,直接赋值会有警告
		i = (int)x;		//使用强制类型转换
	
		printf("x=%f, i=%d\n", x, i); //x=3.60,i=3
	
		return 0;
	}

2 判断

2.1 if语句

2.1.1 if语句

描述:一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。

在这里插入图片描述

	int a = 1;
	int b = 2;
	if (a < b)
	{
		printf("%d\n", a);
	}

OJ题1007

2.1.2 if…else语句

在这里插入图片描述

   	int a = 1;  
	int b = 2;
	if (a > b)
	{
		printf("%d\n", a);
	}
	else
	{
		printf("%d\n", b);
	}

2.1.3 if…else if…else语句

	#include<stdio.h>
	int main()
	{
	    int x,y;
	    scanf("%d",&x);
	    if(x<1) 
	    	y=x;
	    else if(x<10) 
	    	y=2*x-1;
	    else 
	    	y=3*x-11;
	    printf("%d\n",y);
	    return 0;
	}

2.1.4 if嵌套语句

	int a = 100;
	int b = 200;
	if( a == 100 )
	{
	    if( b == 200 )
	    {
	       /* 如果条件为真,则输出下面的语句 */
	       printf("a 的值是 100,且 b 的值是 200\n" );
	    }
	}
	printf("a 的准确值是 %d\n", a );
	printf("b 的准确值是 %d\n", b );

3 循环

3.1 while和do-while循环结构

3.1.1 while循环

在这里插入图片描述

    #include <stdio.h>
    int main()
    {
	    int a = 1;
	    while (a <= 10)
	    {
		    a++; //a+=1;
		    printf("%d ",a); //输出1~10
	    }
	    return 0;
     }

3.1.2 do-while循环结构

在这里插入图片描述

	#include <stdio.h>
	int main()
	{
		int a = 1;
		do
		{
			a++;
			printf("a = %d\n", a);
		} while (a < 10);
	
		return 0;
	}

3.1.3 for循环结构

for循环语法:

for ( init; condition; increment )
{
   statement(s); //主循环体
}

循环步骤:
*1.init 会首先被执行,且只会执行一次。这一步允许您声明并初始化任何循环控制变量。您也可以不在这里写任何语句,只要有一个分号出现即可。
*2.接下来,会判断 condition。如果为真,则执行循环主体。如果为假,则不执行循环主体,且控制流会跳转到紧接着 for 循环的下一条语句。
*3.在执行完 for 循环主体后,控制流会跳回上面的 increment 语句。该语句允许您更新循环控制变量。该语句可以留空,只要在条件后有一个分号出现即可。
*4.条件再次被判断。如果为真,则执行循环,这个过程会不断重复(循环主体,然后增加步值,再然后重新判断条件)。在条件变为假时,for 循环终止。

	#include <stdio.h>
	int main ()
	{
	   /* for 循环执行 */
	   for( int a = 10; a < 20;  a + + )
	   {
	      printf("a 的值: %d\n", a);
	   }
	 
	   return 0;
	}  

3.2 循环控制语句break和continue

3.2.1 break

终止循环或 switch 语句,程序流将继续执行紧接着循环或 switch 的下一条语句。

	#include <stdio.h>
	int main ()
	{
	   int a = 10;
	
	   /* while 循环执行 */
	   while( a < 20 )
	   {
	      printf("a 的值: %d\n", a);
	      a++;
	      if( a > 15)
	      {
	         /* 使用 break 语句终止循环 */
	          break;
	      }
	   }
	 
	   return 0;
	}

3.2.1 continue

告诉一个循环体立刻停止本次循环迭代,重新开始下次循环迭代。
求100以内所有奇数的和:

	#include<stdio.h>
	int main()
	{
		int sum = 0;           //定义变量sum
		for (int i = 1; i <= 100; i++)
		{
			if (i % 2 == 0)   //如果i是一个偶数,执行if语句中的代码
			{
				continue;      //结束本次循环
			}
			sum += i;          //实现sum和i的累加
		}
	
		printf("sum = %d\n", sum);
	
		return 0;
	}  
	```

猜你喜欢

转载自blog.csdn.net/qq_41822647/article/details/83004326