C语言学习第二阶段-循环结构

一,运算符号

	1、最基础的加减乘除:+   -   *   /;加减乘除都只适用于同一种类型的计算,数字与数字进行运算,不能让数字与字符进行运算。
	2、赋值预算符: =
	在C语言中,=并不相当于等于,而是一个赋值运算符:
	 a = 2020;
	 并不是a 等于2020,而是将2020这个值赋予给a,赋值行为从右往左。
	 在C语言中,2020 =  a;这样赋值是没有意义的(无效的),在这种情况下,2020被称之为右值,只能是字面常量,不能给常量赋值。
	 所以在赋值的时候,一定是左边为变量,右边为常量。
	 3、等号运算符:==
	 在C语言中, == 两个连续的等号表示等于 ,比如 a  == 1; 表示a 等于 1,而不是将1 赋值给a。
	 但是如果在编写程序是将 a ==1,写成 a = 1,编译器也不会报错,在多行代码的情况下,等号与赋值运算符很难去区分,所以在写代码的时候一定要注意两者之间的区别。
	 4、自加与自减符:
	 自加:++   
	 a++ 与 ++a 有区别:
	 a++ 在a 执行完一次过后+1,
	 ++a在执行之前先+1,
	 自减:-- 道理与++相同。
int main()
{
	int a = 5;
    int b = 5;
    int c = 5;
    int d = 5;
    printf("a++的值是%d\n",a++);//a先执行一次所以a 等于5
    printf("b--的值是%d\n",b--);//b先执行一次所以b 等于5
    printf("++c的值是%d\n",++c);//c先执行一次自加  所以c等于6
    printf("--d的值是%d\n",--d);//d先执行一次自减  所以d等于4
	return 0;
}

在这里插入图片描述

5、取余运算符:%
只能用于整数, 5 % 2 等于 1; 3 % 3 等于0;

6、简位运算符
为了程序的简洁和美观,我们在程序中有时会用到一些简单的简位运算符来替代原来的运算符:
c += 20; 等于 c = c + 20;
c -= 20; 等于 c = c - 20;
c *= 20; 等于 c = c * 20;
c /= 20; 等于 c = c /20;
c *= 20; 等于 c = c * 20;
c %= 20; 等于 c = c % 20;

7、逗号运算符
这个有点坑,因为有时候他直接赋值是逗号右侧的值,但是有时候左侧的值又加入了运算。我现在就记着一句话,逗号运算符直接看最右边的值。
例如:

int main()
{
	int a = 1;
	int d = 1;
	b = (a++,a+5);
	c = (d+5,d++);
	printf("%d",b,c);
	
	return 0;	
}

在这里插入图片描述

b的值是a++执行运算过后的a+5;
c的值是没有运行d+5的,直接运行的d++;
这是我没有弄明白的地方希望有高人帮助我,私信或者评论区留言都可以,谢谢!

二、运算优先级

预算符(优先级从高到低)运算顺序
()从左往右
++ –从右往左
* /从左往右
+ -从左往右
> < >= <=从左往右
== !=从左往右
=从右往左

三、while 循环

1、while循环使用的方式;
让我们来编写一个程序,程序要求打印0-20之间的所有整数:

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

在这里插入图片描述

以上程序表明,当while满足条件语句里面的条件时候,while循环里面的内容就会被重复执行,直到while不满足条件语句里面的条件。如果最开始就不满足条件语句里面的条件,那么while循环就不会被执行。while循环中,只有{}花括号里面的内容才是循环的内容。
如果你写了一个死循环,那么就会一直执行这个语句,除非你强制退出。
比如:

#include<stdio.h>
int main()
{
	int a = 1;
	while(a < 3)
	{
	printf("这是一个死循环\n");
	}	
}

在这里插入图片描述

他会一直打印循环里面的内容,除非你强制退出。

四、do while循环:

do while循环与while循环类似,唯一的区别就是,while循环你要满足条件后才执行,do while循环则不管你满不满足,我先执行一次在看。
例如:

#include<stdo.h>
int main()
{
	int a = 3;
	int sum;
	do
	{
	printf("我先执行一次哟\n");
	sum = a + 1;
	a++;
	}
	while( a < 3)
	{
	printf("%d\n",a);
	}
	return 0;
}

在这里插入图片描述

在while的条件语句中,a<3已经不成立了,但是整个程序还是执行了一次,这就是do while循环与while循环的差别。
do while循环中,while条件语句后面要加一个分号,这也是一个易错点。

五、for 循环:

for循环与while循环的差距就在for循环的条件语句中有三个表达式,(初始值,循环条件
,循环测试值)
例如

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

在这里for循环执行4次,第一次a =1,满足a<5,执行循环,执行完过后a++;然后a=2
满足条件,再次循环,直到第四次循环完,a = 4,a++过后a = 5不满足条件,跳出循环。所以for循环就是将循环条件写在同一个表达式里面。

六、嵌套循环

嵌套循环就是在一个循环的里面再使用一次循环。
例如:

int main()
{
	int a;
	int b;
	for(a = 1;a<3;a++)
	{
	printf("我是大循环哟\n");
	for(b = 1;b<3;b++)
	{
		printf("我是小循环\n");
	}
	}
	return 0;
}

在这里插入图片描述

由编译结果显示,大循环执行了两次,小循环执行了四次。
可以这样来分析,程序由mian函数开始运行,到大循环时,满足条件,开始进入大循环,大循环里面是小循环,当第一次小循环结束时,程序不会跳出小循环,而是继续判断小循环是否满足,如果满足条件,则继续执行小循环,直到小循环不满足,跳出循环,这个时候大循环的第一次循环结束,大循环判断条件是否满足,满足条件开始执行第二次大循环,第二次大循环开始后又把小循环开始重新执行一遍。
所以嵌套循环是大循环每一次满足条件的小循环都要完整的执行一次,当然小循环也可以设置条件:

int main()
{
	int a;
	int b;
	int c = 6;
	for(a = 1;a <= 6;a++)
	{
		for(b = 0;b<a;b++);
		{
			c--;
			printf("%d",c);
            printf("\n");
		}
	}
	return 0;
}

在这里插入图片描述

大循环用来控制行数,小循环用来控制每行打印的数字,编写程序时注意看小循环与大循环之间的关系,以及小循环的条件。

七、if else 循环

单体的if else语句很简单,如果if里面的条件为真那么就打印if里面的语句,如果if里面的条件不为真就打印else里面的语句:
例如:

int main()
{
	int a ;
	printf("请输入a的值:\n");
	scanf("%d",&a);
	if(a <100)//如果满足条件
	{
		printf("a比100小\n");
	}else//不满足条件
	{
		printf("a比100大\n");
	}
	return 0;
}

在这里插入图片描述

在这里插入图片描述

如果只有两种结果我们就可以使用if else 循环,条件我们设置一个,满足条件就打印if里面的内容,不满足我们就打印else里面的内容。
当然我们也可以用多个if else 条件语句来判断:
例如:

int main()
{
   int a;//你的存款 单位:万
   int b;//你的房产 单位:套
   printf("请问你的存款有多少万:\n");
   scanf("%d",&a);
   printf("请问你有几套房:\n");
   scanf("%d",&b);
   if(a < 50)//你的存款都没50w
	{
		printf("我们不适合\n");
	}else{
        if(b<3)
        {
			printf("我可以做你女朋友!\n");
		}else{
			printf("我们结婚吧!\n");	
		}
    }
	return 0;
}

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

这就是一个简单的多重嵌套if else 循环,当然这里有个bug,如果我只有20万的存款,但是我有10套房子,岂不是也错过了一个机会,你只需要在第一个if里面加一个条件b的if else循环就可以了呀!
但是多重嵌套if else 循环需要注意的是{}花括号,如果在if和else之间没有花括号那么else就会默认与最近的if组成一个循环,这样可能就不满足我们所需要得到循环条件,所以为了程序的准确,我建议每一个if else循环都{}花括号给加上。

八、switch case循环

当然除了一个一个循环的判断之外,我们也可以选择对应的循环,我想让他执行那个,他就执行那个;
例如:

int main()
{
	int a;
    printf("请输入你的选择:1? 2? 3?\n");
    
    while ((a = getchar()) != '0')
    { 
    switch (a)
    {
		case '1':
			printf("你的选择是1\n");
            break;
        case '2':
			printf("你的选择是2\n");
            break;
        case '3':
			printf("你的选择是3\n");
			break;
		default:
			break;
    }
    }
	return 0;
}

在这里插入图片描述

这个就是选择switch循环,这里需要注意键盘的输入都是默认字符输入,所以我们while循环 != ‘0’,这里加了’ '单引号表示字符,包括case语句也是,同时case后面的符号是冒号:不是分好,这里注意,每一个case循环后面都应该有一个break表示选择这个循环过后就会跳出循环,如果不加break,那么就是继续往下走,走入下一个case,所以每一个case后面都要加一个break来跳出循环。

关于循环的两个关键字:break continue
1、break 关键字
(1)、 当它出现在switch语句中,表示终止当前case并跳出switch结构。
(2)、当它出现在一层循环语句中,表示跳出当前的循环语句。
(3)、当它出现在嵌套循环语句中,表示跳出最近的循环语句。
2、continue 关键字
(1)、 在循环语句中,表示立即结束本次循环并进入下一次循环。

关于循环的学习内容就写这么多了,自己白天上班,只有晚上学习C,学习较慢,如果有错误也请大家帮我指出来!如果大家有什么问题可以留言,可以私信,我能够解决的就帮你,不能够解决的我帮你想办法。
谢谢大家的阅读!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永不秃头的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值