三、C运算符与程序结构(1)

本文详细解析C语言中的运算符分类,包括算术、赋值、比较、逻辑和逗号运算符,以及它们的优先级和实战应用。深入探讨选择结构(if-else, switch)、循环结构(while, do-while, for)和跳转语句。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 运算符与表达式

1.1 常用运算符分类

在这里插入图片描述

1.2 算术运算符

在这里插入图片描述
案例一,两数相除得小数:

int main()
{
   int a = 10;
   int b = 20;
   int c = a + b;
   int d = a - b;
   int e = a * b;
   printf("%d %d %d\n",c,d,e);
   //两数相除,如果要得到小数,必须有一个是double类型或float类型
   //double f = a*1.0 / b;//0.5
   //int f = b / a;
   //int f = a / 0;err 除数不能为0
   printf("%lf\n",f);
   system("pause");
   return 0;
}

案例二,取数字各位:

int main()
{
   int  num = 8981234;
   int  a = num % 10;//个位
   int b = num / 10 % 10;//十位
   int c = num / 100 % 10;//百位
   int d = num / 1000 % 10;//千位
   printf("%d %d %d %d\n",d,c,b,a);
   system("pause");
   return 0;
}

案例三,自加自减:
如果自加自减单独使用都是加1或减1
如果结合其他表达式一起使用: 看++或–在前还是在后,如果在前,先自加自减,在使用,如果在后, 先使用,在自加或自减

int main()
{
   // 自加 自减
   //a = a + 1;// a++  ++a
   int a = 1;
   int b = 0;
   int c = 2;
   //如果a++  和++a单独使用,效果相同 都是a = a+1
   //a++;//a=a+1
   //++a;//a=a+1;
   //b = a++;//  ++在后,先使用,在自加 b=a, a=a+1
   b = ++a;//++在前  先自加,在使用a=a+1, b=a
   printf("b=%d a=%d\n",b, a);
   //printf("c= %d\n",c++);//先打印(使用),在自加
   printf("c= %d\n", ++c);//先自加,在使用
   printf("c= %d\n", c);
   system("pause");
   return 0;
}

1.3 赋值运算符

//赋值运算
int main()
{
    int  a = 1;
    //a = a + 2;  a +=2;
    //a += 2;
    //a -= 5;//a= a-5;
    //a *= 5;//a =a*5
    printf("%d\n",a);
    system("pause");
    return 0;
}

1.4 比较运算符

c语言中0为假,1为真

int main()
{
  printf("%d\n",3==4);
  printf("%d\n", 3 != 4);
  printf("%d\n", 3 > 4);
  printf("%d\n", 3 < 4);
  printf("%d\n", 3 <= 4);
  system("pause");
  return 0;
}

1.5 逻辑运算符

在这里插入图片描述

int main()
{
    //非0 为真
    int  a = 0;
    int b = 1;
    /*printf("%d\n",!a);
    printf("%d\n", !0);
    printf("%d\n", !-1);*/
    //逻辑&&  A && B   必须A和B都为真,整个表达式才为真
    //如果A 表达式为假,B表达式不执行
    printf("%d\n",a && b++);
    printf("a=%d b=%d\n",a,b);
    system("pause");
    return 0;
}
int main()
{
   int a = 0;
   int b = 1;
   int c = 0;
   printf("%d\n",a || b);
   printf("%d\n", a || c);
   printf("%d\n", b || a++);
   printf("a=%d b=%d\n",a,b);
   system("pause");
   return 0;
}

1.6 逗号运算符

int main()
{
  int a = 1;
  int b = 2;
  //逗号运算符,最终的结果是最后一个表达式的结果
  int c = (a++,b++,a+b,10,200,a+b,1000);
  printf("%d\n",c);
  system("pause");
  return 0;
}

2 运算符优先级

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3 程序流程结构

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

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

3.1 选择结构

3.1.1 if、else 、else if
int main()
{
    int a = 2;
    int b = 3;
    //if后面不要加 分号,分号是空语句
    //一般if后面加上{},{}里面的语句都属于if
    //如果if后面不加{},只有if后面的一条语句属于if
    /*if (a == b);
    {
           printf("a==b\n");
    }*/
    if (a == 3)
    {
        printf("a==b\n");
    }
    system("pause");
    return 0;
}
3.1.2 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;
}

3.2.3 三目运算符
//三目运算符
int main()
{
   int  a = 10;
   int b = 20;
   int c = 0;
   //求a和b的最大值给c
   //if (a > b)
   //{
   //      c = a;
   //}
   ////else
   //{
   //      c = b;
   //}
   c = a > b ? a : b;
   printf("c=%d\n",c);
   system("pause");
   return 0;
}

3.2 循环结构

3.2.1 while循环
int main()
{
        // 1 +2+3+4+...+100
        int  i = 1;
        int sum = 0;
        //while(条件) 条件为真就执行,为假结束循环
        //while()后面不要加分号
        while (i <= 100)
        {
           sum = sum + i;
           i++;       
        }
        //while (1);//死循环
        printf("sum =%d\n",sum);
        system("pause");
        return 0;
}
3.2.2 do while循环
int main()
{
   // 1 +2+3+4+...+100
   int  i = 1;
   int sum = 0;
   //while()后面需要加分号
   do {
          sum += i;
          i++;
   } while (i<=100);
   printf("%d\n",sum);
   system("pause");
   return 0;
}
3.2.3 for循环
for(A    ;   B   ;   C)
{
    D;
}
A表达式只会执行一次,B是执行条件,C一条语句
执行顺序:   A-> B(条件)  ->{D} -> C   -> B(条件)  ->{D} -> C .... 
int main()
{
   int  i = 1;
   int sum = 0;
   //for()后面不能加分号
   for (  ;  i<=100 ;)//如果for循环不写条件,条件默认为真
   {
     sum += i;
     i++;
   }
   printf("sum=%d\n",sum);
   system("pause");
   return 0;
}
3.2.4 跳转语句break、continue、goto

break:跳出switch或者离break最近的循环

int main()
{
   for (int i = 0; i < 2; i++)
   {
     for (int j = 0; j < 3; j++)
     {
        if (j == 1)
           break;
        printf("i= %d  j=%d\n",i,j);
     }
          
   }
   system("pause");
   return 0;
}

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

goto:无条件跳转,不推荐使用

#include <stdio.h>

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

End:
	printf("bbbbbbbb\n");

	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值