嵌入式学习day06:循环结构、数组(构造类型)

一、循环结构

构成循环的要素:
1.循环体:这是循环中重复执行的核心代码段,包含了要完成的具体任务或操作。
2.结束条件:用于决定循环何时停止执行。当结束条件满足时,循环退出。 
3.使循环趋于结束的操作(或语句):例如在 for 循环中的循环变量的递增或递减操作,它会逐步使得结束条件得以满足。
4.循环的初始条件:为循环的开始做好准备,例如设置循环变量的初始值等。   

1. goto 语句
(1)goto 语句为无条件转向语句,它的一般形式为
goto  语句标号;
 注意:语句标号用标识符表示,它的定名规则与变量名相同,即由字母、数字和下划线组成,其第一个字符必须为字母或下划线。不能用整数来作标号。
(2)用途:
        ①与   if 语句一起构成循环结构。
        ②从循环体中跳转到循环体外,但在C语言中可以用 break 语句和 continue 语句 跳出本层循环和结束本次循环。
        ③ 只是需要 从多层循环的内层循环跳到外层循环外时才用到 goto 语句。
例:对1~100求和
#include<stdio.h>
  
int main()
{
    int i=1;
    int sum =0;

 loop:
    sum = sum + i;
    ++i;
    if(i>100)
        goto exit;
    goto loop;
 exit:
    printf("sum = %d\n",sum);
    return 0;
 }
                             
2.while 语句

(1)语法形式:

while (表达式)

{

        语句

}

(2)语义:

  判断表达式 ,如果表达式为真,则执行语句,语句执行完之后,继续进行表达式的判断,重复上面的操作,直到表达式为假;如果表达式为假,while 结束,程序继续往下。

注意:while()后面没有分号,如果写了分号,则这个分号就成了空语句。

3. do-while 语句

(1)语法形式:

do

        语句;

}while (表达式);

(2)语义:

   先执行语句, 然后判断表达式,如果表达式为真,则继续执行语句,然后判断,重复这个过程,直到表达式为假,do-while 语句结束;如果表达式为假,do-while 结束,程序继续往下。

注意:while()后面一定要有分号。

例:对1~100求和

#include <stdio.h>

int main(void)
{
	int i = 0;
    int sum = 0;
    do
	{
		sum = sum + i;
		i++;
	}while (i <= 10);
 
	printf("sum = %d\n",sum);

	return 0;
}

对比 while 和 do-while :

 1. do-while 循环至少会被执行一次 
 2. 逻辑顺序不同:
    while     --- 先判断 后执行 
    do-while  - 先执行 后判断 

4. for 语句

(1)语法形式:

for (表达式1;表达式2;表达式3)
{
   循环体语句;
}

(2)语义:

    ①求解表达式1,②判断表达式2,③如果表达式为真,则执行循环体语句 ,执行完之后,④求解表达式3,求解完之后,继续判断表达式2 ;重复②到④的步骤,直到②判断为假,for循环结束。

for (初始条件 ;循环条件(循环结束条件);使循环趋于结束语句) 
//for (循环变量赋初值;循环条件;循环变量增值)
{
   循环体语句;
}

注意:for()后面不要写分号 。

例:使用for循环,找水仙花数。

水仙花数是指一个三位数,其每个数位上的数字的立方和等于该数本身。

#include <stdio.h>

int main(void)
{
	int i = 0;
	int a,b,c;

	for (i = 100;i <= 999; ++i)
	{
		a = i/100;
		b = i/10%10;
		c = i%10;

		if (a*a*a+b*b*b+c*c*c == i)
		{
			printf("%d\n",i);
		}
	}

	return 0;
}

注意:

1.for:多用于有一定范围的
   while 和 do-while:多用于只有某个结束条件的 


 2.for 循环的三个表达式都可以省略,但是对应的循环要素不能省,表达式2如果省略,则表示循环条件永远为真。

5. break 语句

①break 可以用在 switch,while , do-while ,for 中。
②作用:用在循环中,表示跳出本层循环。

6. continue 语句

①只用在循环while , do-while ,for中。
②作用:结束本次循环,继续下一次循环。

例: 从键盘输入一个数,判断是不是素数

#include <stdio.h>

int main(void)
{
	int n = 0;
	scanf("%d",&n);

	int i = 0;
	for (i = 2; i < n; ++i)
	{
		if (n%i == 0)
		{
			printf("no\n");
		} 
	}

	if (i < n)
	{
			printf("%d is not a prime num!\n",n);
	}else
	{
			printf("%d is  a prime num!\n",n);
	}
	return 0;
}

if(<n):如果找到了除自身和1以外的别的因数,它就会结束循环,i 就不会累加到 n,所以当 i<n 时就找到了合数。

二、数组(构造类型)

1.概念:

   数组是一组相同数据类型的元素按一定顺序排列的集合。数组也是一种数据类型 。

2.应用场景:

  ①存储一组相同类型的数据;②实现简单的查找和排序;③作为函数的参数传递一组数据;④矩阵和表格的表示;⑤缓存数据;⑥记录历史数据⑦实现队列和栈的数据结构。

3.语法形式:

类型说明符  数组名【常量表达式】

(1)类型说明符  ---数据类型:整型 int/short/long/long long 
                                                       浮点型 float / double /long double 
                                                        字符型 char

          作用: 用来说明该数组中元素的类型。

(2)数组名    --- 名字 (标识符)(起名字规则与之前变量名起名规则一致)

           作用:用来代表这个数组 

(3)[常量表达式]  --- [] //这个就是数组类型 
                   常量表达式  //数组长度 --代表数组中元素的个数

注意:  1. c99标准之后,数组长度可以是变量,是可变长数组,但是不能初始化 。
             2. 数组长度,可以省略,但是必须要有初始化。因为编译器要根据初始化的值算出实际长度。 int len = sizeof(a)/sizeof(int); //计算实际长度   

 4.数组给值:

(1)初始化:   int a[10] = {}; //{} 初始化器 
①全部初始化: int a[10] = {1,2,3,4,5,6,7,8,9,10};
②部分初始化:int a[10] = {1,2,3,4,5};   //未初始化的部分会被初始化为0
③不初始化:    int a[10];  --- 数组中是随机值(垃圾值) 

(2)循环赋值

(3)输入的方式赋值

5.数组元素的引用

(1)语法:
        数组名[下标]; //[] 此时表示的是一种运算 --- 数组下标运算 
 (2)下标含义:
        下标表示的是相对于数组名偏移了几个元素 。
  (3)数组越界 :
       //编译器不会检查,程序员自己小心 

注意:
例: int a[10];
①a 所代表的值 数组所占空间的首地址。
②a 所代表的数据类型 a 代表整个数组类型。

③a所代表的类型是int[10] ,这就是所谓的 数组类型
④判断标识符所代表的数据类型 ---去掉标识符,剩下就是标识符对应的数据类型。

6.数组特点:

 连续性 --- 数组空间是一片连续内存空间 
 有序性 --- 数组的元素挨个存放 
 单一性 --- 数组元素类型是同一类型 


           

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值