07-运算符和程序结构

运算符与程序结构

1.常用的运算符

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

1.1算术运算符

运算符 术语 示例 结果
+ 正号 +3 3
- 负号 -3 -3
+ 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;
  • 整型与整型运算,得到的是整型
  • 除法,如果两数相除,得到小数,必须有一个是double类型
  • 除数不能为0
#include <stdio.h>

int main()
{    
      // 除法
      int a = 10;
      int b = 20;
      int c = 10.0;
      int f = a/b;   // 0 
      double e = a/b; // 0.5
      
      // 求一个数的个位,十位,百位
      // 求1234
      // 
      int num = 1234;
      // 个位
      int a = num % 10;
      // 十位
      int b = num/10%10;
      // 百位
      int c = num/100%10;
      // 千位
      int d = num/1000%10;
      system("pause");
      return 0;
}

1.1.1 自加自减运算符

  • 单独使用a++和++a一样
  • 与其他表达式进行一起使用,++a,先自加再使用;a++,先使用,再加1
#include <stdio.h>

int main()
{
	// a++ ++a 
	// 1.单独进行使用
	int a = 1;
	a++;
	// ++a;
	printf("%d\n",a);  // ++a 和a++ 都得到a = 2
	
	// 2.与其他表达式进行结合,++a先计算表达式结果再赋值,a++先赋值后对a = a+1
	
	int c = 1;
	int d = 0;
	d = c++;
	printf("%d\n",d,c);  // d = 1 c = 2
	
	// 如果使用 d = ++c;
	printf("%d\n",d,c);  // d = 2 c = 2
	
	// 3.单独使用
	int c = 2;
	printf("%d\n",c++); // 打印2
	printf("%d\n",++c); // 打印3
	
        system("pause");
        return 0;
		
}

1.2.赋值运算符

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

1.3.比较运算符

C 语言的比较运算中, “真”用数字“1”来表示, “假”用数字“0”来表示。

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

int main()
{
	printf("%d",3<4);
        system("pause");
        return 0;
	
		
}

1.4.逻辑运算符



2.流程控制结构

C语言支持最基本的三种程序运行结构:顺序结构、选择结构、循环结构。

  • 顺序结构:程序按顺序执行,不发生跳转。
  • 选择结构:依据是否满足条件,有选择的执行相应功能。
  • 循环结构:依据条件是否满足,循环多次执行某段代码。

2.1 选择结构

2.1.1 if语句

#include <stdio.h>

int main()
{
	int a = 1;
	int b = 2;

	if (a > b)
	{
		printf("%d\n", a);
	}
        
        // if(非空的值) 判断为条件成立
        if(1)
        {
                printf("成立");
        }
        
        // if 后面不加分号,分号相当于空语句
        if(a == 1);
        {
                print("%d\n",a);  // 不管if是不是成立都执行,因为if后面加;成立相当于执行空语句,不成立跳过
        }
	
        // if后面的代码块不加{}, 只有第一句属于if代码块,一般都会加上{}
        // {}中的语句都属于if
        if(a == 1)
                printf("%d\n",a);   // 只有这句属于if
                printf("AAAAAA\n"); // 不属于if,不管if成立与否都执行

        
        return 0;

        
} 

2.1.2 if...else语句


#include <stdio.h>
int main()
{
	int a = 1;
	int b = 2;

	if (a > b)
	{
		printf("%d\n", a);   // 条件成立
	}
	else
	{
		printf("%d\n", b);  // 条件不成立执行这里面的代码
	}
	return 0;
}

2.1.3 if..else if ...else语句


进行多个条件判断的时候使用这种方式

#include <stdio.h>

int main()
{
	unsigned int a;
	scanf("%u", &a);

	if (a < 10)
	{
		printf("个位\n");
	}
	else if (a < 100)
	{
		printf("十位\n");
	}
	else if (a < 1000)
	{
		printf("百位\n");
	}
	else
	{
		printf("很大\n");
	}

	return 0;
}

2.1.4 三目运算符

#include <stdio.h>

int main()
{
	int a = 10;
	int b = 20;
	int c;

	if (a > b)
	{
		c = a;
	}
	else
	{
		c = b;
	}
	printf("c1 = %d\n", c);

	a = 1;
	b = 2;
	c = ( a > b ? a : b );
	printf("c2 = %d\n", c);

	return 0;
}

2.1.5 switch语句

#include <stdio.h>

int main()
{
	char c;
	c = getchar();

	switch (c) //参数只能是整型变量
	{
	case '1':
		printf("OK\n");
		break;//switch遇到break就中断了
	case '2':
		printf("not OK\n");
		break;
	default://如果上面的条件都不满足,那么执行default
		printf("are u ok?\n");
	}
	return 0;
}

2.2 循环结构

能够用于重复执行的动作

2.2.1 while语句

#include <stdio.h>

int main()
{
	int a = 20;
	while (a > 10)
	{
		scanf("%d", &a);
		printf("a = %d\n", a);
	}

	return 0;
      
        // 计算1+2+3....+10
        int i = 1;
        int sum = 0;
        while(a <= 100)
        {
          sum = sum + i;
          i++;
        }
        printf("%d\n",sum);
}

2.2.2 do...while 循环

#include <stdio.h>

int main()
{
	int a = 1;
	do
	{
		a++;
		printf("a = %d\n", a);
	} while (a < 10);

	return 0;
}

  • do..while至少会执行一遍循环

2.2.3 for循环

for( A ; B ; C )
{
  D
}
// A B C表达式都是可有可无的
// A表达式只会执行一次
// B执行条件
// C循环变量步阶
// 执行顺序:A->B->D->C->B->D->C
#include <stdio.h>

int main()
{
	int i;
	int sum = 0;
	for (i = 0; i <= 100; i++)
	{
		sum += i;

	}

	printf("sum = %d\n", sum);

	return 0;
}

for循环不写条件,默认为真

2.3.4 嵌套循环

循环语句之间可以相互嵌套:

#include <stdio.h>

int main()
{
	int num = 0;
	int i, j, k;
	for (i = 0; i < 10; i++)
	{
		for (j = 0; j < 10; j++)
		{
			for (k = 0; k < 10; k++)
			{
				printf("hello world\n");
				num++;
			}
		}
	}

	printf("num = %d\n", num);

	return 0;
}

2.3.5 跳转语句break、continue、goto

1. break
在switch条件语句和循环语句中都可以使用break语句:

  • 当它出现在switch条件语句中时,作用是终止某个case并跳出switch结构。
  • 当它出现在循环语句中,作用是跳出当前内循环语句,执行后面的代码。
  • 当它出现在嵌套循环语句中,跳出最近的内循环语句,执行后面的代码。
#include <stdio.h>

int main()
{
	int i = 0;
	while (1)
	{
		i++;
		printf("i = %d\n", i);

		if (i == 10)
		{
			break; //跳出while循环
		}
	}

	int flag = 0;
	int m = 0;
	int n = 0;

	for (m = 0; m < 10; m++)
	{
		for (n = 0; n < 10; n++)
		{
			if (n == 5)
			{
				flag = 1;
				break; //跳出for (n = 0; n < 10; n++)
			}
		}

		if (flag == 1)
		{
			break; //跳出for (m = 0; m < 10; m++)
		}
	}

	return 0;
}

2. continue
在循环语句中,如果希望立即终止本次循环,并执行下一次循环,此时就需要使用continue语句。

#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;
}

3. goto(无条件跳转尽量少用)

#include <stdio.h>

int main()
{
	goto End; //无条件跳转到End的标识
	printf("aaaaaaaaa\n");

End:
	printf("bbbbbbbb\n");

	return 0;
}

posted @ 2023-03-16 00:27  Icer_Newer  阅读(309)  评论(0编辑  收藏  举报